CUDA 内核失败:没有内核映像可用于在设备上执行,运行 PyTorch 模型在 Google 计算 VM 中时出错
CUDA kernel failed : no kernel image is available for execution on the device, Error when running PyTorch model inside Google Compute VM
我有一个 PyTorch 模型的 docker 图像,当 运行 在 google 计算引擎 VM 运行 上宁 运行 时 returns 这个错误=54=] P4 GPU/google 深度学习图像:
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
手电筒 1.4.0
火炬视觉 0.5.0
据我所知,主要区别在于 GPU
本地:
+-----------------------------------------------------------------------------+
| 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 |
+-------------------------------+----------------------+----------------------+
虚拟机:
+-----------------------------------------------------------------------------+
| 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 进入虚拟机 torch.cuda.is_available()
returns true
所以我怀疑一定是和扩展的编译有关
这是我的 docker 文件的相关部分:
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 重新运行这一行:
TORCH_CUDA_ARCH_LIST="6.0 6.1 7.0" python setup.py install
我认为安装的目标是 Tesla P4 计算能力?
我可以尝试其他设置或故障排除步骤吗?
几天前我对 docker/VMs/pytorch 扩展一无所知,所以有点摸不着头脑。这也是我的第一个 Whosebug post,如果我没有遵守一些礼仪,请随时指出。
我最终通过手动删除包含 setup.py
的文件夹中除 "src" 之外的所有文件夹解决了这个问题
然后重建 docker 图像
然后在构建映像时我 运行 TORCH_CUDA_ARCH_LIST="6.1" python setup.py install
,安装 cuda 扩展,目标是 VM 上 GPU 的正确计算能力
成功了!
我想 运行 setup.py 不删除以前安装的文件夹并不能完全覆盖扩展
我有一个 PyTorch 模型的 docker 图像,当 运行 在 google 计算引擎 VM 运行 上宁 运行 时 returns 这个错误=54=] P4 GPU/google 深度学习图像:
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
手电筒 1.4.0
火炬视觉 0.5.0
据我所知,主要区别在于 GPU
本地:
+-----------------------------------------------------------------------------+
| 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 |
+-------------------------------+----------------------+----------------------+
虚拟机:
+-----------------------------------------------------------------------------+
| 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 进入虚拟机 torch.cuda.is_available()
returns true
所以我怀疑一定是和扩展的编译有关
这是我的 docker 文件的相关部分:
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 重新运行这一行:
TORCH_CUDA_ARCH_LIST="6.0 6.1 7.0" python setup.py install
我认为安装的目标是 Tesla P4 计算能力?
我可以尝试其他设置或故障排除步骤吗?
几天前我对 docker/VMs/pytorch 扩展一无所知,所以有点摸不着头脑。这也是我的第一个 Whosebug post,如果我没有遵守一些礼仪,请随时指出。
我最终通过手动删除包含 setup.py
的文件夹中除 "src" 之外的所有文件夹解决了这个问题然后重建 docker 图像
然后在构建映像时我 运行 TORCH_CUDA_ARCH_LIST="6.1" python setup.py install
,安装 cuda 扩展,目标是 VM 上 GPU 的正确计算能力
成功了!
我想 运行 setup.py 不删除以前安装的文件夹并不能完全覆盖扩展