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

Parallel Programming with MPI and OpenMP Michael J. Quinn.

Présentations similaires


Présentation au sujet: "Parallel Programming with MPI and OpenMP Michael J. Quinn."— Transcription de la présentation:

1 Parallel Programming with MPI and OpenMP Michael J. Quinn

2 Chapitre 6 Lalgorithme de Floyd

3 Sujets couverts Chemin le plus court entre toutes les paires de noeuds Tableau 2-D dynamique Communication entre deux noeuds

4 Le problème du chemin le plus court entre toutes les paires de noeuds dun graphe A E B C D 4 6 13 5 3 1 2 0636 40710 12603 73100 95122 A B C D E ABCD 4 8 1 11 0 E Matrice dadjacence

5 Algorithme de Floyd for k 0 to n-1 for i 0 to n-1 for j 0 to n-1 a[i,j] min (a[i,j], a[i,k] + a[k,j]) endfor

6 Création dynamique dun tableau 1-D A Heap Run-time Stack

7 Création dynamique dun tableau 2-D Heap Run-time Stack BstorageB

8 Création dynamique dun tableau 2-D int **B, i; Bstorage = (int*) malloc (M*n*sizeof(int)); B=(int**) malloc (m*sizeof(int*)); for (i=0; i<m; i++) B[i] = &Bstorage[i*n];

9 Conception dun algorithme parallèle Partition Communication Répartition du travail

10 Partition Doit-on décomposer les données ou le code? On peut facilement extraire du parallélisme de données La même instruction doit être exécutée n 3 fois Pas de parallélisme de tâche On peut voir le problème comme n 2 applications de la même tâche à effectuer en parallèle sur des données différentes.

11 Communication Tâches primitives Mise-à-jour de a[3,4] lorsque k = 1 Iteration k: Chaque tâche de la ligne k diffuse sa valeur aux tâches de la même colonne Iteration k: chaque tâche de la colonne k diffuse sa valeur aux tâches de la même ligne

12 Répartition du travail p processeurs n 2 valeurs de sortie On associe environ n 2 /2 valeurs à chaque processeur

13 2 méthodes possibles On regroupe par lignesOn regroupe par colonnes

14 Comnparaison Regroupement par colonne On élimine la diffusion entre les lignes On élimine la diffusion entres les colonnes dun même groupe Regroupement par ligne On élimine la diffusion entre les colonnes On élimine la diffusion entres les lignes dun même groupe On choisi le regroupement par ligne puisque sur la plupart des systèmes les matrices sont représentées ligne par ligne.

15 Fichier dentrée Fichier Un processus est chargé de lire le fichier dentrée et de distribuer son contenu aux autres

16 Communication entre deux noeuds Deux processus veulent communiquer Un processus envoie un message Lautre processus reçoit le message En opposition avec une diffusion ou un processus envoie un message à tous les autres.

17 Send/Receive

18 Function MPI_Send int MPI_Send ( void *message, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm )

19 MPI_Datatype MPI_CHAR MPI_DOUBLE MPI_FLOAT MPI_INT MPI_LONG MPI_LONG_DOUBLE MPI_SHORT MPI_UNSIGNED_CHAR MPI_UNSIGNED MPI_UNSIGNED_LONG MPI_UNSIGNED_SHORT

20 Function MPI_Recv int MPI_Recv ( void *message, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status *status )

21 MPI_status 3 champs: MPI_SOURCE: id du processus envoyant le message MPI_TAG: le tag du message MPI_ERROR: code derreur

22 Utilisation de Send/Receive … if (ID == j) { … Receive from I … } … if (ID == i) { … Send to j … } …

23 Implémentation de MPI_Send et MPI_Recv Processus expéditeurProcessus récepteur Tampon du programme Tampon du système Tampon de la mémoire MPI_Send MPI_Recv

24 Retour deMPI_Send Le processus expéditeur est bloqué tant que la mémoire nest pas libéré La mémoire est libéré lorsque Le message est copié dans le tampon, ou Le message est transmis Scénario typique: Le message est copié dans le tampon La transmission seffectue pendant que lexpéditeur poursuit son exécution

25 Retour de MPI_Recv Le processus récepteur jusquà ce que le message soit copié dans le tampon Si le message narrive jamais alors le processus ne débloquera jamais

26 Interblocage Lorsquun processus attend un événement qui ne se produira jamais Les appels send/receive sont une cause importante dinterblocage Deux processus: Les deux reçoivent avant denvoyer Aucun send ne correspond à un receive Un processus envoie un message à un mauvais destinataire.


Télécharger ppt "Parallel Programming with MPI and OpenMP Michael J. Quinn."

Présentations similaires


Annonces Google