La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Programmation parallèle

Présentations similaires


Présentation au sujet: "Programmation parallèle"— Transcription de la présentation:

1 Programmation parallèle
CPU/GPU NOVASYS Ingénierie Clément HERMITE

2 Plan Introduction CPU MPI OpenMP Architectures Hybrides GPU
Mesure et analyse de performance Conclusion

3 Introduction

4 CPU

5 MPI – Message Passing Interface
1/2 Bibliothèque de fonctions ( C, C++, Fortran …) Permet d'exploiter des ordinateurs distants ou multiprocesseur par passage de messages. Portable. Routines de la librairie : « MPI_ »

6 MPI – Message Passing Interface
2/2 #include<mpi.h> #define TAG 99 main(int argc, char **argv) { char msg[20]; int my_rank; MPI_Status status; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &my_rank); if (my_rank == 0) { /*-- process 0 --*/ strcpy(msg, "Hello world!\n"); MPI_Send(msg, strlen(msg)+1, MPI_CHAR, 1, TAG, MPI_COMM_WORLD); } else { MPI_Recv(msg, 20, MPI_CHAR, 0, TAG, MPI_COMM_WORLD, &status); printf("Je recois : %s\n", msg); } MPI_Finalize();

7 (Open Multi-Processing)
OpenMP 1/2 (Open Multi-Processing) Nécessite une machine multiprocesseurs à mémoire partagée. Déclaration des zones parallèles avec des #pragma. Utilise le modèle d’exécution parallèle « fork_join » . Mise en œuvre relativement facile.

8 OpenMP 2/2 #include <omp.h> main(){ int i, t[100];
Avec 4 threads: le premier calcule les t[i] de 0 à 24, le second de 25 à 49, le troisième de 50 à 74 et Le quatrième de 75 à 99. #include <omp.h> main(){ int i, t[100]; #pragma omp parallel for for (i=0; i<100 ; i++){ t[i]=i; } Variable d’environnement : export OMP_NUM_THREADS=4 Au cours de l’exécution: omp_set_num_threads(4) #pragma omp parallel num_threads(4)

9 OpenMP vs MPI MPI : la gestion des communications est à la charge de l'utilisateur. OpenMP : la gestion des communications est à la charge du compilateur. MPI et OpenMP sont complémentaires.

10 Architectures Hybrides

11 Cell Processeur multi-cœurs hétérogène. 1 cœur principal (PPE)
8 cœurs spécifiques (SPE)

12 Cell Abandonné en 2009 Processeur multi-cœurs hétérogène.
1 cœur principal (PPE) 8 cœurs spécifiques (SPE) Abandonné en 2009

13 Larrabee Processeur graphique Composé de dizaines de cœurs.
Dérivés de processeurs Pentium 64-bits Multithreading Utilise le jeu d'instruction x86.

14 Larrabee Abandonné en décembre 2009 Processeur graphique
Composé de dizaines de cœurs. Dérivés de processeurs Pentium 64-bits Multithreading Utilise le jeu d'instruction x86. Abandonné en décembre 2009

15 Unité graphique de calcul
GPU Unité graphique de calcul

16 General-Purpose Processing on Graphics Processing Units
GPGPU 3/3 General-Purpose Processing on Graphics Processing Units Calcul générique sur processeur graphique.

17 CPU vs. GPU 1/3

18 CPU vs. GPU 2/3 GPU : multiplication des unités de traitement
CPU : complexification des unités de contrôle augmentation régulière de la mémoire cache embarquée

19 CPU vs. GPU 3/3

20 Nvidia

21 Cuda Compute Unified Device Architecture. Pilote (ForceWare) Runtime
Bibliothèques: CuBLAS et CuFFt. C, le C++ et le Fortran

22 Architecture Fermi Prise en charge du langage de programmation C++ (CUDA C++) Espace d'adresses unifié pour le support complet de C++ Apparition de caches Cache configurable (L1-Mémoire partagée) Compatible IEEE (précision 32 et 64 bits) Exécution simultanée des kernels Support intégral ECC (codes de correction d'erreurs) Changement de contexte rapide Instructions atomiques 10 fois plus rapides

23 Autres technologies

24 Ati Stream Brook Brook+ Close to Metal Ati Stream Développée par AMD
Concurrent de CUDA

25 OpenCL Standard ouvert Langage commun à toutes les architectures
CPU, GPU, Cell etc … Apple, AMD, Intel, Nvidia et Sony

26 Mesure et analyse de permformance

27 Outils de mesure Mesure externe Mesure interne
time total > user + system Mesure interne time() nombre de sec depuis 01/01/1970 clock() compte les clics d’horloge gettimeofday() appel system le plus précis

28 Expression des performances
Accélération (Speed up)

29 Expression des performances
Efficacité L'utilisateur s'intéresse surtout à l'accélération obtenue (Speed up). L'acheteur de la machine s'intéresse beaucoup à l'efficacité. Le développeur s'intéresse aux deux.

30 Expression des performances
Loi d'Amdahl Speed up max

31 Expression des performances

32 Conclusion


Télécharger ppt "Programmation parallèle"

Présentations similaires


Annonces Google