Ceci est une ancienne révision du document !


Utilisation des GPUs au PSMN

Matériel disponible au PSMN

Plusieurs cartes GPU NVIDIA sont installées au PSMN :

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 : 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) :

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

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 :

c82gpgpu34:~> lsmod | grep nvidia
nvidia_uvm             33340  0 
nvidia              10492298  1 nvidia_uvm
i2c_core               23876  4 i2c_algo_bit,igb,i2c_i801,nvidia

Pour afficher la version du driver CUDA installé :

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) 

Pour afficher la version du CUDA Toolkit installé :

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

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 :

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

Tests de la bande passante

Tests de performance des bibliothèques d'algèbre linéaire

Tests de performance de la composante FFT de Cuda

Tests de performance des codes "maison" portés sur GPUs

des codes “maison” portés sur GPUs (Anisotropic Blur )

documentation/tools/benchmarksgpu.1430074682.txt.gz · Dernière modification : 2020/08/25 15:58 (modification externe)