GPU/CUDA
Graphics Processing Unit (GPU)
Deux noeuds node-04-01 et node-04-02 sont associés à des accélérateurs de calcul GPU. Voici la configuration :
| INTEL 5650 | NVIDIA M2050 | |
|---|---|---|
| Nombre de coeurs | 6 | 448 |
| Mémoire GB | 12 | 3 |
| Logiciel | Linux CentOS 6.3
INTEL FORTRAN + MKL |
NVIDIA CUDA 3.2/4.0/4.1/4.2/5.0
CUDA FORTRAN 2.3/3.1/3.2/4.0/4.1/4.2 |
Développer en CUDA Fortran
Pour programmer les GPU en Fortran, il est nécessaire d’utiliser le compîlateur Fortran de l’éditeur PGI. Nous vous recommandons d’utiliser l’environnement module pour charger la version souhaitée du compilateur PGI :
[user@master ]# module avail pgi
------------------------------ /home/programmes/Modules ------------------------------
pgi/10.9 pgi/11.10 pgi/11.5 pgi/12.10
- CUDA Fortran 2.3 et 3.1 :
[user@master ]# module load pgi/10.9Compiler en précisant la version du runtime CUDA :
[user@master ]# pgfortran -Mcuda=2.3 programme.cuf -o programme.exe
ou
[user@master ]# pgfortran -Mcuda=3.1 programme.cuf -o programme.exe
- CUDA Fortran 3.2 et 4.0 :
[user@master ]# module load pgi/11.10Compiler en précisant la version du runtime CUDA :
[user@master ]# pgfortran -Mcuda=3.2 programme.cuf -o programme.exe
ou
[user@master ]# pgfortran -Mcuda=4.0 programme.cuf -o programme.exe
- CUDA Fortran 4.1 et 4.2 :
[user@master ]# module load pgi/12.10Compiler en précisant la version du runtime CUDA :
[user@master ]# pgfortran -Mcuda=4.1 programme.cuf -o programme.exe
ou
[user@master ]# pgfortran -Mcuda=4.2 programme.cuf -o programme.exeDévelopper en CUDA C
Pour programmer les GPU en C, il est nécessaire d’utiliser le compîlateur C de NVIDIA. Nous vous recommandons d’utiliser l’environnement module pour charger la version souhaitée du compilateur NVIDIA :
[user@master ]# module avail cuda
------------------------------ /home/programmes/Modules ------------------------------
cuda/3.2 cuda/4.0 cuda/4.1 cuda/4.2 cuda/5.0[user@master ]# module load cuda/version
[user@master ]# nvcc programme.cu -o programme.exeUtiliser les exemples du SDK NVIDIA
Voici un exemple de script de soumission permettant d’utiliser le programme deviceQuery. Ce programme fait parti du SDK NVIDIA et permet d’interroger les GPU et d’avoir leurs caractéristiques.
Benchmark FFT
Nous mettons à la disposition des utilisateurs des exemples simples de calcul avec accélérateur GPU pour la FFT ND (1D, 2D et 3D). Les benchmarks FFT 1D, 2D et 3D correspondant aux tableaux ci-dessous sont également disponibles auprès des Philippe ou Georges.
Notre objecrtif est de mettre à disposition les algorithmes usuels implémentés sur GPU : FFT, Diagonalisation, Systèmes Linéaires. Nous avons commencé par la FFT où le temps de calcul croît en N*log(N). L’exemple n’est pas encore bien optimisé. Notre référence est la FFT compilé avec un compilateur INTEL FORTRAN 11, exécuté en parallèle sur 6 coeurs du processeur Intel 5650. L’exemple avec GPU utilise l’accélerateur NVIDIA M2050 et le software CUDA 3.2. Cliquez sur les liens ci-dessous où les tableaux comparent les temps de calcul pour la FFT 1D, 2D et 3D :
FFT 1D
FFT 2D
FFT 3D
Vous trouverez ici les benchmarks qui ont servi à générer ces tableaux et pour les utiliser, il suffit de se référer au fichier benchs_readme.pdf.






