• 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

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

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

    微信公众号:AutoML机器学习
    MARSGGBO原创
    如有意合作或学术讨论欢迎私戳联系~
    邮箱:marsggbo@foxmail.com

    2019-11-23 10:52:25

  • 相关阅读:
    rpm包安装及卸载
    linux常用命令100
    Haproxy负载均衡与高可用
    nginx+keepalived实现高可用案例
    LVS+keepalived
    NFS 共享存储与LVS
    Tomcat Session简介及绑定
    LVS DR 模式
    LVS搭建
    LVS简介与集群及类型介绍
  • 原文地址:https://www.cnblogs.com/marsggbo/p/11916859.html
Copyright © 2020-2023  润新知