introd aux algorith et architect paralèlles.pdf
-
Upload
coucou8949 -
Category
Documents
-
view
236 -
download
7
Transcript of introd aux algorith et architect paralèlles.pdf
-
Introduction aux algorithmes et architectures parallles
1
Introduction aux algorithmes et architectures parallles
Chaire UNESCOCalcul Numrique Intensif
TUNIS - Fvrier 2004
Mohamed JEMNI cole Suprieure des Sciences et Techniques de Tunis
-
Introduction aux algorithmes et architectures parallles
2
Bibliographie M. Cosnard & D. Trystram, Algorithmes et architectures
parallles, InterEditions, Paris, 1993. P. Kuonen, La Programmation parallle, Notes de cours
EPFL. M. J. Flynn, Computer Architecture, Pipelined and parallel
processor design, Jones and Barlett Publishers, 1995. D. E. Culler and Cie, Parallel Computer Architecture, A
Hardware/Software Approach, Morgan Kaufmann Pub. 1999. F.T. Leighton, Introduction to parallel Algorithms and
Architectures: Arrays, Trees, Hypercubes, Morgan KaufmannPub. 1992.
-
Introduction aux algorithmes et architectures parallles
3
Bibliographie
http://www.top500.org/ http://www.mpi-forum.org http://www.netlib.org/utk/papers/mpi-
book/mpi-book.html http://www.openmp.org www.netlib.org/scalapack/scalapack_home.
html
-
Introduction aux algorithmes et architectures parallles
4
Architectures ParalllesPourquoi?
Approche classique : diminuer le temps de calcul en effectuant plus vite chaque (ensemble d') opration(s)
En calcul parallle : diminuer le temps de calcul en excutant simultanment plusieurs oprations (tches)
0. Introduction
-
Introduction aux algorithmes et architectures parallles
5
Problmes La remise en question des concepts d'algorithmique classique bass sur le principe de la machine squentielle. Diversit des modles d'architectures parallles Difficult de la programmation des machines parallles.
Avantages amlioration des performances de calcul accroissement de la taille des problmes rsoudre Rsolution de nouveaux problmes
0. Introduction
-
Introduction aux algorithmes et architectures parallles
6
Algorithmique ParalllePourquoi?
La conception, lanalyse et lvaluation dalgorithmes destins sexcuter sur des
machines parallles.
0. Introduction
-
Introduction aux algorithmes et architectures parallles
7
PLAN1. Historique
2. Classification
3. Concepts de base de lalgorithmique parallle
4. Les sources du paralllisme
5. Modles de programmation Parallle
6. Techniques de Paralllisation
-
Introduction aux algorithmes et architectures parallles
8
1. Historique
Le premier ordinateur vectoriel (1973) : le STAR 100construit par CDC (Control Data Coorporation)
La premire machine parallle (1972): la machine ILLIAC IV a t construite par Burroughs et livre au NASA
) Architecture : tableau de 8x8 processeurs connects en tore de dimension2.
les architectures multiprocesseurs Deux approches diffrentes:
les architectures vectorielles
-
Introduction aux algorithmes et architectures parallles
9
1.1 Les ordinateurs vectoriels
Cray Research Inc
CRAY-1 (en 1976) : 130 MFLOPS CRAY-XMP (en 1982) : le premier Superordinateur vectoriel multiprocesseurs: 2 procsCRAY-2 (en 1985) : Superordinateur vectoriel 4 procs et qui avait une puissance thorique de 1950 MFLOPS.
Autres constructeurs : IBM, NEC, HITACHI,
normes machines trs coteuses : le besoin darchitecture plus rgulire, extensible et facile raliser!
-
Introduction aux algorithmes et architectures parallles
10
1.2 Les ordinateurs multiprocesseurs
mmoire commune (shared memory):plusieurs processeurs se partagent une mme mmoire
CPU
CPU
CPU
MmoireMmoireCPU
Machine Machine mmmoire partagmoire partage e
-
Introduction aux algorithmes et architectures parallles
11
1.2 Les ordinateurs multiprocesseurs
Exemples de machines mmoire commune (annes 80): HEP en 1981NYU en 1983 BBN Butterfly en 1985IBM RP3 en 1987
Technologie bien matrise Programmation concurrente (pas de distribution de donnes)
Pb: tranglement de la mmoire (nbre lev de processeurs)
) Limitation qlqs dizaines de processeurs
-
Introduction aux algorithmes et architectures parallles
12
1.2 Les ordinateurs multiprocesseurs
mmoire distribue : chaque processeur possde sa propre mmoire et peut communiquer avec les autres processeurs.
CPUCPU
CPUCPU
CPUCPU MEMMEM
CPUCPU
Rseau decommunication
MEMMEMMEMMEM
MEMMEM
Machine Machine mmmoire distribumoire distribue e
-
Introduction aux algorithmes et architectures parallles
13
1.2 Les ordinateurs multiprocesseurs
Exemples de machines mmoire distribue :
)Apparition du transputer en 1980 : un microprocesseur classique avec 4 liens spcialiss (intgrs sur sa puce) pour communiquer directement avec dautres transputers.
En 1985 : Inmos Inc machines T212, T44 et T800Echec du T9000 annonc pour 1994
-
Introduction aux algorithmes et architectures parallles
14
1.2 Les ordinateurs multiprocesseurs
Exemples de machines mmoire distribue :
)Machines bases sur les microprocesseurs de commerce
Intel Corp:1986 IPSC/1: hypercube 32-128 proc Intel 80286/871988 IPSC/2: hypercube (
-
Introduction aux algorithmes et architectures parallles
15
1.2 Les ordinateurs multiprocesseurs
Thinking Machines : le connexionisme = connecter un nombre trs lev de processeurs extrmement simples.1980 LICL DAP : tableau de 4096 procs 1-bit (MC =4K)
CM1 : grille de 65536 (256x256) processeurs 1-bit1988 CM2 : amlioration des procs
Et enfin en 1992 CM5 : massivement parallle conue pour atteindre une puissance > 1 TeraFLOPS !!!
-
Introduction aux algorithmes et architectures parallles
16
1.2 Les ordinateurs multiprocesseurs
hybrides : mmoire commune / mmoire partage
CPU CPU
CPU CPU
CPU CPU
CPU CPU MEM
MEM
Rseau decommunication
MEMCPU CPU
CPU CPU
CPU CPU
CPUMEM
CPU
Machines hybrides Machines hybrides
-
Introduction aux algorithmes et architectures parallles
17
1.2 Les ordinateurs multiprocesseurs
Les grilles
-
Introduction aux algorithmes et architectures parallles
18
PLAN1. Historique
2. Classification
3. Concepts de base de lalgorithmique parallle
4. Les sources du paralllisme
5. Modles de programmation Parallle
6. Techniques de Paralllisation
-
Introduction aux algorithmes et architectures parallles
19
2. Classification des machines parallles
Flynn (1966)
MIMDMISDMultiple
SIMDSISDSingle
MultipleSingleFlux de Donnes
Flux dInstructions
-
Introduction aux algorithmes et architectures parallles
20
2.1 SISD
-
Introduction aux algorithmes et architectures parallles
21
2.2 MIMD
-
Introduction aux algorithmes et architectures parallles
22
2.3 SIMD
-
Introduction aux algorithmes et architectures parallles
23
2.4 PIPLINE
-
Introduction aux algorithmes et architectures parallles
24
2.5 Le modle PRAM
Dfinition:
Une Parallel Random Access Machine (PRAM) est un ensemble de processeurs squentiels indpendants, des RAM, qui possdent chacun une mmoire prive et qui communiquent entre eux en utilisant une mmoire globale quils se partagent
-
Introduction aux algorithmes et architectures parallles
25
2.5 Le modle PRAM
Oprations fondamentales sur les PRAM:
Considrons une PRAM compose de p processeurs P0,Pp-1et de m positions mmoire M0 .. Mm-1. Chaque processeur peut faire:
Lire(Mi)Calculer(f)Ecrire(Mi)
Toutes ces oprations atomiques seffectuent de manire synchrone.
-
Introduction aux algorithmes et architectures parallles
26
2.5 Le modle PRAM
Variantes du modle PRAM:
4 variantes selon les accs la mmoire commune:
PRAM-EREW : Exclusive Read Exclusive Write PRAM-CREW : Concurrent Read Exclusive Write PRAM-ERCW : Exclusive Read Concurrent Write PRAM-CRCW : Concurrent Read Concurrent Write
Le cas CR ne pose pas de problme Problme pour CW
-
Introduction aux algorithmes et architectures parallles
27
2.5 Le modle PRAM
Stratgies possibles pour CW:
Conflit: dans le cas o plusieurs processeurs peuvent crire le contenu de la mme case mmoire 3 modles pour rsoudre ce conflit:
Modle commun : tous les procs doivent crire la mme valeur.Modle arbitraire : un quelconque proc crit sa valeurModle prioritaire : les procs sont classs suivant un ordre de priorit, seul le plus prioritaire accde la mmoire.
-
Introduction aux algorithmes et architectures parallles
28
PLAN1. Historique
2. Classification
3. Concepts de base de lalgorithmique parallle
4. Les sources du paralllisme
5. Modles de programmation Parallle
6. Techniques de Paralllisation
-
Introduction aux algorithmes et architectures parallles
29
3. Concepts de base
Lacclration:
Considrons un algorithme qui sexcute sur un ordinateur parallle comportant p processeurs (identiques) en un temps Tp, et soit T1 son temps dexcution squentiel.
Lacclration est dfinie par le rapport: Sp = T1/Tp
Gnralemnt on a : 1 Sp p
-
Introduction aux algorithmes et architectures parallles
30
3. Concepts de base
Lefficacit
Lefficacit dun algorithme parallle est le rapport:
Ep = Sp/p
-
Introduction aux algorithmes et architectures parallles
31
3. Concepts de base
Machine squentielle dupliquer la vitesse du processeur
diviser le temps de calcul par 2
Machine parallle dupliquer le nombre de processeurs
diviser le temps d'excution par 2
-
Introduction aux algorithmes et architectures parallles
32
3. Concepts de base
Loi dAmdhal
T1 = Tseq + Tpar
Sp (Ts + Tpar) / (Ts + Tpar/p)
Donc Sp T1/Tseq
Exemple: si 10% du programme est squentiel alors le facteur dacclration sera infrieur 10 quel que soit p.
-
Introduction aux algorithmes et architectures parallles
33
PLAN1. Historique
2. Classification
3. Concepts de base de lalgorithmique parallle
4. Les sources du paralllisme
5. Modles de programmation Parallle
6. Techniques de Paralllisation
-
Introduction aux algorithmes et architectures parallles
34
4.1 Le paralllisme de contrle dcoule de la constatation naturelle d'oprations
(tches) simultanes Exemple : (x+3)*(a+b)-(e-f)
4. Les sources du paralllisme
Calculer (x+3) et (a+b) et (e-f) puis (x+3)*(a+b) (not z) puis z-(e-f)
(x+3) (a+b) (e-f)
z
z-(e-f) 3 processeurs
3 units de temps
-
Introduction aux algorithmes et architectures parallles
35
Gnralement :-construire un graphe de dpendance- trouver le bon compromis entre le degrdu paralllisme et le temps total d'excution
Exemple 1:
a,b,c,d 4 vecteurs i [1..N] d(i) = a(i) - b(i)
c(i) = c(i-1) + a(i) + b(i) /* c(0) = 0 */
4. Les sources du paralllisme
-
Introduction aux algorithmes et architectures parallles
36
/* Programme squentiel en ADA */
PROCEDURE exemple1 IS-- Dclarations --BEGIN
c (0) := 0;FOR i IN 1..n LOOP
d(i) := a(i) - b(i)c(i) := c(i-1) + a(i) + b(i)
END FOR;END exemple1;
Les oprations a(i) - b(i) et a(i) + b(i) sont indpendantes
4. Les sources du paralllisme
-
Introduction aux algorithmes et architectures parallles
37
/* Paralllisme de contrle */
PROCEDURE exemple1 IS-- Dclarations --BEGIN
c (0) := 0;FOR i IN 1..n LOOP
PARBEGINd(i) := a(i) - b(i)t(i) := a(i) + b(i)
END PAR;c(i) := c(i-1) + t(i)
END FOR;END exemple1;
4. Les sources du paralllisme
-
Introduction aux algorithmes et architectures parallles
38
Exemple 2: somme de deux vecteurs A=B+CN : taille des vecteurs,P : nombre des processeurs
Programme pour la machine CRAY T3D, Fortran et PVM
Parameter (P=128) Parameter (N=1024)Parameter (Size=N/P)Parameter (Master=0)Real A(N), B(Size), C(Size)Integer MyPE, Ok
4. Les sources du paralllisme
-
Introduction aux algorithmes et architectures parallles
39
Call pvmfmyTid(MyPE)DO I = 1, Size
A(I) = B(I) + C(I)ENDDOIF (MyPE .EQ. Master) THEN
DO I =1, P-1Call pvmfRecv (I,1,Ok)Call pvmfUnpack (real8, A(I*Size),Size,1,Ok)
ENDDOELSE
Call pvmfInitsend (pvmRaw,Ok)Call pvmfPack (real8, A(1), Size, 1, Ok)Call pvmfSend (Master,1,Ok)
ENDdIF
4. Les sources du paralllisme
-
Introduction aux algorithmes et architectures parallles
40
4.2 Le paralllisme de donnes :
- rpter une action (programme) sur des donnes similaires
- les programmes d'algbre linaire font intensivementdes oprations portant sur des grandes matrices.
diviser ces grands volumes de donnes en morceaux qui seront traits par diffrentes units de calcul.
Typiquement: les ordinateurs vectoriels
Exemple 3:produit de deux matrices nxn C=A*B
4. Les sources du paralllisme
-
Introduction aux algorithmes et architectures parallles
41
-- Programme squentiel en ADA -- N : CONSTANT integer := 1024;PROCEDURE Produit_Mat (A,B: in Matrice; C: out matrice) ISBEGINFOR i IN 1 .. N LOOP
FOR j IN 1 .. N LOOPC(i,j) := 0.0;FOR k IN 1..N LOOP
C(i,j) := C(i,j) + A(i,k)*B(k,j);END FOR;
END FOR;END FOR;END Produit_Mat;
temps d'excution : O(N3 )
4. Les sources du paralllisme
-
Introduction aux algorithmes et architectures parallles
42
-- Programme vectoris --PROCEDURE Produit_Mat (A,B: in Matrice; C: out matrice) ISTYPE Vecteur IS ARRAY (1..N) OF float;T : Vecteur;BEGINFOR i IN 1 .. N LOOP
FOR j IN 1 .. N LOOPT(1:N) := Vmul ( A(i,1:N), B(1:.N,j) )C(i,j) := Vsum(T(1:N))
END FOR;END FOR;END Produit_Mat;
temps d'excution O(N2) avec des registres de taille NPb: taille des registres
4. Les sources du paralllisme
-
Introduction aux algorithmes et architectures parallles
43
-- Code pour pour machine MIMD a mmoire partage -- N : CONSTANT integer := 1024;PROCEDURE Produit_Mat (A,B: in Matrice; C: out matrice) ISBEGINFORALL i IN 1 .. N LOOP
FORALL j IN 1 .. N LOOPC(i,j) := 0.0;FOR k IN 1..N LOOP
C(i,j) := C(i,j) + A(i,k)*B(k,j);END FOR
END ALL;END ALL;END Produit_Mat;
temps d'excution O(N) avec N2 processeursPb: tranglement de la mmoire
4. Les sources du paralllisme
-
Introduction aux algorithmes et architectures parallles
44
-- Code pour pour machine MIMD-DM N2 processeurs --Processeur IS p;N : CONSTANT integer := 1024;.PROCEDURE Produit_Mat (A,B: in Vecteur; C: out float) ISBEGIN
C := 0.0;FOR k IN 1..N LOOP
C := C + A(k)*B(k);END FOR;
.END Produit_Mat;
Chaque processeur doit possder une copie localede la ligne i de A et la colonne j de B
4. Les sources du paralllisme
-
Introduction aux algorithmes et architectures parallles
45
Pb: P < N2 chaque proc. calcule m elts (C(1..m,j))
P < N chaque proc. calcule au moins une ligne de C une copie locale de toute la matrice B
trs coteuse en mmoire et communications(si B est rsultat d'un autre calcul)
4. Les sources du paralllisme
-
Introduction aux algorithmes et architectures parallles
46
Chaque proc calcule mxm elts, m = N/P
*=
C A B
m
m
Premire solution: m ligne de A + m colonnes de B pas de communications Qt de mmoire pour stocker A et B = 2(P)N2
Exple: si P = 256, 16 copies de A et de B
4. Les sources du paralllisme
-
Introduction aux algorithmes et architectures parallles
47
Pbs:
- Occupation mmoire- Communication (cas d'enchanement de plusieurs calculs)
De prfrence: une seule copie de A et B avec une rpartition qui minimiserait le volume de communication durant le calcul
4. Les sources du paralllisme
-
Introduction aux algorithmes et architectures parallles
48
chaque proc calcule m2 elts (N-1 additions +N multip pour 1 elt)
Rapport comm/calcul = 2(P-1)/(2N-1)Exple: N=1024 et P = 256, le rapport = 0.016
Deuxime solution : rpartir A et B de la mme faon que C
non ncessit de redistribution des donnes (cas de succession de calcul)
Communication pour chercher les parties manquantes
Volume de comm. = 2(mN-m2)=2N2((P)-1)/P
4. Les sources du paralllisme
-
Introduction aux algorithmes et architectures parallles
49
Pb. Ouvert: distribution automatique des donnes
L'exploitation du paralllisme de donnes sur des architectures MIMD mmoire distribue ncessite principalement unedistribution judicieuse des donnes afin de minimiser le rapport communications/calculs.
4. Les sources du paralllisme
-
Introduction aux algorithmes et architectures parallles
50
4.3 Le paralllisme de flux
Principe : fonctionnement selon le schma du travail la chane(en mode pipeline)
typiquement: appliquer des donner une fonction F tqF(x) = F1(F2(F3(...Fp(x))))
Sur N donnes:acclration = NP/(N+P)
Paralllisme limit : borne max de l'acclration est P
4. Les sources du paralllisme
-
Introduction aux algorithmes et architectures parallles
51
PLAN1. Historique
2. Classification
3. Concepts de base de lalgorithmique parallle
4. Les sources du paralllisme
5. Modles de programmation Parallle
6. Techniques de Paralllisation
-
Introduction aux algorithmes et architectures parallles
52
1. Paralllisme implicite
2. Utilisation de bibliothques
3. Dvelopper un langage parallle nouveau
4. tendre un langage squentiel existant
Pb: la programmation parallle n'est jamais totalement indpendante de l'architecture sous-jacente.
Quatre approches courantes de la programmation parallle
5. Modles de programmation parallle
-
Introduction aux algorithmes et architectures parallles
53
5. Modles de programmation parallle
5.1. Paralllisme implicite
Principe:
C'est le compilateur qui transforme le programme squentiel en un programme parallle quivalent.
Avantages:
simplicit vis--vis du programmeur rcupration de la base norme de programmes squentiels indpendance par rapport l'architecture de la machine
-
Introduction aux algorithmes et architectures parallles
54
Problmes :
restriction la paralllisation de structures rgulires (nids de boucles)
le rsultat de la paralllisation dpend fortement de la faon avec laquelle le programme squentiel est crit.
limites des compilateurs parallliseurs
5. Modles de programmation parallle
-
Introduction aux algorithmes et architectures parallles
55
5.2. Utilisation de bibliothques
Principe: utiliser un langage squentiel classique conjointementavec une bibliothque de primitives parallles pour les routinestrs couramment utilises.
ne pas trop perturber les habitudes des programmeurs.
5. Modles de programmation parallle
-
Introduction aux algorithmes et architectures parallles
56
Exemples:
ScaLapack : version parallle de Lapack(routines de base pour la rsolution de syst d'quations linaires)
PBLAS: version parallle (Basic Linear Algebra Subprograms)
Approche essentiellement limite aux gros calculs scientifiquesdu type rsolution de systmes d'quations linaires.
5. Modles de programmation parallle
-
Introduction aux algorithmes et architectures parallles
57
5.3. tendre un langage parallle
Principe: un langage squentiel classique est tendu avec des primitives permettant l'expression explicite du paralllisme.Exples: Fortran90, HPF
vite la redfinition complte d'un langage et du compilateurGnralement, les fabricants de machines parallles fournissentune librairie de primitives parallles avec diffrents langages (C et/ou Fortran).
Exemples: PVM (parallel Virtual Machine) MPI (Message passing Interface)
5. Modles de programmation parallle
-
Introduction aux algorithmes et architectures parallles
58
Fortran90
apporte des amliorations au langage Fortran77.
possde des primitives qui permettent d'exprimer leparalllisme de donnes.
Exemples: MAXVAL, SUM, MAXLOC,
Ces primitives permettent au compilateur Fortran90 de gnrer du code paralllis.
5. Modles de programmation parallle
-
Introduction aux algorithmes et architectures parallles
59
toutes les oprations binaires ou unaires peuvent tre faites sur des tableaux
Exemple:real A(10,20), B(10,20)logical L(10,20)A = A + 1.0A = SQRT (A)L = A .EQ. BA(1,1:5) = B(1,1:9:2) + B(1,2:10:2)
Pb:do i = 1,100
C(i,i) = 0.0enddo
5. Modles de programmation parallle
-
Introduction aux algorithmes et architectures parallles
60
HPF (High Performance Fortran)
extension du langage Fortran90 avec:
des directives pour la distribution des donnes
l'instruction FORALL
la directive INDEPENDENT
de nouvelles fonctions prdfinies
5. Modles de programmation parallle
-
Introduction aux algorithmes et architectures parallles
61
Tableau Tableaux Processeurs abstraits
Ordinateur
ALIGN DISTRIBUTE Mapping(compilateur)
5. Modles de programmation parallle
-
Introduction aux algorithmes et architectures parallles
62
ALIGN B(I)WITH A(I)
ALIGN C(I)WITH A(2*I)
B
A
C
A
5. Modles de programmation parallle
-
Introduction aux algorithmes et architectures parallles
63
DISTRIBUTEA(BLOCK)
A
P1
A
P2 P3 P4
P1 P2 P3 P4
DISTRIBUTEA(CYCLIC)
5. Modles de programmation parallle
-
Introduction aux algorithmes et architectures parallles
64
Exemple !HPF$ PROCESSORS P(4)!HPF$ ALIGN B(I+2) WITH A(I)!HPF$ ALIGN C(2*I) WITH A(I)!HPF$ DISTRIBUTE A(BLOCK) ONTO P!HPF$ FORALL (I=1:N) A(I) = B(I+2) + C(2*I)
!HPF$ FORALL (I=1:N) X(I,I) = 0.0!HPF$ FORALL (I=1:N,J=1:N,I
-
Introduction aux algorithmes et architectures parallles
65
MPI (Message Passing Interface)
Exprimer explicitement le paralllisme de donnes
Bibliothque standard de primitives de programmation desmachines parallles mmoire distribue
Grer explicitement toutes les communications par envoi/rception de messages.
Plus de 200 primitives
5. Modles de programmation parallle
-
Introduction aux algorithmes et architectures parallles
66
MPI (Message Passing Interface) http://www.mpi-forum.org
Exprimer explicitement le paralllisme de donnes
Bibliothque standard de primitives de programmation desmachines parallles mmoire distribue
Grer explicitement toutes les communications par envoi/rception de messages.
Plus de 200 primitives
5. Modles de programmation parallle
-
Introduction aux algorithmes et architectures parallles
67
Modle de programmation par change de messages : chaque processus excute ventuellement des parties diffrentes d'un programme ; toutes les variables du programme sont prives et rsident dans la mmoire locale de chaque processus ; une donne est change entre deux ou plusieurs processus via un appel, dans le programme, des primitives particulires.
5. Modles de programmation parallle
-
Introduction aux algorithmes et architectures parallles
68
Modle d'excution SPMD : Single Program, Multiple Data
le mme programme s'excute pour tous les processus
5. Modles de programmation parallle
-
Introduction aux algorithmes et architectures parallles
69
Programme MPI
- Style de programmation SPMD
Un fichier source -> un excutable qui sera lanc plusieurs foisPoint dentre du fichier :
fonction C main
-MPI = une bibliothque quil faut initialiser
MPI_Init() : au dbut de lexcution du programme
MPI_Finalize() : la fin de lexcution du programme
5. Modles de programmation parallle
-
Introduction aux algorithmes et architectures parallles
70
Un premier exempleProgramme HelloWorld : fichier hello.c1. #include 2. #include 3. int main (int argc, char** argv) {4. MPI_Init( &argc, &argv );5. printf("HelloWorld\n ");6. MPI_Finalize();7. return 0;8. }Compilation :
mpicc -o hello hello.cSur lIBM-SP
mpcc -o hello hello.c
5. Modles de programmation parallle
-
Introduction aux algorithmes et architectures parallles
71
Lancement : mpirunCommande :
mpirun -np helloSur lIBM-SP : poe hello -procs -msp_api MPITrace dexcution sur 1 noeud
> mpirun -np 1 hello> HelloWorld
Trace dexcution sur 3 noeuds>mpirun -np 3 hello>HelloWorld>HelloWorld>HelloWorld
5. Modles de programmation parallle
-
Introduction aux algorithmes et architectures parallles
72
Communicateur MPI
- Au lancement dun programme MPI
Tous les processus appartient au mme groupeCest le communicateur MPI
-MPI_COMM_WORLD : nom du communicateur au lancement
Chaque processus possde un identificateur dans ce groupeCest le rang du processus :
- valeur de 0 #nodes-1
5. Modles de programmation parallle
-
Introduction aux algorithmes et architectures parallles
73
Illustration mpirun -np 7 hello
MPI_COMM_WORLD
5. Modles de programmation parallle
-
Introduction aux algorithmes et architectures parallles
74
HelloWorld bis1. #include 2. #include 3. int main (int argc, char** argv) {4. int rank;5. int size;6. MPI_Init( &argc, &argv );7. MPI_Comm_rank( MPI_COMM_WORLD, &rank );8. MPI_Comm_size( MPI_COMM_WORLD, &size );9. printf("HelloWorld, my rank is %i in group ofsize %i\n", rank, size);10. MPI_Finalize();11. return 0;12. }
5. Modles de programmation parallle
-
Introduction aux algorithmes et architectures parallles
75
Traces possibles dexcution
- Traces dexcution sur 3 noeuds
>mpirun -np 3 hello
> HelloWorld, my rank is 0 in group of size 3> HelloWorld, my rank is 1 in group of size 3> HelloWorld, my rank is 2 in group of size 3
> mpirun -np 3 hello
> HelloWorld, my rank is 2 in group of size 3> HelloWorld, my rank is 0 in group of size 3> HelloWorld, my rank is 1 in group of size 3
5. Modles de programmation parallle
-
Introduction aux algorithmes et architectures parallles
76
Concepts de l'change de messages
Si un message est envoy un processus, celui-ci doit
ensuite le recevoir
5. Modles de programmation parallle
-
Introduction aux algorithmes et architectures parallles
77
La donne dun message MPI-Les donnes dans un message envoy ou reu sont dcritespar un triplet : (address, count, datatype), o :- address : ladresse (un pointeur)- count : le nombre dlments de type datatype- datatype : un nom de type MPI pour les donnes-Exemples de type MPI prdfini (non exhaustif) etassociation avec C
char, unsigned charint, unsigned intlong, unsigned longfloat, doublepacket doctet (void*)
C/C++MPI_CHAR, MPI_UNSIGNED_CHARMPI_INT, MPI_UNSIGNED_INTMPI_LONG, MPI_UNSIGNED_LONGMPI_FLOAT, MPI_DOUBLEMPI_PACKED
MPI
5. Modles de programmation parallle
-
Introduction aux algorithmes et architectures parallles
78
Les tags des messages MPI
- Tous les messages envoys sont accompagns dune tiquette ou tag (valeur entire) qui sert au rcepteur identifier un message
-Le processus rcepteur doit spcifier quil attend la rception dun message en prcisant un tag :
1. En donnant une valeur entire2. En donnant la valeur MPI_ANY_TAG qui correspond toute les valeurs
5. Modles de programmation parallle
-
Introduction aux algorithmes et architectures parallles
79
La primitive de base : MPI_Send
MPI_Send (buffer, count, datatype, dest, tag, comm)
Envoi un message de donne (buffer, count, datatype) au noeudde rang dest, avec le tag tag dans le communicateur comm.
Spcification MPI : quand cette fonction retourne- la donne peut alors tre rutilise- la donne a t communique MPI pour envoi,- MAIS la donne nest peut tre pas encore reue par le
processus rcepteur Entre deux processus, les communications dans MPI sont FIFO
5. Modles de programmation parallle
-
Introduction aux algorithmes et architectures parallles
80
Exemple : MPI_Send
-Exemple : envoi dun entier au processus de rang 0
1. int integer = 31415;2. int tag = 37;3. MPI_Send( &integer, 1, MPI_INT, 0, tag, MPI_COMM_WORLD );
-Exemple : envoi dun tableau de float
1. float array [256]; /* plus initialisation */2. int tag = 39;3. MPI_Send( array, 128, MPI_FLOAT, 0, tag, MPI_COMM_WORLD );
5. Modles de programmation parallle
-
Introduction aux algorithmes et architectures parallles
81
La primitive de base : MPI_Recv
MPI_Recv (buffer, count, datatype, dest, tag, comm, status)
Rception un message de donne (buffer, count,datatype) provenant du noeud de rang dest, avec le tag tag dans le communicateur comm, ltat de la rception est stock dans statusSpcification MPI : quand cette fonction retourne
- La donne est reue et peut alors tre utilise- Le tableau reu peut tre de taille moindre que count- Le nombre dlments du tableau reu est stock dans status
5. Modles de programmation parallle
-
Introduction aux algorithmes et architectures parallles
82
Exemple : MPI_Recv
-Exemple : rception dun entier du noeud de rang 2
1. int integer;2. int tag = 37;3. MPI_Status status;4. MPI_Recv( &integer, 1, MPI_INT, 2, tag, MPI_COMM_WORLD, &status );
-Exemple : rception dun tableau de float 1. float array [256];2. int tag = 39;3. MPI_Recv( array, 128, MPI_FLOAT, 2, tag, MPI_COMM_WORLD, &status );
5. Modles de programmation parallle
-
Introduction aux algorithmes et architectures parallles
83
Modes de Communication
1.standard : l'utilisateur peut modifier la donne ds le retour du sous-pogramme. Il est la charge de MPI d'effectuer ou non une recopie temporaire du message. Si c'est le cas, l'envoi se termine avant que la rception ne soit poste.
2.synchroneous : l'envoi du message ne se termine que si la rception a t poste et la lecture du message termine. C'est un envoi coupl avec la rception.
3.buffered : il est ventuellement la charge du programmeur d'effectuer une recopie temporaire du message. L'envoi est ainsi dcoupl de la rception.
4.ready : l'envoi du message ne peut commencer que si la rception a t poste auparavant (ce mode est intressant pour les applications clients-serveurs).
5. Modles de programmation parallle
-
Introduction aux algorithmes et architectures parallles
84
Exemple
Envoi non bloquant avec recopie temporaire du message : MPI_IBSEND()
5. Modles de programmation parallle
-
Introduction aux algorithmes et architectures parallles
85
Exemple
Envoi synchrone bloquant : MPI_SSEND()
5. Modles de programmation parallle
-
Introduction aux algorithmes et architectures parallles
86
OpenMP
http://www.openmp.org
Modle de programmation parallle standard pour machines MIMD-SM
Portabilit des programmes sur les machines MIMD- SM
tendre C, C++ et Fortran par un ensemble de primitives et de directives de paralllisme SPMD, partage et privatisation de donnes, de synchronisation
5. Modles de programmation parallle
-
Introduction aux algorithmes et architectures parallles
87
Exemple:#pragma parallel#pragma local (i)#pragma shared (a,b,c)#pragma pforfor (i=1;i
-
Introduction aux algorithmes et architectures parallles
88
PLAN1. Historique
2. Classification
3. Concepts de base de lalgorithmique parallle
4. Les sources du paralllisme
5. Modles de programmation Parallle
6. Techniques de Paralllisation
-
Introduction aux algorithmes et architectures parallles
89
6. Techniques de Paralllisation
1. Paralllisation des instructions simples
Problme de dpendance :3 types de dpendances Dpendance de flux (ou producteur consommateur)
S1: x := y+1S2: z := x * b on note S1 S2
Antidpendance (ou consommateur producteur)S1: y:= x+3S2: x := z * b on note S1 S2
Dpendance de sortie (ou producteur producteur)S1: x := c+dS2: x := z * b on note S1 S2
-
Introduction aux algorithmes et architectures parallles
90
6. Techniques de Paralllisation
Relation de Bernstein
Deux instructions S1 et S2 sont en dpendance
(E1 S2) (S1 E2) (S1 S2)
Ei = ensemble des entres de linstruction SiSi = ensemble des sorties de linstruction Si
-
Introduction aux algorithmes et architectures parallles
91
6. Techniques de Paralllisation
2. Paralllisation des nids de boucles
Objectif :
Parallliser les diffrents itrations d'un nid de boucles
Mthodologie:
* Analyse des dpendances* Restructuration du programme initial
-
Introduction aux algorithmes et architectures parallles
92
Exemple: (distribution de boucles)Do i = 1,n
S1: a(i) = 2*b(i)S2: c(i) = d(i)*a(i+1)
End DoS2(i) S1(i+1)
Doall i = 1,n
c(i) = d(i)*a(i+1)End DoallDoall i = 1,n
a(i) = 2*b(i)End Doall
6. Techniques de Paralllisation
-
Introduction aux algorithmes et architectures parallles
93
Exemple:Do i = 1,n
S1: a(3*i-1) = 2*b(i)S2: c(i) = d(i)*a(6*i+1)
End Do
3*i - 6*j = 2 n'admet pas de solutions
Doall i = 1,n
S1: a(3*i-1) = 2*b(i)S2: c(i) = d(i)*a(6*i+1)
End Doall
6. Techniques de Paralllisation
-
Introduction aux algorithmes et architectures parallles
94
Exemple: (Allen et Kennedy)
Do i = 1,nDo j = 1,m
S1: a(i,j) = b(i,j)S2: b(i,j) = b(i,j) + a(i,j-1)
End DoEnd Do
S1 S20
1
1
Graphe de dpendancerduit
6. Techniques de Paralllisation
-
Introduction aux algorithmes et architectures parallles
95
Rsultat:
DOALL i = 1,nDOALL j = 1,m
a(i,j) = b(i,j)ENDDOALLDOALL j = 1,m
b(i,j) = b(i,j) + a(i,j-1)ENDDOALL
ENDDOALL
6. Techniques de Paralllisation
-
Introduction aux algorithmes et architectures parallles
96
Le modle polydrique :
Principe Programme source
Polytope sourceTransformation espace/temps
Polytope destination
Programme destination
6. Techniques de Paralllisation
-
Introduction aux algorithmes et architectures parallles
97
ExempleDo i = 1,5
Do j = 1,5a(i,j)=a(i,j)*a(i+1,j-1)
End DoEnd Do
j
i
54321
1 2 3 4 5j
6. Techniques de Paralllisation
-
Introduction aux algorithmes et architectures parallles
98
t(i,j) = i
j
i
0 1 2 3 4
p(i,j) = i+j
j
i
4 5 6 7 8
3210
6. Techniques de Paralllisation
-
Introduction aux algorithmes et architectures parallles
99
Polytope source : Ax
-
Introduction aux algorithmes et architectures parallles
100
Programme destination:
(i,j) = T-1 (t,p)
DO t=0,4DOALL p = t, t+4
a(t,p-t)=a(t,p-t)*a(t+1,p-t-1)END DOALL
END DO
6. Techniques de Paralllisation
-
Introduction aux algorithmes et architectures parallles
101
j
t
43210
0 1 2 3 4 p
8765
6. Techniques de Paralllisation