Подтвердить что ты не робот

Ошибка API CUDA Runtime API 38: не обнаружено устройство с поддержкой CUDA

Ситуация

У меня есть сервер с двумя gpu (Ubuntu 12.04), где я переключил Tesla C1060 на GTX 670. Чем я установил CUDA 5.0 по сравнению с 4.2. Впоследствии я скомпилировал все примеры execpt для simpleMPI без ошибок. Но когда я запускаю ./devicequery, я получаю следующее сообщение об ошибке:

[email protected]:~/NVIDIA_CUDA-5.0_Samples/bin/linux/release$ ./deviceQuery
./deviceQuery Starting...

 CUDA Device Query (Runtime API) version (CUDART static linking)

cudaGetDeviceCount returned 38
-> no CUDA-capable device is detected

Что я пробовал

Чтобы решить эту проблему, я попробовал все мысли, рекомендованные устройством с поддержкой CUDA, но безрезультатно:

  • /dev/nvidia* есть и разрешения 666 (crw-rw-rw-) и корень владельца: root

     [email protected]:/dev$ ls -l nvidia*
     crw-rw-rw- 1 root root 195,   0 Oct 24 18:51 nvidia0
     crw-rw-rw- 1 root root 195,   1 Oct 24 18:51 nvidia1
     crw-rw-rw- 1 root root 195, 255 Oct 24 18:50 nvidiactl
    
  • Я попытался выполнить код с помощью sudo

  • CUDA 5.0 одновременно устанавливает драйвер и библиотеки

PS здесь lspci | grep -i nvidia:

[email protected]:/dev$ lspci | grep -i nvidia
03:00.0 VGA compatible controller: NVIDIA Corporation GK104 [GeForce GTX 670] (rev a1)
03:00.1 Audio device: NVIDIA Corporation GK104 HDMI Audio Controller (rev a1)
04:00.0 VGA compatible controller: NVIDIA Corporation G94 [Quadro FX 1800] (rev a1)

[обновление]

[email protected]:~/NVIDIA_CUDA-5.0_Samples/bin/linux/release$  nvidia-smi -a
NVIDIA: API mismatch: the NVIDIA kernel module has version 295.59,
but this NVIDIA driver component has version 304.54.  Please make
sure that the kernel module and all NVIDIA driver components
have the same version.
Failed to initialize NVML: Unknown Error

Как это может быть, если я использую установщик CUDA 5.0 для установки драйверов и библиотек одновременно. Может ли старая версия 4.2, которая все еще лежит вокруг беспорядка?

4b9b3361

Ответ 1

Я столкнулся с этой проблемой и запустил

nvidia-smi

сообщила мне о несоответствии API. Проблема заключалась в том, что в моем дистрибутиве Linux были установлены обновления, требующие перезагрузки системы, поэтому перезапуск устраняет проблему.

Ответ 2

См. этот вопрос Установка cuda 5 образцов в Ubuntu 12.10.

  • Ubuntu 12 - не поддерживаемый дистрибутив Linux (пока). Для справки см. Замечания и исправления к выпуску CUDA 5.0 Toolkit

    ** Поддерживаемые дистрибутивы

    Distribution       32 64  Kernel                 GCC         GLIBC        
    -----------------  -- --  ---------------------  ----------  -------------
    Fedora 16          X  X   3.1.0-7.fc16           4.6.2       2.14.90      
    ICC Compiler 12.1     X                                                   
    OpenSUSE 12.1         X   3.1.0-1.2-desktop      4.6.2       2.14.1       
    Red Hat RHEL 6.x      X   2.6.32-131.0.15.el6    4.4.5       2.12         
    Red Hat RHEL 5.5+     X   2.6.18-238.el5         4.1.2       2.5          
    SUSE SLES 11 SP2      X   3.0.13-0.27-pae        4.3.4       2.11.3       
    SUSE SLES 11.1     X  X   2.6.32.12-0.7-pae      4.3.4       2.11.1       
    Ubuntu 11.10       X  X   3.0.0-19-generic-pae   4.6.1       2.13         
    Ubuntu 10.04       X  X   2.6.35-23-generic      4.4.5       2.12.1    
    
  • Если вы хотите, чтобы это выполнялось на Ubuntu 12 в любом случае, см. ответ rpardo. Похоже, что этот дистрибутив вместо установки 64-битных библиотек в /usr/lib64 устанавливает их в /usr/lib/x86_64-linux-gnu/

Я предлагаю искать все экземпляры libcuda.so и libnvidia-ml.so в системе. Поскольку драйвер не поддерживает этот дистрибутив, он мог бы установить библиотеки на путь, на который не указывает LD_LIBRARY_PATH. Затем переместите библиотеки вокруг и/или измените LD_LIBRARY_PATH, чтобы указать на это местоположение (это должен быть первый путь слева). Затем повторите попытку nvidia-smi или deviceQuery

Удачи.

Ответ 3

Я получил ошибку 38 для cudaGetDeviceCount на машине Windows с GPU GTX980. После того, как я загрузил последний драйвер для GTX 980 на сайт NVIDIA, установил его и перезапустил, все в порядке. Похоже, установщик CUDA не устанавливает последний драйвер.

Ответ 4

Попробуйте запустить образец с помощью sudo (или вы можете сделать "sudo su", установить LD_LIBRARY_PATH на путь библиотек cuda и запустить образец, будучи root). По-видимому, поскольку вы, вероятно, установили CUDA 5.0 с помощью sudo, образцы не запускаются с обычным пользователем. Тем не менее, если вы запустите образец с корнем, вы также сможете запускать образцы с обычным пользователем! Я еще не перезапустил систему, чтобы проверить, работают ли образцы с обычным пользователем даже после перезагрузки, или каждый раз, когда вы должны запускать хотя бы одно приложение CUDA с корнем.

Проблема может полностью исчезнуть, если вы установите CUDA TookKit без использования sudo.

Ответ 5

У меня была очень похожая проблема на Debian, и оказалось, что загруженный модуль nvidia имел другую версию, чем libcuda1.

Чтобы проверить установленный модуль nvidia, вы должны сделать:

  $ sudo modinfo nvidia-current | grep version
  version:        319.82

Если он не соответствует версии libcuda1, это корень ваших проблем.