【发布时间】:2021-11-20 15:51:46
【问题描述】:
我正在尝试在 Pytorch 上运行一段代码,但出现错误:
RuntimeError: CUDA error: no kernel image is available for execution on the device
我已将问题范围缩小为 CUDA 版本不匹配。我的机器有 2 个 GPU:
GeForce GTX 650(计算能力 3.0)和 Tesla K40c(计算能力 3.5)。我在这里检查了计算能力:https://developer.nvidia.com/cuda-gpus。
我的nvidia-smi 命令给出以下内容:
nvidia-smi output(驱动版本:470.57.02 & CUDA 版本:11.4)
虽然我的nvcc -V 命令给出以下内容:
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Sun_Jul_28_19:07:16_PDT_2019
Cuda compilation tools, release 10.1, V10.1.243
存在 10.1 版本是因为我尝试安装该 CUDA 版本,特别是按照其他地方的说明(例如:https://medium.com/@anarmammadli/how-to-install-cuda-10-2-cudnn-7-6-5-and-samples-on-ubuntu-18-04-2493124478ca)
另外,我已经安装了cudatoolkit 和conda,等等我的conda list 我有以下条目:
...
cudatoolkit 10.1.243 h6bb024c_0
...
按照https://github.com/moi90/pytorch_compute_capabilities/blob/main/table.md我也安装了1.8.0 PyTorch版本。
但是,在 Python 3.7.11 中:
Python 3.7.11 (default, Jul 27 2021, 14:32:16)
[GCC 7.5.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> torch.__version__
'1.8.1'
>>> torch.version.cuda
'10.1'
>>> torch.cuda.get_arch_list()
['sm_37', 'sm_50', 'sm_60', 'sm_61', 'sm_70', 'sm_75', 'compute_37']
>>> torch.cuda.is_available()
True
我没有可用的sm_35,我需要使用 Tesla K40。我相信这就是我不断收到CUDA error: no kernel image is available for execution on the device 错误的原因。对于 CUDA 10.2 版,我也尝试了上述所有方法,结果相同。
【问题讨论】:
-
您需要找到并安装a version of PyTorch that is built with support for cc3.5。你已经安装的驱动没问题。
-
看来我需要Pytorch 1.5 之前的版本?
-
给定 Pytorch 版本的二进制支持不是 CUDA 工具包或 Pytorch 的功能(在支持范围内),而是 Pytorch 开发人员选择分发的二进制支持。更喜欢牺牲较旧的硬件支持以换取较小的二进制包大小。您可能可以自己使用 CUDA 10.x 工具包构建更现代的 Pytorch 版本。如果不是,您将不得不接受他们给予的东西,那将是非常古老的