detectron2安装出现Kernel not compiled with GPU support 报错信息

在安装使用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

MARSGGBO?原创

如有意合作或学术讨论欢迎私戳联系~
微信:marsggbo
邮箱:[email protected]

2019-11-23 10:52:25


原文地址:https://www.cnblogs.com/marsggbo/p/11916859.html

时间: 2024-10-09 23:18:19

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

yum安装出现Error: database disk image is malformed报错

使用yum安装gcc命令时,电脑意外重启,恢复虚拟机后再次使用yum安装gcc出现报错信息 Error: database disk image is malformed 报错原因是之前意外结束安装进程之前已经产生了缓存 使用yum重新安装的时候首先要清除缓存,使用yum clean all命令 yum clean all 清除yum缓存,使用yum安装软件包时yum把下载的软件包和header存储在cache中,进程意外中断后之前下载的内容不会自动删除,我们需要先清空缓存后再重新下载.当然,如

单机多GPU训练报错

问题一: 在keras中使用多个GPU训练模型时,出现错误 AttributeError: '_TfDeviceCaptureOp' object has no attribute '_set_device_from_string' , 根据错误提示是'_TfDeviceCaptureOp'对象没有属性'_set_device_from_string'. 解决措施:经过思考,我觉得我的tensorflow版本可能有问题,所以将tensorflow从1.14.0版本降到1.12.0版本,此问题得到

安装VMware16兼容Hyper-v+WSL2+Docker+解决0x80370102报错

VMware 20H1(预览版)已经支持运行同时兼容Windows10的Hyper-v虚拟化.这里可以同时运行 VMware Workstation Pro Tech Preview 20H1 (16的预览版)+WSL2+Hyper-v虚拟机+Docker Desktop+VirtualBox6.同时呢,WSL2开启后也可以像普通Linux中安装和使用docker非常方便. 原文在我的开源中国:https://my.oschina.net/finchxu/blog/3195991 VMware

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

yum安装报错:Cannot retrieve metalink for repository: epel. Please verify its path and try again 解决方法: 一句话:把/etc/yum.repos.d/epel.repo,文件baseurl的注释放开,mirrorlist注释掉. 具体如下: 打开/etc/yum.repos.d/epel.repo,将 [epel] name=Extra Packages for Enterprise Linux 6 - $

TinyOS学习 - Ubuntu 12.04LTS安装TinyOS 2.1.1后make telosb报错之解决方案

我在Ubuntu 12.04LTS的64位版本安装过一次TinyOS,但是最后编译是成功的,但是所有的java工具都不能用.这次我重装了个32位的Ubuntu系统.这个是肯定可以安装的. 但是在我按照教程全部安装完之后发现出现了错误. 在make telosb的时候 > mkdir -p build/telosb > compiling BlinkAppC to a telosb binary > ncc -o build/telosb/main.exe -Os -O -mdisable

MYSQL安装过程及报错信息

MYSQL安装步骤: #下载,解压源码包,移动到指定目录: wget http://syslab.comsenz.com/downloads/linux/mysql-5.1.40-linux-x86_64-icc-glibc23.tar.gz tar zxvf mysql-5.1.40-linux-x86_64-icc-glibc23.tar.gz mv mysql-5.1.40-linux-x86_64-icc-glibc23.tar.gz /usr/local/mysql #新建数据库存储路

同时安装lr11和UFT12时,UFT启动报错

这段时间动了学习性能测试念头,然后就到网上找了些资料学习,并且把lr11的安装包也下在好了.什么?这都2015年了,还安装lr11?— . —^,因为有破解版...学习嘛你懂得. 安装lr的过程很顺利,一路到底.但是录制脚本总是弹不出ie浏览器界面来...这是另外一个问题,就不在此赘述了.好,说说UFT的问题,打开UFT时,就会弹一个错误提示 点击查看错误详情,提示i/o调用失败啥的...前面一大堆术语看不懂...就看懂了最后一句找不到启动文件路径.找到问题就好解决了,问度娘. 1)打开UFT的

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

在Ubuntu下安装Sublim Text3后发现无法输入中文,按照此链接的方法解决后.然后用下列代码配置C++的编译系统: { "cmd":["g++","${file}","-o","${file_path}/${file_base_name}"], "file_regex":"^(..[^:]*):([0-9]+):?([0-9]+)?:?(.*)$", &qu

PHP安装,报错信息和解决过程

PHP安装: wget http://cn2.php.net/distributions/php-5.3.28.tar.gz tar zxf php-5.3.28.tar.gz cd php-5.3.28 ./configure   --prefix=/usr/local/php   --with-apxs2=/usr/local/apache2/bin/apxs   --with- config-file-path=/usr/local/php/etc   --with-mysql=/usr/