Как перейти с CUDA 11.4 на 10.2 и добавить sm_35 - ошибка CUDA: на устройстве нет образа ядра, доступного для выполнения

Я пытаюсь запустить код на Pytorch, но получаю сообщение об ошибке:

      RuntimeError: CUDA error: no kernel image is available for execution on the device

Я сузил проблему до несоответствия версий CUDA. Моя машина имеет 2 графических процессора: GeForce GTX 650 (вычислительная мощность 3,0) и Tesla K40c (вычислительная мощность 3,5). Я проверил вычислительные возможности здесь: https://developer.nvidia.com/cuda-gpus . Мой nvidia-smi команда дает следующее:

Вывод nvidia- smi (версия драйвера: 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 я также установил версию PyTorch 1.8.0.

Однако в 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ошибка. Я также пробовал все вышеперечисленное для версии 10.2 CUDA, результат тот же.

1 ответ

Я решил свою проблему. Как указано в комментариях, мне нужна версия PyTorch, поддерживающая sm_35вычислительные возможности. Это имело мало общего с текущей версией 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
Другие вопросы по тегам