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?
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.
Voir cette question de débordement de pile Installation des exemples de cuda 5 dans Ubuntu 12.10 .
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
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
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.
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.
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.