introd aux algorith et architect paralèlles.pdf

101
Introduction aux algorithmes et architectures parallèles 1 Introduction aux algorithmes et architectures parallèles Chaire UNESCO Calcul Numérique Intensif TUNIS - Février 2004 Mohamed JEMNI École Supérieure des Sciences et Techniques de Tunis

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