首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CUDA内核失败:设备上没有可供执行的内核映像,在Google Compute VM中运行PyTorch模型时出错

CUDA内核失败:设备上没有可供执行的内核映像,在Google Compute VM中运行PyTorch模型时出错
EN

Stack Overflow用户
提问于 2020-03-24 18:43:21
回答 1查看 10.7K关注 0票数 2

我有一个PyTorch模型的docker镜像,当在运行在debian/特斯拉P4图形处理器/谷歌深度学习镜像上的谷歌计算引擎虚拟机中运行时,它会返回这个错误:

代码语言:javascript
复制
CUDA kernel failed : no kernel image is available for execution on the device

这发生在我的模型被调用的那一行。PyTorch模型包括自定义的c++扩展,我正在使用这个模型的https://github.com/daveredrum/Pointnet2.ScanNet

我的镜像在运行时安装这些

该映像在我的本地系统上运行良好。VM和我的系统都有以下版本:

Cuda编译工具10.1,V10.1.243

torch 1.4.0

torchvision 0.5.0

据我所知,主要的区别是GPU

本地:

代码语言:javascript
复制
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 435.21       Driver Version: 435.21       CUDA Version: 10.1     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 960M    Off  | 00000000:01:00.0 Off |                  N/A |
| N/A   36C    P8    N/A /  N/A |    361MiB /  2004MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

虚拟机:

代码语言:javascript
复制
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 418.87.01    Driver Version: 418.87.01    CUDA Version: 10.1     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla P4            Off  | 00000000:00:04.0 Off |                    0 |
| N/A   42C    P0    23W /  75W |      0MiB /  7611MiB |      3%      Default |

如果我通过ssh进入VM,torch.cuda.is_available()将返回true

因此,我怀疑这一定与扩展的编译有关

这是我的docker文件的相关部分:

代码语言:javascript
复制
ENV CUDA_HOME "/usr/local/cuda-10.1"
ENV PATH /usr/local/nvidia/bin:/usr/local/cuda-10.1/bin:${PATH}
ENV NVIDIA_VISIBLE_DEVICES all
ENV NVIDIA_DRIVER_CAPABILITIES compute,utility
ENV NVIDIA_REQUIRE_CUDA "cuda>=10.1 brand=tesla,driver>=384,driver<385 brand=tesla,driver>=396,driver<397 brand=tesla,driver>=410,driver<411 brand=tesla,driver>=418,driver<419"
ENV FORCE_CUDA=1

# CUDA 10.1-specific steps
RUN conda install -c open3d-admin open3d
RUN conda install -y -c pytorch \
    cudatoolkit=10.1 \
    "pytorch=1.4.0=py3.6_cuda10.1.243_cudnn7.6.3_0" \
    "torchvision=0.5.0=py36_cu101" \
 && conda clean -ya
RUN pip install -r requirements.txt
RUN pip install flask
RUN pip install plyfile
RUN pip install scipy


# Install OpenCV3 Python bindings
RUN sudo apt-get update && sudo apt-get install -y --no-install-recommends \
    libgtk2.0-0 \
    libcanberra-gtk-module \
    libgl1-mesa-glx \
 && sudo rm -rf /var/lib/apt/lists/*

RUN dir
RUN cd pointnet2 && python setup.py install
RUN cd ..

我已经在VM中的ssh中重新运行了这一行:

代码语言:javascript
复制
TORCH_CUDA_ARCH_LIST="6.0 6.1 7.0" python setup.py install

我认为它的安装目标是特斯拉P4的计算能力?

是否有其他设置或故障排除步骤可供我尝试?

直到几天前我才知道关于docker/VMs/pytorch扩展的任何东西,所以有点摸不着头脑。这也是我的第一篇stackoverflow帖子,如果我没有遵守一些礼节,很抱歉,请随时指出。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-03 17:55:24

最后,我手动删除了包含setup.py的文件夹中除"src“之外的所有文件夹,从而解决了这个问题

然后重建docker镜像。

然后,在构建映像时,我运行了TORCH_CUDA_ARCH_LIST="6.1" python setup.py install,以便为虚拟机上的GPU安装针对正确计算能力的cuda扩展

它成功了!

我想只运行setup.py而不删除之前安装的文件夹并不能完全覆盖扩展

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60829433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档