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
Dernière révisionLes deux révisions suivantes
documentation:tools:benchmarksgpu [2015/04/26 08:41] – [Matériel disponible au PSMN] cicalugadocumentation:tools:benchmarksgpu [2020/08/25 15:58] – modification externe 127.0.0.1
Ligne 1: Ligne 1:
-====== Utilisation des GPUs au PSMN ====== +===== Benchmarks GPU =====
- +
-{{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 :  Plusieurs tests de fonctionnement et de performance de ces cartes sont présentés : 
Ligne 91: Ligne 48:
 nvcc est le compilateur fourni dans le driver pour compiler des programmes CUDA (il appelle le compilateur gcc pour compiler le code C)  nvcc est le compilateur fourni dans le driver pour compiler des programmes CUDA (il appelle le compilateur gcc pour compiler le code C) 
  
-==== Tests de la bande passante ==== + 
-==== Tests de performance des bibliothèques d'algèbre linéaire ====+**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 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 ==== ==== 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]] )  des codes "maison" portés sur GPUs ([[http://www.cbp.ens-lyon.fr/doku.php?id=developpement:productions:logiciels:anisotropicblur|Anisotropic Blur]] )