Как перейти с 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