Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
documentation:tools:benchmarksgpu [2015/04/26 19:35] cicalugadocumentation:tools:benchmarksgpu [2023/01/12 09:39] (Version actuelle) – supprimée ltaulell
Ligne 1: Ligne 1:
-====== Utilisation des GPUs au PSMN ====== 
  
-{{INLINETOC}} 
- 
-===== Matériel disponible au PSMN ===== 
- 
-Plusieurs cartes GPU NVIDIA sont installées au PSMN : 
-  * [[http://www.nvidia.fr/content/PDF/kepler/Tesla-K20-Passive-BD-06455-001-v07.pdf |Tesla K20]] 
-  * [[http://www.nvidia.fr/object/geforce-gtx-780-fr.html#pdpContent=2 |GeForce GTX780]] 
-  * [[http://www.nvidia.com/docs/IO/43395/tesla-m2090-board-specifications.pdf |Tesla M2090]]  
- 
-Une comparaison des spécifications constructeur est donnée dans le tableau ci-dessous : 
- 
- 
-^  Spécifications techniques  ^  Tesla  K20  ^  GeForce GTX780  ^  Tesla M2090  ^   
-|    |||| 
-|  Performance peak en double précision |  1.17 Tflops  |  0.166 Tflops  |  0.66 Tflops  
-|    |||| 
-|  Performance peak en simple précision |  3.52 Tflops  |  3.97 Tflops  |  1.33 Tflops  
-|    |||| 
-|  Nombre de coeurs |  2496  |  2304  |  512  |  
-|    |||| 
-|  Fréquence coeurs |  0.706 GHz  |  0.863 GHz  |  1.3 GHz  |  
-|    |||| 
-|  Mémoire |  5 GB  |  3 GB  |  6 GB  |  
-|    |||| 
-|  Bande passante max (ECC off)  |  208 GB/s  |  288.4 GB/s  |  177.6 GB/s  | 
-|    |||| 
-|  ECC (Error-correcting code memory)|  oui  |  non  |  oui  |  
-|    |||| 
-|  Consommation max |  225 W  |  250 W    250 W  |  
-===== Logiciel disponible au PSMN =====  
- 
-Le soft nécessaire au fonctionnement de ces cartes est installé avec les paquets Debian. Il s'agit de : 
-  * drivers 
-  * librarie CUDA 
-  * CUDA SDK (optionnel) 
- 
- 
-===== Files d'attente =====  
- 
-Les files d'attente pour l'utilisation des GPUs sont décrites sur la page : [[documentation:clusters:batch|Les files d'attente]] 
- 
-===== Benchmarks ===== 
- 
-Plusieurs tests de fonctionnement et de performance de ces cartes sont présentés :  
- 
-==== Tests de détection matériel et logiciel ==== 
- 
-Avec la commande linux lspci (qui affiche la liste de périphériques PCI, dont les cartes GPU) : 
- 
-<code bash>  
-c82gpgpu34:~> lspci -v | grep -i nvidia 
-05:00.0 3D controller: NVIDIA Corporation GK110GL [Tesla K20m] (rev a1) 
- Subsystem: NVIDIA Corporation Device 1015 
- Kernel driver in use: nvidia 
-83:00.0 3D controller: NVIDIA Corporation GK110GL [Tesla K20m] (rev a1) 
- Subsystem: NVIDIA Corporation Device 1015 
- Kernel driver in use: nvidia 
-</code> 
- 
-Cette commande ne retourne rien si lancée sur les serveurs de compilations (p.ex. e5-2670comp1) puisqu'il n'y a pas de carte GPU installée.  
- 
-La sortie précédente est obtenue sur un noeud de calcul qui dispose de cartes GPU (dans cet exemple il s'agit du noeud c82gpgpu34 qui dispose de 2 cartes Tesla K20). 
- 
-La commande linux lsmod affiche l'état et la liste de modules chargés du noyau Linux : 
- 
-<code bash>  
-c82gpgpu34:~> lsmod | grep nvidia 
-nvidia_uvm             33340  
-nvidia              10492298  1 nvidia_uvm 
-i2c_core               23876  4 i2c_algo_bit,igb,i2c_i801,nvidia 
-</code> 
- 
-Pour afficher la version du driver CUDA installé : 
-<code bash>  
-c82gpgpu34:~> cat /proc/driver/nvidia/version 
-NVRM version: NVIDIA UNIX x86_64 Kernel Module  340.65  Tue Dec  2 09:50:34 PST 2014 
-GCC version:  gcc version 4.6.3 (Debian 4.6.3-14)  
-</code> 
- 
-Pour afficher la version du CUDA Toolkit installé : 
-<code bash>  
-c82gpgpu34:~> nvcc -V  
-nvcc: NVIDIA (R) Cuda compiler driver 
-Copyright (c) 2005-2013 NVIDIA Corporation 
-Built on Wed_Jul_17_18:36:13_PDT_2013 
-Cuda compilation tools, release 5.5, V5.5.0 
-</code> 
- 
-nvcc est le compilateur fourni dans le driver pour compiler des programmes CUDA (il appelle le compilateur gcc pour compiler le code C)  
- 
- 
-**Uns autre possibilité** (hors commandes Linux) pour détecter la présence et le type de GPUS NVIDIA est de faire appel au programme deviceQuery dont le source .cpp est contenu dans la suite NVIDIA_GPU_Computing_SDK (devenue NVIDIA_CUDA-x.y_Samples dans les versions x.y récentes). Après compilation, ce programme détecte les périphériques "CUDA-capable" du système. Ci-après le output de cette exécution sur un noueud avec des GPUs NVIDIA K20 : 
- 
-<code bash>  
-c82gpgpu34:~> cd NVIDIA_GPU_Computing_SDK 
-c82gpgpu34:~/NVIDIA_GPU_Computing_SDK~> ./C/bin/linux/release/deviceQuery 
- 
-./C/bin/linux/release/deviceQuery Starting... 
- 
- CUDA Device Query (Runtime API) version (CUDART static linking) 
- 
-Found 2 CUDA Capable device(s) 
- 
-Device 0: "Tesla K20m" 
-  CUDA Driver Version / Runtime Version          6.5 / 5.5 
-  CUDA Capability Major/Minor version number:    3.5 
-  Total amount of global memory:                 4800 MBytes (5032706048 bytes) 
-MapSMtoCores SM 3.5 is undefined (please update to the latest SDK)! 
-MapSMtoCores SM 3.5 is undefined (please update to the latest SDK)! 
-  (13) Multiprocessors x (-1) CUDA Cores/MP:     -13 CUDA Cores 
-  GPU Clock Speed:                               0.71 GHz 
-  Memory Clock rate:                             2600.00 Mhz 
-  Memory Bus Width:                              320-bit 
-  L2 Cache Size:                                 1310720 bytes 
-  Max Texture Dimension Size (x,y,z)             1D=(65536), 2D=(65536,65536), 3D=(4096,4096,4096) 
-  Max Layered Texture Size (dim) x layers        1D=(16384) x 2048, 2D=(16384,16384) x 2048 
-  Total amount of constant memory:               65536 bytes 
-  Total amount of shared memory per block:       49152 bytes 
-  Total number of registers available per block: 65536 
-  Warp size:                                     32 
-  Maximum number of threads per block:           1024 
-  Maximum sizes of each dimension of a block:    1024 x 1024 x 64 
-  Maximum sizes of each dimension of a grid:     2147483647 x 65535 x 65535 
-  Maximum memory pitch:                          2147483647 bytes 
-  Texture alignment:                             512 bytes 
-  Concurrent copy and execution:                 Yes with 2 copy engine(s) 
-  Run time limit on kernels:                     No 
-  Integrated GPU sharing Host Memory:            No 
-  Support host page-locked memory mapping:       Yes 
-  Concurrent kernel execution:                   Yes 
-  Alignment requirement for Surfaces:            Yes 
-  Device has ECC support enabled:                Yes 
-  Device is using TCC driver mode:               No 
-  Device supports Unified Addressing (UVA):      Yes 
-  Device PCI Bus ID / PCI location ID:           5 / 0 
-  Compute Mode: 
-     < Exclusive Process (many threads in one process is able to use ::cudaSetDevice() with this device) > 
- 
-Device 1: "Tesla K20m" 
-  CUDA Driver Version / Runtime Version          6.5 / 5.5 
-  CUDA Capability Major/Minor version number:    3.5 
-  Total amount of global memory:                 4800 MBytes (5032706048 bytes) 
-MapSMtoCores SM 3.5 is undefined (please update to the latest SDK)! 
-MapSMtoCores SM 3.5 is undefined (please update to the latest SDK)! 
-  (13) Multiprocessors x (-1) CUDA Cores/MP:     -13 CUDA Cores 
-  GPU Clock Speed:                               0.71 GHz 
-  Memory Clock rate:                             2600.00 Mhz 
-  Memory Bus Width:                              320-bit 
-  L2 Cache Size:                                 1310720 bytes 
-  Max Texture Dimension Size (x,y,z)             1D=(65536), 2D=(65536,65536), 3D=(4096,4096,4096) 
-  Max Layered Texture Size (dim) x layers        1D=(16384) x 2048, 2D=(16384,16384) x 2048 
-  Total amount of constant memory:               65536 bytes 
-  Total amount of shared memory per block:       49152 bytes 
-  Total number of registers available per block: 65536 
-  Warp size:                                     32 
-  Maximum number of threads per block:           1024 
-  Maximum sizes of each dimension of a block:    1024 x 1024 x 64 
-  Maximum sizes of each dimension of a grid:     2147483647 x 65535 x 65535 
-  Maximum memory pitch:                          2147483647 bytes 
-  Texture alignment:                             512 bytes 
-  Concurrent copy and execution:                 Yes with 2 copy engine(s) 
-  Run time limit on kernels:                     No 
-  Integrated GPU sharing Host Memory:            No 
-  Support host page-locked memory mapping:       Yes 
-  Concurrent kernel execution:                   Yes 
-  Alignment requirement for Surfaces:            Yes 
-  Device has ECC support enabled:                Yes 
-  Device is using TCC driver mode:               No 
-  Device supports Unified Addressing (UVA):      Yes 
-  Device PCI Bus ID / PCI location ID:           131 / 0 
-  Compute Mode: 
-     < Exclusive Process (many threads in one process is able to use ::cudaSetDevice() with this device) > 
- 
-deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 6.5, CUDA Runtime Version = 5.5, NumDevs = 2, Device = Tesla K20m, Device = Tesla K20m 
- 
-</code> 
- 
-==== Test de la bande passante ==== 
- 
-Un autre test fourni avec NVIDIA_GPU_Computing_SDK est le programme bandwidthTest. Après la compilation du programme source .cpp, son exécution donne la largeur de la bande pour trois transferts qui doivent être pris en compte dans le développement de codes CUDA : 
-  * transfert depuis CPU sur le GPU 
-  * transfert depuis GPU sur le CPU 
-  * transfert depuis GPU sur le GPU (intra GPU) 
-Ci-dessous la sortie complète de ce programme sur le même noeud que précédemment : 
- 
-<code bash>  
-c82gpgpu34:~> cd NVIDIA_GPU_Computing_SDK 
-c82gpgpu34:~> .C//bin/linux/release/bandwidthTest  
- 
-./C/bin/linux/release/bandwidthTest Starting... 
- 
-Running on... 
- 
- Device 0: Tesla K20m 
- Quick Mode 
- 
- Host to Device Bandwidth, 1 Device(s), Paged memory 
-   Transfer Size (Bytes) Bandwidth(MB/s) 
-   33554432 3819.7 
- 
- Device to Host Bandwidth, 1 Device(s), Paged memory 
-   Transfer Size (Bytes) Bandwidth(MB/s) 
-   33554432 3381.9 
- 
- Device to Device Bandwidth, 1 Device(s) 
-   Transfer Size (Bytes) Bandwidth(MB/s) 
-   33554432 143586.3 
- 
-</code> 
- 
-==== Tests de performance de la composante FFT de Cuda ==== 
- 
- 
-==== Tests de performance des bibliothèques d'algèbre linéaire ==== 
-==== Tests de performance des codes "maison" portés sur GPUs ==== 
- des codes "maison" portés sur GPUs ([[http://www.cbp.ens-lyon.fr/doku.php?id=developpement:productions:logiciels:anisotropicblur|Anisotropic Blur]] ) 
documentation/tools/benchmarksgpu.1430076941.txt.gz · Dernière modification : 2020/08/25 15:58 (modification externe)