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