pytorch - 如何从 CUDA 11.4 降级到 10.2 并添加 sm_35 - CUDA 错误 : no kernel image is available for execution on the device

标签 pytorch gpu

我尝试在 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 )

另外,我已经使用 conda 安装了 cudatoolkit,等等,在我的 conda 列表 中,我有以下条目:

...
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 错误:没有可用于在设备上执行的内核镜像 错误的原因。我也针对 CUDA 10.2 版本尝试了以上所有方法,结果相同。

最佳答案

我已经解决了我的问题。正如评论中所述,我需要一个支持 sm_35 计算功能的 PyTorch 版本。与当前的 CUDA 版本关系不大。最后,我找到了这些二进制文件:

https://blog.nelsonliu.me/2020/10/13/newer-pytorch-binaries-for-older-gpus/

我最终通过创建一个新环境并运行解决了这个问题:

pip install torch==1.3.1+cu92 -f https://nelsonliu.me/files/pytorch/whl/torch_stable.html

关于pytorch - 如何从 CUDA 11.4 降级到 10.2 并添加 sm_35 - CUDA 错误 : no kernel image is available for execution on the device,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69364529/

相关文章:

python - 如何以随机度数旋转 Torch 张量

pytorch - PyTorch 与 sagemaker.pytorch 中 PyTorchModel 的区别

python - 如何根据模运算在 PyTorch 张量的末尾添加零?

python - CUDA : RuntimeError: CUDA out of memory - BERT sagemaker

c++ - 是否有可能让持久的 cuda 内核运行并与 cpu 异步通信?

machine-learning - 你如何实现可变长度的递归神经网络?

python - 如何使用 plt.imshow 和 torchvision.utils.make_grid 在 PyTorch 中生成和显示图像网格?

cuda - 什么在 GPU 上更快?将 bool 类型转换为 int 或使用分支语句?

Cuda,尝试为设备中的整数分配内存时出错

macos - 如何检测 macOS 上的外部 GPU (eGPU) 连接和断开连接?