在安装使用 detectron2 的时候碰到**Kernel not compiled with GPU support **问题,前后拖了好久都没解决,现总结一下以备以后查阅。

不想看心路历程的可以直接跳到最后一小节,哈哈哈。

environment

因为我使用的是实验室的服务器,所以很多东西没法改,我的 cuda 环境如下:

  • ubuntu
  • nvcc默认版本是 9.2
  • nvidia-smi版本又是 10.0 的

我之前一直没搞清楚这nvccnvidia-smi版本为什么可以不一样,想了解原因的可以看一下我之前的文章显卡,显卡驱动,nvcc, cuda driver,cudatoolkit,cudnn 到底是什么?

reproduce

我一般都用 Anaconda 来安装 pytorch,第一次安装的时候使用的如下命令安装的:

conda create -n myenv python=3.7
conda activate myenv
conda install pytorch torchvision cudatoolkit=10.1 -c pytorch

按理说这个命令会给myenv环境安装 cuda 编译器和驱动等,但是在运行代码的时候还是会出现标题中的报错信息。我猜可能是因为 detectron2 在 build 的时候使用的是/usr/local路径下的 cuda compiler(即 nvcc),而不是我的虚拟幻境下的 compiler。所以我重新安装了 cuda-9.2 版本的 pytorch,

conda install pytorch torchvision cudatoolkit=9.2 -c pytorch

但是运行的时候还是出现同样的错误,这更加说明 detectron2 的编译使用的不是虚拟环境路径下的编译器,所以我在想是不是我没有正确设置系统路径下的 CUDA,于是我用官方提供的检验代码查看 CUDA 路径:

python -c 'import torch; from torch.utils.cpp_extension import CUDA_HOME; print(torch.cuda.is_available(), CUDA_HOME)'

输出的结果是

true /usr/local

可以看到CUDA_HOME对应的输出结果有问题,照理来说输出结果应该是/usr/local/cuda或者/usr/local/cuda-9.2之类的,于是我又查看了~/.bashrc文件,找到与 CUDA 有关的代码部分,发现我并没有设置CUDA_HOME这个环境变量,于是我做了如下修改:

# vim ~/.bashrc
export CUDA_HOME=/usr/local/cuda
export PATH=$PATH:/usr/local/cuda/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/lib
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/cuda/lib64

之后 souce 一下

source ~/.bashrc

再运行python -c 'import torch; from torch.utils.cpp_extension import CUDA_HOME; print(torch.cuda.is_available(), CUDA_HOME)'输出的结果变为true /usr/local/cuda

此时Kernel not compiled with GPU support的问题就解决了,代码正常运行了。

总结

步骤总结

  1. 安装相关库
conda create -n myenv python=3.7
conda activate myenv
conda install pytorch torchvision cudatoolkit=9.2 -c pytorch
pip install opencv-python
pip install 'git+https://github.com/facebookresearch/fvcore'
pip install cython; pip install 'git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI'
  1. 编译 detectron2
python setup.py build develop

可能出现的问题和解决办法

出现标题中的错误的原因主要是因为你的 cuda 版本或者路径除了问题,你可以按照如下几个步骤排查可能是那个地方出了问题:

  1. 运行nvcc --version查看你的 cuda 编译器版本,那么你的 pytorch-gpu 也建议安装对应版本。当然如果你nvcc都没安装。。。那你就先找教程安装。
  2. 如果安装的 pytorch 版本和nvcc版本一致,你可以看一下你的 CUDA 路径是否在~/.bashrc中设置正确,参考的配置路径如下:
# vim ~/.bashrc
export CUDA_HOME=/usr/local/cuda
export PATH=$PATH:/usr/local/cuda/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/lib
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/cuda/lib64

设置好后source ~/.bashrc,然后删除detectron2/build文件夹(如果你之前已经编译过一遍了),然后重新编译dete2tron2

感谢xiedian一句话总结了上面的问题根本原因:

上述问题其实是因为 conda 安装的 cudatools 只是一个子集,里面是没有 nvcc 的,要用 nvcc 就必须用系统装的

微信公众号:AutoML机器学习

MARSGGBO♥原创

如有意合作或学术讨论欢迎私戳联系~
邮箱:marsggbo@foxmail.com


2019-11-23 10:52:25

detectron2安装出现Kernel not compiled with GPU support 报错信息的更多相关文章

  1. PXE+kickstart网络安装CentOS7.4系统及过程中各种报错

    环境:关闭防火墙.selinux 注意:虚拟机进行网络安装的话,7.3以后的系统是需要2G以上的内存 [root@kickstart ~]# cat /etc/redhat-release CentO ...

  2. Linux下安装redis报错信息

    redis在Linux安装报错 标签: redislinuxcentos 2017-02-24 13:46 384人阅读 评论(0) 收藏 举报  分类: Linux安装工具(2)  版权声明:本文为 ...

  3. epel安装第三方扩展源后,运行yum报错的解决方案

    yum安装报错:Cannot retrieve metalink for repository: epel. Please verify its path and try again 解决方法: 一句 ...

  4. 解决Ubuntu(Linux)平台下Sublime Text 3 安装中文输入支持库后 开启gnome-terminal报错的问题

    在Ubuntu下安装Sublim Text3后发现无法输入中文,按照此链接的方法解决后.然后用下列代码配置C++的编译系统: { "cmd":["g++",&q ...

  5. 安装HDP时的报错信息

    1,安装ambari时报错:Bootstrap process timed out. It will be destroyed. 报错原因:/etc/sudoers文件中未设置免密权限 解决办法:ha ...

  6. 安装php WampServer之后,运行的时候报错“phpMyAdmin - 错误 缺少 mysqli 扩展。请检查 PHP 配置。”

    今天在安装了WampServer2.1a-x32之后,点击WampServer的图标启动WampServer,在电脑右下角就可以看到WampServer启动之后的图标,然后点击“Start All S ...

  7. python安装matplotlib:python -m pip install matplotlib报错

    matplotlib是python中强大的画图模块. 首先确保已经安装python,然后用pip来安装matplotlib模块. 进入到cmd窗口下,建议执行python -m pip install ...

  8. 安装监控MongoDB的Python安装包时候报错:HTTP Error 403: SSL is required

    安装pymongo-2.3.tar.gz,执行命令python setup.py install报错: HTTP Error 403: SSL is required 分析原因:安装需要下载这个dis ...

  9. 14、CentOS7安装过程中,磁盘大于2T的报错处理

    问题描述 服务器磁盘单盘空间大于2TB,在安装CentOS7时出现下图报错: Boot failure.Reboot and Select proper Boot device... 问题原因: 安装 ...

随机推荐

  1. Asp.Net Core 中的环境变量

    Asp.Net Core 中的环境变量 软件开发环境在大多数软件开发组织中,我们通常具有以下开发环境. 开发环境--Development 演示(模拟.临时)环境--Staging 生产环境-- Pr ...

  2. [LeetCode] 917. Reverse Only Letters 只翻转字母

    Given a string S, return the "reversed" string where all characters that are not a letter  ...

  3. [LeetCode] 737. Sentence Similarity II 句子相似度之二

    Given two sentences words1, words2 (each represented as an array of strings), and a list of similar ...

  4. Spring Boot 知识笔记(集成zookeeper)

    一.本机搭建zookeeper伪集群 1.下载安装包,复制三份 2.每个安装包目录下面新建一个data文件夹,用于存放数据目录 3.安装包的conf目录下,修改zoo.cfg配置文件 # The nu ...

  5. 【沙龙报名中】与微信&云开发官方团队零距离互动,揭秘爆款微信小游戏背后的技术!

    有人说 微信小程序游戏的百花齐放 活像十几年前的4399小游戏称霸互联网的景象 " 歪,斗地主吗,三缺二, 不用下app,小程序就能玩,我保证不抢地主让你抢!" ...... &q ...

  6. C# 方法递归

    一.简介 方法递归就是自己调用自己. 未完结

  7. pgsql 的函数

    因为pgsql中没有存储过程和包,所以类似功能通过函数来实现 PostgreSQL的存储过程简单入门 http://blog.csdn.net/rachel_luo/article/details/8 ...

  8. 使用Linq判断DataTable数据是否重复

    我们一般系统在导入数据的时候,一般都是通过NPOI将excel数据转换成DataTable,然后将DataTable导入到数据库.在数据导入的过程中,其实很重要的一部就是检查DataTable中的数据 ...

  9. 微软 Azure DevOps Server 2019 Update 1 (TFS 2019.1)

    1.概述 微软在2019年5月发布Azure DevOps Server 2019后不到2个月的时间里,就快速准备好了第一个升级包(2019 Update 1),并计划在几周后发布正式版本.也许你还没 ...

  10. jq数字翻页效果,随机数字显示,实现上下翻动效果

    最近在做一个项目,需要实时展示一串数字,要有类似于日历翻页的效果,在网上找寻了一番,发现dataStatistics这个插件http://www.jq22.com/jquery-info8141能实现 ...