Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
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
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.