soutenance du projet de fin d’études asr · soutenance du projet de fin d’études asr :...
TRANSCRIPT
-
Soutenance du projet de fin d’études ASR :
Paul-Émile SUBLET
Hervé LOEFFEL
Encadrant : François TRAHAY
1 25/01/2012
-
Sommaire : 1) Contexte
2) Implémentation du module CUDA
3) Tests de performance
4) Avenir de EZTrace
5) Conclusion
2 Paul-Émile SUBLET Hervé LOEFFEL
-
Contexte (1/3) : - Des logiciels de pointe utilisant des calculs de plus en
plus lourds
- Nécessité de réduire les temps d’exécution
3 Paul-Émile SUBLET Hervé LOEFFEL
-
Contexte (2/3) : - La parallélisation : une solution pour accélérer les
programmes
- Effectuer les calculs sur le GPU : CUDA
4 Paul-Émile SUBLET Hervé LOEFFEL
-
Contexte (3/3) : - EZTrace : permet de voir les temps utilisés par les
fonctions, les threads…
- Permet à l’utilisateur d’optimiser le programme
- Visualisation sur VITE
5 Paul-Émile SUBLET Hervé LOEFFEL
-
Fonctionnement de CUDA:
6 Paul-Émile SUBLET Hervé LOEFFEL
-
Implémentation du module CUDA dans EZTrace (1/5) : - Modules déjà existants : MPI, OpenMP, memory…
- Nouveau module : CUDA
- Structure : cuda.cu
cuda_ev_codes.h
eztrace_convert_cuda.c
7 Paul-Émile SUBLET Hervé LOEFFEL
-
Implémentation du module CUDA dans EZTrace (2/5) :
Interception des fonctions :
- cudaLaunch
- cudaMalloc
- cudaMemcpy
- cudaThreadSynchronize
- cudaEventSynchronize
- __cudaRegisterFunction
8 Paul-Émile SUBLET Hervé LOEFFEL
-
Implémentation du module CUDA dans EZTrace (3/5) :
9 Paul-Émile SUBLET Hervé LOEFFEL
-
Implémentation du module CUDA dans EZTrace (4/5) : - Conversion de la trace en format standard Pajé/OTF
=> GTG
10 Paul-Émile SUBLET Hervé LOEFFEL
-
Implémentation du module CUDA dans EZTrace (5/5) :
11 Paul-Émile SUBLET Hervé LOEFFEL
-
Tests de performance (1/6): - Lancement de kernels multiples
for(j = 0 ; j < atoi(argv[1]);j++)
{
for(i = 0; i
-
Tests de performance (2/6): - Lancement de kernels multiples
13 Paul-Émile SUBLET Hervé LOEFFEL
-
Tests de performance (3/6): - Utilisation multiple de cudaMemcpy :
for(j = 0 ; j < atoi(argv[1]) ; j++)
cudaMemcpy(entierACalculer_h, entierACalculer_d,
sizeof(int), cudaMemcpyDeviceToHost);
14 Paul-Émile SUBLET Hervé LOEFFEL
-
Tests de performance (4/6): - Utilisation multiple de cudaMemcpy :
15 Paul-Émile SUBLET Hervé LOEFFEL
-
Tests de performance (5/6):
- Algorithme de Mandelbrot
- Lancement d’un unique kernel
- Calculs effectués sur le GPU
16 Paul-Émile SUBLET Hervé LOEFFEL
-
Tests de performance (6/6):
17 Paul-Émile SUBLET Hervé LOEFFEL
-
Avenir de EZTrace : améliorations
- Statistiques
- Représentations d’autres fonctions moins courantes dans le module CUDA
- Nouveaux modules pour d’autres librairies (OpenCL, etc…)
18 Paul-Émile SUBLET Hervé LOEFFEL
-
Avenir de EZTrace : utilisation
- Module CUDA implanté dans la future version de EZTrace
- Utilisation par les entreprises
19 Paul-Émile SUBLET Hervé LOEFFEL
-
Conclusion
- Immersion dans un projet déjà entamé
- Implémentation du module CUDA
- Essais de performance
- Un projet toujours en cours
20 Paul-Émile SUBLET Hervé LOEFFEL
-
Conclusion
« L’informatique, c’est l’art de passer des journées pour essayer de gagner quelques microsecondes »
21 Paul-Émile SUBLET Hervé LOEFFEL
-
Démonstration
22 Paul-Émile SUBLET Hervé LOEFFEL