Parallel Programming with MPI and OpenMP - PowerPoint PPT Presentation

About This Presentation
Title:

Parallel Programming with MPI and OpenMP

Description:

Title: Parallel Programming in C with the Message Passing Interface Author: Michael J. Quinn Last modified by: Fran ois Lemieux Created Date: 12/21/2001 12:01:37 AM – PowerPoint PPT presentation

Number of Views:137
Avg rating:3.0/5.0
Slides: 27
Provided by: Micha897
Category:

less

Transcript and Presenter's Notes

Title: Parallel Programming with MPI and OpenMP


1
Parallel Programmingwith 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
4
A
B
6
3
1
3
5
C
1
D
2
E
5
Algorithme de Floyd
for k ? 0 to n-1 for i ? 0 to n-1 for j ? 0 to
n-1 ai,j ? min (ai,j, ai,k
ak,j) endfor endfor endfor
6
Création dynamique dun tableau 1-D
Run-time Stack
Heap
7
Création dynamique dun tableau 2-D
Run-time Stack
Bstorage
B
Heap
8
Création dynamique dun tableau 2-D
int B, i Bstorage (int) malloc
(Mnsizeof(int)) B(int) malloc
(msizeof(int)) for (i0 iltm i) Bi
Bstoragein
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 n3 fois
  • Pas de parallélisme de tâche
  • On peut voir le problème comme n2 applications de
    la même tâche à effectuer en parallèle sur des
    données différentes.

11
Communication
Mise-à-jour de a3,4 lorsque k 1
Tâches primitives
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
  • n2 valeurs de sortie
  • On associe environ n2/2 valeurs à chaque
    processeur

13
2 méthodes possibles
On regroupe par lignes
On 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
Un processus est chargé de lire le fichier
dentrée et de distribuer son contenu aux autres
16
Communicationentre 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éditeur
Processus récepteur
Tampon du système
Tampon de la mémoire
Tampon du programme
Tampon du système
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.
Write a Comment
User Comments (0)
About PowerShow.com