web-dev-qa-db-fra.com

Erreur 38 de l'API CUDA Runtime: aucun périphérique compatible CUDA n'est détecté

La situation

J'ai un serveur de 2 gpu (Ubuntu 12.04) où j'ai commuté une Tesla C1060 avec une GTX 670. Ensuite, j'ai installé CUDA 5.0 sur une version 4.2. Ensuite, j'ai compilé tous les exemples, à l'exception de simpleMPI, sans erreur. Mais lorsque je lance ./devicequery, le message d'erreur suivant s'affiche:

foo@bar-serv2:~/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

Ce que j'ai essayé

Pour résoudre ce problème, j’ai essayé toutes les réflexions recommandées par Appareil compatible CUDA , mais en vain:

  • /dev/nvidia* est là et les autorisations sont 666 (crw-rw-rw-) et le propriétaire root: root

     foo@bar-serv2:/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
    
  • J'ai essayé d'exécuter le code avec Sudo

  • CUDA 5.0 installe le pilote et les bibliothèques en même temps

PSvoici lspci | grep -i nvidia: 

foo@bar-serv2:/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)

[update]

foo@bar-serv2:~/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

Comment cela se pourrait-il si j'utilise le programme d'installation de CUDA 5.0 pour installer le pilote et les bibliothèques en même temps. L'ancienne version 4.2, qui traîne toujours, a-t-elle des problèmes?

15
Framester

Je suis tombé sur ce problème et

nvidia-smi

m'a informé d'une incompatibilité API. Le problème était que ma distribution Linux avait installé des mises à jour nécessitant un redémarrage du système. Le redémarrage a donc résolu le problème.

10
cratonica

Voir cette question de débordement de pile Installation des exemples de cuda 5 dans Ubuntu 12.10 .

  1. Ubuntu 12 n’est pas encore une distribution Linux supportée. Pour référence, voir Notes de publication et errata de la boîte à outils CUDA 5.0

    ** Distributions actuellement prises en charge 

    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    
    
  2. Si vous voulez le faire fonctionner sur Ubuntu 12 de toute façon, voyez la réponse de rpardo . Il semble que cette distribution au lieu d’installer des bibliothèques 64 bits pour que /usr/lib64 les installe dans /usr/lib/x86_64-linux-gnu/

Je suggérerais de rechercher toutes les instances de libcuda.so et libnvidia-ml.so sur le système. Comme le pilote ne supporte pas cette distribution, il est possible que les bibliothèques installées aient un chemin non indiqué par LD_LIBRARY_PATH. Ensuite, déplacez les bibliothèques et/ou changez le LD_LIBRARY_PATH pour qu'il pointe vers cet emplacement (il devrait s'agir du premier chemin à gauche). Puis réessayez nvidia-smi ou deviceQuery

Bonne chance

3
Przemyslaw Zych

J'ai eu l'erreur 38 pour cudaGetDeviceCount sur une machine Windows avec GPU GTX 980. Après avoir téléchargé le dernier pilote pour GTX 980 sur le site NVIDIA, je l'ai installé et redémarré, tout va bien. On dirait que le programme d'installation de CUDA n'installe pas le dernier pilote.

1
Manu

J'ai eu un problème très similaire sur Debian et il s'est avéré que le module chargé nvidia avait une version différente de celle de libcuda1

Pour vérifier la présence du module nvidia installé, procédez comme suit: 

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

Si cela ne correspond pas à la version de libcuda1, c’est la racine de vos problèmes. 

0
jb.

Essayez d'exécuter l'exemple à l'aide de Sudo (ou vous pouvez faire un 'Sudo su', définissez LD_LIBRARY_PATH sur le chemin des bibliothèques cuda et exécutez l'exemple tout en étant root). Apparemment, puisque vous avez probablement installé CUDA 5.0 avec Sudo, les exemples ne fonctionnent pas avec un utilisateur normal. Toutefois, si vous exécutez un exemple avec root, vous pourrez également exécuter des exemples avec l'utilisateur habituel! Je n'ai pas encore redémarré le système pour voir si les exemples fonctionnent avec un utilisateur normal même après le redémarrage, ou à chaque fois que vous devriez exécuter au moins une application CUDA avec root.

Le problème peut disparaître complètement si vous installez CUDA TookKit sans utiliser Sudo.

0
hedayat