Différences entre versions de « Cuda install »
Ligne 194 : | Ligne 194 : | ||
''CUDA Capability Major/Minor version number: 3.0'' | ''CUDA Capability Major/Minor version number: 3.0'' | ||
</div> | </div> | ||
+ | Il ne vous reste plus qu'a apprendre l'API CUDA pour pouvoir utiliser votre GPU pour faire des calculs... |
Version actuelle datée du 24 mai 2021 à 16:30
Introduction
Compute Unified Device Architecture ou CUDA est un framework propriétaire de Nvidia pour faire du General-Purpose Computing on Graphics Processing Units ou GPGPU. C'est à dire, utiliser le GPU pour faire des calculs habituellement fait par le processeur (CPU).
Les GPU possèdent plus de cours que les CPU est sont très efficaces pour faire des calculs parallélisés. Cependant, les GPU ont un espace mémoire dédié qui est différent de celui du CPU (géré par la MMU) et il faudra généralement copier vos variables d'un espace à l'autre avant de faire des calculs.
Attention donc à faire des calculs suffisamment long pour contrebalancer le temps de copie des variables, autrement le programme perdrait plus de temps en copies mémoire qu'en calculs...
Plus d'informations sur CUDA ici.
Le dépôt Nvidia
Avant d'installer les pilotes, il faut installer les il faut ajouter le dépôt Nvidia:
# dnf config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel8/x86_64/cuda-rhel8.repo
Il faut également installer les sources du noyau, le dépôt EPEL ainsi que le compilateur C:
# dnf -y install kernel-devel kernel-headers epel-release gcc gdb
Installation du pilote
Vous pouvez maintenant lister les différentes versions avec dnf:
# dnf module list nvidia-driver Dernière vérification de l’expiration des métadonnées effectuée il y a 0:49:08 le jeu. 20 mai 2021 04:09:26 CEST. cuda-rhel8-x86_64 Name Stream Profiles Summary nvidia-driver latest default [d], fm, ks, src Nvidia driver for latest branch nvidia-driver latest-dkms [d][e] default [d] [i], fm, ks Nvidia driver for latest-dkms branch nvidia-driver 418 default [d], fm, ks, src Nvidia driver for 418 branch nvidia-driver 418-dkms default [d], fm, ks Nvidia driver for 418-dkms branch nvidia-driver 440 default [d], fm, ks, src Nvidia driver for 440 branch nvidia-driver 440-dkms default [d], fm, ks Nvidia driver for 440-dkms branch nvidia-driver 450 default [d], fm, ks, src Nvidia driver for 450 branch nvidia-driver 450-dkms default [d], fm, ks Nvidia driver for 450-dkms branch nvidia-driver 455 default [d], fm, ks, src Nvidia driver for 455 branch nvidia-driver 455-dkms default [d], fm, ks Nvidia driver for 455-dkms branch nvidia-driver 460 default [d], fm, ks, src Nvidia driver for 460 branch nvidia-driver 460-dkms default [d], fm, ks Nvidia driver for 460-dkms branch nvidia-driver 465 default [d], fm, ks, src Nvidia driver for 465 branch nvidia-driver 465-dkms default [d], fm, ks Nvidia driver for 465-dkms branch Aide : [d]éfaut, [e]activé, [x]désactivé, [i]nstallé
On peut installer la dernière version grâce à la commande suivante :
# dnf module install -y nvidia-driver:latest-dkms
Il faut maintenant redémarrer le système pour que le noyau charge le pilote Nvidia:
# reboot
Vérification
Après un redémarrage vous pouvez voir que la carte est reconnue en listant les périphériques:
# ll /dev/nvidia* crw-rw-rw-. 1 root root 195, 0 20 mai 04:31 /dev/nvidia0 crw-rw-rw-. 1 root root 195, 255 20 mai 04:31 /dev/nvidiactl crw-rw-rw-. 1 root root 195, 254 20 mai 04:31 /dev/nvidia-modeset crw-rw-rw-. 1 root root 238, 0 20 mai 04:32 /dev/nvidia-uvm crw-rw-rw-. 1 root root 238, 1 20 mai 04:32 /dev/nvidia-uvm-tools /dev/nvidia-caps: total 0 cr--------. 1 root root 242, 1 20 mai 04:31 nvidia-cap1 cr--r--r--. 1 root root 242, 2 20 mai 04:31 nvidia-cap2
Toutes les cartes seront listées avec un numéro nvidia0, nvidia1, etc...
On peut utiliser la commande nvidia-smi pour lister toutes les informations sur la carte:
# nvidia-smi -a ==============NVSMI LOG============== Timestamp : Thu May 20 05:04:16 2021 Driver Version : 465.19.01 CUDA Version : 11.3 Attached GPUs : 1 GPU 00000000:01:00.0 Product Name : NVIDIA GeForce GT 640 Product Brand : GeForce Display Mode : N/A Display Active : N/A Persistence Mode : Disabled MIG Mode ...
Ou un résumé:
# nvidia-smi Thu May 20 05:09:08 2021 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 465.19.01 Driver Version: 465.19.01 CUDA Version: 11.3 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |===============================+======================+======================| | 0 NVIDIA GeForce ... Off | 00000000:01:00.0 N/A | N/A | | 40% 31C P0 N/A / N/A | 0MiB / 1999MiB | N/A Default | | | | N/A | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=============================================================================| | No running processes found | +-----------------------------------------------------------------------------+
Comme on peut le voir ici, le serveur est équipé d'une carte GT 640:
Installation de CUDA
Choix de la version
Avant d'installer CUDA, il faut savoir quelle version est supportée par votre carte graphique. Malheureusement, Il n'y a pas de lien direct entre la version de CUDA et le modèle de carte graphique mais il faut regarder les capacités de calcul (Compute Capability). Le site de Nvidia déclare la GT 640 comme ayant des capacités de calcul 3.5 mais c'est faux ! Le site techpowerup donne de meilleures informations et on peut voir que c'est 3.0:
Si on en crois ce tableau de compatibilité trouvé sur stackoverflow il faut installer la version 10.x de cuda:
Installation
Sur CentOS 8, la dernière version disponible est la 10.2 :
# dnf search cuda-10 Last metadata expiration check: 1:15:13 ago on Mon May 24 13:55:11 2021. ======================================================== Name Matched: cuda-10 ======================================================== cuda-10-1.x86_64 : CUDA 10.1 meta-package cuda-10-2.x86_64 : CUDA 10.2 meta-package
Ici nous installerons la version 10.2 mais vous devez installer al version en adéquation avec votre GPU ! :
# dnf install cuda-10-2
Les fichiers de CUDA se trouvent dans le répertoire /usr/local et nous allons créer un lien symbolique pour pointer toujours vers la version utilisée. Cette astuce permet de changer rapidement de version (on change le lien symbolique) pour faire des tests ou compiler :
# ln -fs /usr/local/cuda-10.2 /usr/local/cuda
Variables d'environnement
Il faut maintenant charger dans l'environnement les exécutables et les librairies utilisés par CUDA. Pour cela, nous allons modifier le fichier bash_profile qui se trouve dans le répertoire de l'utilisateur (ici root) pour y ajouter / modifier les variables PATH et LD_LIBRAIRY_PATH :
# vi ~/.bash_profile
Ajouter à la fin du fichier:
# CUDA specific environment PATH=/usr/local/cuda/bin:$PATH:$HOME/bin export PATH export LD_LIBRARY_PATH=/usr/local/cuda/lib64
Il ne reste plus qu'a recharger le contexte du bash :
# . ~/.bash_profile
Test de fonctionnement
Normalement vous devriez pouvoir afficher la version du compilateur CUDA :
# nvcc -V nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2019 NVIDIA Corporation Built on Wed_Oct_23_19:24:38_PDT_2019 Cuda compilation tools, release 10.2, V10.2.89
release 10.2 cela correspond à la version que nous venons d'installer !
On peut vérifier les compatibilité de la carte avec cette version de CUDA en compilant un programme exemple:
# cd /usr/local/cuda/samples/1_Utilities/deviceQuery # make # ./deviceQuery ./deviceQuery Starting... CUDA Device Query (Runtime API) version (CUDART static linking) Detected 1 CUDA Capable device(s) Device 0: "GeForce GT 640" CUDA Driver Version / Runtime Version 11.2 / 10.2 CUDA Capability Major/Minor version number: 3.0 Total amount of global memory: 2000 MBytes (2097086464 bytes) ( 2) Multiprocessors, (192) CUDA Cores/MP: 384 CUDA Cores GPU Max Clock rate: 902 MHz (0.90 GHz) Memory Clock rate: 810 Mhz Memory Bus Width: 128-bit ...
On peut voir que la capacité de calcul supportée par la carte est bien 3.0:
CUDA Capability Major/Minor version number: 3.0
Il ne vous reste plus qu'a apprendre l'API CUDA pour pouvoir utiliser votre GPU pour faire des calculs...