73
27/09/2018 1 Systèmes et traitements parallèles Mohsine Eleuldj Département Génie Informatique, EMI [email protected] Octobre 2018 2 Motivation A l’aide d’un ordinateur classique : La prévision météorologique du lendemain prend une semaine ! La détection d’un missile dans un espace aérien prend 12 minutes sachant que le missile peut atteindre sa cible en 10 minutes ! La supervision d’une centrale nucléaire (détection de la température, pression,…) prend deux secondes sachant que si un paramètre dépasse un seuil pendant une seconde, la centrale explose ! Solution : Traitement parallèle ou HPC (High Performance Computing) Accélération des calculs (application de calcul intensif) Réduction du temps d’accès aux données (application traitant un ensemble immense de données). Réduction des temps de réponse (application temps réel). Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

1

Systèmes et traitements parallèles

Mohsine Eleuldj

Département Génie Informatique, EMI

[email protected]

Octobre 2018

2

Motivation

A l’aide d’un ordinateur classique :• La prévision météorologique du lendemain prend une semaine !• La détection d’un missile dans un espace aérien prend 12 minutes sachant

que le missile peut atteindre sa cible en 10 minutes !• La supervision d’une centrale nucléaire (détection de la température,

pression,…) prend deux secondes sachant que si un paramètre dépasse un seuil pendant une seconde, la centrale explose !

Solution : Traitement parallèle ou HPC (High Performance Computing)

• Accélération des calculs (application de calcul intensif)• Réduction du temps d’accès aux données (application traitant un ensemble

immense de données).• Réduction des temps de réponse (application temps réel).Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 2: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

2

3

Objectifs et plan du cours

Objectifs• Etudier les architectures des systèmes parallèles.• Déterminer leurs performances afin de pouvoir les prévoir et les améliorer.• Apprendre à concevoir des applications parallèles.• Programmer en utilisant les standards open source OpenMP et MPI.

ContenuI. Introduction au traitement parallèleII. Pipeline et traitement vectorielIII. Réseaux d’interconnexionIV. Analyse des performances des systèmes parallèlesV. Applications parallèles (OpenMP et MPI)

Evaluation : TP (30%) + Contrôle avec documentation (70%)

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

4

Chapitre IIntroduction au traitement parallèle

• Quelques applications parallèles

• Evolution des systèmes d’ordinateurs

• Evolution de la densité d’intégration

• Définition et niveaux de parallélisme

• Parallélisme dans un système monoprocesseur

• Classifications des ordinateurs parallèles

• Classement des superordinateurs (Top 5, juin 2018)

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 3: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

3

5

Quelques applications parallèles

• Prévision météorologique• Réactions chimique et nucléaire (temps réel)• Activités géologique et sismique• Simulation des circuits intégrés • Moteur de recherche du Web • Exploration minière (pétrole, …) • Réalité virtuelle (simulation de vol d’avion, entertainment

industry, …) • Réalité augmentée (superposition de la réalité et d’éléments de

son, image, vidéos,…)• Génomique (Biologie à l’échelle du génome)• Big Data (données massives)Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

6

Evolution des systèmes d’ordinateurs

• Technologie de fabrication : commutation implantée par des relais électromécanique, tube à vide, transistors (1947), diodes, circuits électroniques, mémoire à tore (électromagnétisme), SSI (Small Scale Integration), MSI (Medium), LSI (Large) et VLSI (Very Large), ULSI (Ultra) et WSI (Wafer).

• Processeur : arithmétique bit à bit (additionneur à 1 bit), virgule fixe, virgule flottante, coprocesseur scientifique, multiprocesseurs, processeur multi-core, plusieurs niveaux de mémoire cache (3 à 7), GPU, GPGPU,…

• Système d’exploitation : traitement par lot, multiprogrammation, temps partagé, mémoire virtuelle, multitraitement, multithreading,...

• Langage de programmation : langage machine binaire, langage d’assemblage, Fortran (1956), Algol (1960), Cobol (1959), Pascal (1980), Fortran étendu (vectoriel), Snobol (chaîne de caractères), Lisp et Prolog (IA), C, C++ (Orienté objet), Concurrent C, Python, Java,...

• Bibliothèque (Library) : mathématique, graphique, statistique, apprentissage automatique, parallélisation (OpenMP, MPI),…

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 4: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

4

7

Evolution de la densité d’intégration

Processeur Année Transistors Technologie

4004 1970 2,3 K 6μm

8088 1980 29 K 3μm

80286 1983 134 K 2μm

80386 1985 275 K 2μm

80486 1989 1,2 M 1μm

Pentium 1995 3,3M 350 nm

PentiumPro 1996 5,5M 250 nm

Pentium II 1997 7,5 M 180 nm

Pentium III 1999 9,5 M 130 nm

Pentium IV 2003 42 M 90 nm

i7-3770K 2008 1,4 G 22 nm

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

8

Intel Core i7-3770K160 mm2, 22 nm, 1,4 G transistors et 3,4 GHz

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 5: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

5

9

Traitement parallèle

Définition du traitement parallèle : Exploitation d'événements concurrents • Concurrence : parallélisme, simultanéité et pipeline• Parallélisme : événements se produisant pendant le même intervalle de temps• Simultanéité : événements se produisant dans le même instant• Pipeline : événement se produisant pendant des intervalles de temps chevauchés

Niveaux du traitement parallèle• Travail ou programme (multiprogrammation, temps partagé, multitraitements)• Tâche ou procédure (décomposition du programme)• Inter-instruction (analyse de la dépendance des données) vectorisation• Intra-instruction (au niveau de la micro-programmation) ou du câblage

Constatation : de plus en plus le matériel remplace le logiciel • Miniaturisation et réduction du coût • Augmentation de la vitesse (temps réel)• Augmentation de la fiabilité et la tolérance au pannes

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

10

Parallélisme dans un monoprocesseur

• Multiplicité des unités fonctionnelles (10 UAL dans le CDC-6600)

• Parallélisme et pipeline dans le CPU (processeur)

• Pipeline entre le CPU et des E/S (canaux, DMA, E/S programmées)

• Système de hiérarchie de mémoire (mémoire virtuelle)

• Equilibrage des tâches bornées par le calcul (calcul intensif ) et celles bornées par les E/S (communications intensives)

• Multiprogrammation (chevauchement entre le CPU et les E/S)

• Temps partagé (Time sharing) : efficace pour les applications interactives temps réel

Tous ces mécanismes sont pris en charge (propres) par les systèmes d’exploitation

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 6: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

6

11

Classification des ordinateurs parallèles

Classification structurelle• Système à mémoire distribuée (Tableau de processeurs)

• Système à mémoire partagée (Multiprocesseurs)

Classification de Flynn (1966) • SISD : Single Instruction Single Data stream (ordinateur conventionnel)

• SIMD : Single Instruction Mulitple Data stream (Cray1: ordinateur vectoriel)

• MISD : Multiple Instruction Single Data stream (peu d’implémentation)

• MIMD : Multiple Instruction Multiple Data stream (Cray 2, MPP)

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

12

Classification structurelleSystème à mémoire distribuée

UC : Unité de ContrôlePC : processeur de contrôleMC : mémoire de contrôleET : Elément de traitementP : processeurM : mémoire locale.

PC

MC

P

M

P

M

P

M

P

M

Réseau d’interconnexion

Exemples : Illiac IV et MPP (Massively Parallel Processors)

E/S

ET1 ET2 ET3 ETn

UC

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 7: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

7

13

Classification structurelleSystème à mémoire partagée

Exemples : S-1, IBM370/168MP, Cray X-MP et Cray-2.

MM 1

Réseau d’interconnexion

Réseau d’interconnexionMM 2

MM n

P1 ML1Pp MLp

E/S

MM : module mémoireP : processeurML : mémoire locale

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Mémoirepartagée

…..

…..

14

Classification de Flynn : SISD

Le système peut être pipeline et/ou avoir plus d'une unité fonctionnelle (une seule unité fonctionnelle pour VAX11/780 et plusieurs unités pour IBM370/168)

P : ProcesseurM : MémoireFI : Flot d'instructionsFD : Flot de données

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

UC P M

FI

FI FD

Page 8: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

8

15

Classification de Flynn : SIMD

Systèmes qui ont une structure de tableaux d'ordinateurs (Illiac IV et MPP)

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

UC

Pn MmFI

FI

FDn

P1 M1

FD1

P2

FD2

.

.

....

UC : Unité de contrôleP : ProcesseurM : MémoireFI : Flot d'instructionsFD : Flot de données

16

FI1FInFD

Classification de Flynn : MISD

Architecture ayant moins d’intention et considérée comme impraticable par certains architectes

Pn

Mm

FIn

P1

M1

FD

P2

M2...

...

UCn

UC1

UC2

.

.

.

FI2

FI1

... FI2

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 9: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

9

17

FI2

FI1

FIn

FD2

FD1

FDn

FI2

FI1

Classification de Flynn : MIMD

Exemples : IBM 360/16 MP, Cray-2, IBM 3081/3084 et S-1

Pn

FIn

P1 DSn

P2

.

.

.

UCn

UC1

UC2

.

.

.

Mm

M1

M2

.

.

.

.

.

.

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

18

Classement des superordinateurs(http://www.top500.org/lists/2018/06)

Kilo =103, Méga =106, Giga =109, Tera = 10 12, Peta = 1015

Rang Système Constructeur Nombre de cores

Performance(Pflops)

Puissance(KW)

1 SummitIBM,United States

2 282 544 122 8 806

2SunwayTaihuLight

Sunway,China

10 649 600 93 15 371

3 SierraIBM,United States

1 572 480 72 ?

4 Tiahe-2ANUDT,China

4 981 760 61 18 482

5 ABCIFujitsu,Japan

391 680 19 1 649

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 10: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

10

19

A propos de Summit d’IBM

supercomputer now running at the Department of Energy’s (DOE) Oak Ridge National Laboratory (ORNL), captured the number one spot with a performance of 122.3 petaflopson High Performance Linpack (HPL), the benchmark used to rank the TOP500 list. Summit has 4,356 nodes, each one equipped with two 22-core Power9CPUs, and six NVIDIA Tesla V100 GPUs. The nodes are linked together with a Mellanox dual-rail EDR InfiniBand network.

Exercice :• Quel est le nombre de CPU et de GPU ?• Quel est le nombre de cores dans un GPU ?• Dessiner une architecture de ce superordinateur.

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

20

Principe général de la parallélisation

Diviser-pour-régner de parallélisation• Décomposition du problème en plusieurs sous-problèmes (processus, threads,

tâches,…)• Répartition (allocation) des sous-problèmes sur les différents cores ou

processeurs selon le modèle maître/esclave, arborescent,...• Possibilité de partage de la mémoire (mémoire partagée) ou échange de

messages (mémoire distribuée) au cours du traitement• Combinaison des résultats des sous-problèmes afin de résoudre le problème

de départ

Alternance entre le traitement séquentiel et parallèle

Exemples : Fork/Join et mapReduce

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 11: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

11

21

Exercice Exemple de parallélisation

Considérons l’évaluation du polynôme p(x) en un point donné.

p(x) = a4x4 + a3x3 + a2x2 + a1x + a0

Sur 3 systèmes différents : 1, 2 et 4 processeurs. Supposons qu’une addition et

une multiplication prennent 1 et 4τ (τ : cycle d’horloge).

a) En supposons que le temps de communication (transfert) est négligeable devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x0) sur les 3 systèmes.

b) Avez-vous choisi le meilleur algorithme dans le cas d’un seul processeur ?

c) En supposons que les processeurs sont interconnectés à l’aide d’un bus et

qu’une communication prend 1 10τ, estimer le temps d’exécution.

d) Généraliser ces résultats pour un polynôme de degré n.

Problématiques : décomposition, affectation (équilibre des charges), communication, analyse de la complexité des l’algorithmes, ….

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

22

Chapitre IIPipeline et traitement vectoriel

• Pipeline• Principe du pipeline• Exemples du pipeline unidimensionnel

• Exécution d’un programme• Addition des nombres en virgule flottante

• Ordinateur pipeline• Pipeline bidimensionnel (Produit matriciel)

• Traitement vectoriel• Ordinateurs vectoriels• Cray-1• Vectorisation

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 12: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

12

23

Principe du pipeline

Hypothèses : Ei : étage i (1≤ i ≤ k), T : tampon et H : horloge

Temps(Ei) = τi, Temps(T) = τ0 et τ = max{1 ≤ i ≤ k, τi} + τ0

n tâches, T1 et Tk : temps sans et avec pipeline de k étages

Tk = τ0 + kτ + (n - 1)τ = (k + n - 1)τ + τ0

Supposons que T1 = nkτ Rendement = T1/Tk = nkτ/ [(k + n - 1) τ + τ0] ≈ nk/(k+n - 1)

Concept : chaîne de montagne dans une usineObjectif : amélioration des performances

E1 E2 Ektâches T T TT T

H

H H H H

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

24

Exemple : Exécution d’un programme

• Exécution d'une instruction.• CI : Chercher l'instruction de la mémoire• DI : Décoder l'instruction• CO : Chercher les opérandes• EO : Exécuter l'opération

• Problème :• conflit d’accès à la mémoire• branchement et interruption

• Avantage : exécution de la même instruction plusieurs fois (traitement vectoriel)

• Ordinateurs pipeline : IBM3838, CRAY-1, CYBER-205.

CI DI CO EOProgramme(instructions)

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 13: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

13

25

Exemple : Addition des nombres représentés en virgule flottante

Entrée : deux nombres en virgules flottante normalisée.

A = a x 2p et B = b x 2q

a et b : matisses et p et q : exposants.

On veut calculer :

A + B = c x 2r = d x 2s où r = max(p.q) et 0,1 ≤ d < 1.

Exemple : A = 0,101 x 28 et B = 0,1101 x 29

A + B = 0,101 x 28 + 0,1101 x 29

= 0,0101 x 29 + 0,1101 x 29 -- réduction au même exposant

= 1,0010 x 29 -- addition des matisses

= 0,1001 x 210 --normalisation

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

26

Algorithme de calcul de l’addition

1. Déterminer r = max(p,q) et t = | p – q |

2. Décaler à droite la mantisse associée au plus petit exposant par t bits

3. Additionner les mantisses pour obtenir c

4. Normaliser le résultat :

si c < 1 alors u = 0

si c > 1 alors u = 1

5. Le résultat final est :

d = c << u et s = r + u

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 14: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

14

27

Additionneur pipeline

A=a x 2p

p

a

Soustracteur

d’exposants

Décaleur

droiteSélecteur

de fraction

Compteur

de zéros

Additionneur

d’

exposants

Additionneur

de

fraction Décaleur

gauche

B=b x 2q

q

b

E1 E2 E3 E4

r=max(p,q)

t=| p – q |

Fraction avec min(p,q)

Autre fraction

s

d

C=A+B=d x 2sc

cc

u

d

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

28

Accélération de l’additionneur pipeline

Hypothèses :τ0 = 10 ns, τ1 = 90 ns, τ2 = 70 ns, τ3 = 60 ns et τ4 = 40 nsla période du pipeline P ≥ 90 + 10 = 100 ns = 10-7sla fréquence f = 1/P = 107 Hz = 10 Mhz

après initialisation, exécution d'une opération toutes les 100 ns

T1 = (90 + 70 + 60 + 40) * n = 260 * nT4 = 410 + 100 * (n - 1) = 310 + 100 * n

Accélération = T4 / T1 ≈ 260/100 = 2,6 < 4

Exercice : Pouvez-vous réduire le temps en fusionnant E3 et E4 ?

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 15: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

15

29

Exemples de UAL pipeline

Ordinateur Nombre d’étages

Star-100 4

TI-ASC 8

Cray-1 14

Cyber 20 26

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

30

Ordinateurs pipeline

Chevauchement du traitement de données dans :

- UAL

- UC

- Processeur d'E/S

- Hiérarchie de la mémoire

La performance peut se dégrader de façon significative à cause de la dépendance des données conflit des ressources partagées.

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 16: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

16

31

Pipeline bidimensionnel

Exemple : Produit matricielC = A * B où A et B sont 2 matrices d’ordre nsoient τ : temps d’exécution d’une multiplication

t(n) : temps d’exécution du produit matriciel

Algorithme classique (SISD)nombre de multiplications = n3

si n = 103 et τ = 1 µs t(n) = 103 s ≈ 16 mn

Réseau systolique (MISD)nombre de cellules de base = 3n²-3n+1multiplication est complétée après 3n-2 périodessi n = 103 et une période =τ

≈ 3 M processeurs et t(n) ≈ 3 ms

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

32

Elément de base du produit matriciel

a

a

b

c

b

d

M d = a * b + c

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 17: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

17

Réseau systolique du produit matriciel

M M M

M M M M

M M M M M

M M M M

M M M

t5 c13 c12 c11

c21

c31

t6 c21 c22

c32

t7 c33

b33

b23

b13

0

0

t2

0 0 a31 a32 a33 0 a21 a22 a23 0

t1

0

b32

b22

b12

0

a11 a12 a13 0 0

t0

0

0

b31

b21

b11

33Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

34

Ordinateurs vectoriels

Un superordinateur est caractérisé par :

- haute vitesse de calcul

- MP et MS grandes et rapides

- logiciels //

généralement conçu pour effectuer le calcul

- vectoriel

- ou matriciel

utilisé dans les applications scientifiques : prévision météorologique, recherche nucléaire, intelligence artificielle, …

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 18: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

18

35

Générations des ordinateurs vectoriels

Année Machine puissance installations

1960 Star-100 50 MFlops 7 en 1978

Illiac-IV 1

1975 Cray-1 160 MFlops 60 en 1982

Cyber 200 800 MFlops

Fujitsu VP-200 500 MFlops

Cray-2 2 GFlops

Cyber-205 3 GFlops

Nec 5 GFlops

2016 TaihiLight 93 PFlops

2018 Summit 122 Pflops DOE, USA

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

36

Ordinateur vectoriel : Cray-1 (1/2)

Premier ordinateur vectoriel moderne

période de l'horloge = 12.5 ms fréquence = 80 Mhz.cycle de la mémoire = 50 ms, bipolaire (SECDED)transfert de (4 mots) /période de l'horloge de ou vers la mémoire.= 320 M mots/sles canaux ont un taux de transfert = 80 M mots/s

4 canaux opèrent simultanément pour achever le taux maximum de transfert.

266 tampons d'instruction800 registres12 unités fonctionnelles pipeline (1 à 14 étages).

Registres adresses (A) 8 x 24 bitsRegistres scalaires (S) 8 x 64 bitsRegistres vecteurs (V) 8 x 64 x 64 bitsTampons-adresse (B) 64 x 24 bitsTampons-scalaire (T) 64 x 64 bits

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 19: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

19

37

Ordinateur vectoriel : Cray-1 (2/2)

VL : Vector Lnghtformat d'instructions = 16 ou 32 bitsAlgorithme LRU de remplacement des tampons d'instructionP = Program counter 22 bitsNIP = Next Instruction Parcel 16 bitsCIP = Current Instruction Parcel 16 bitsLIP = Lower Instruction Parcel 16 bitsRecip Ap : Inverse approximatif d'un opérande de 64 bits en virgule flottante.Pop/17 : compter le nombre de "1" dans l'opérande/

compter le nombre de '0' précédant un "1"Nombres en virgule flottante (64 bits) et en double précision (128 bits)Dans Cray-1, une opération sur 1 vecteur ayant :

• 3 éléments s'exécutent plus rapidement en mode scalaire• 4 éléments au plus s'exécutent plus rapidement en mode vectoriel

la vitesse moyenne Cray-1 est de 24 MFlops au lieu de 160 car les logiciels n'exploitent pas efficacement (proprement) le matériel (langage, compilation,…).

4 3 3 3 3 10

g h i j k m

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

38

Compilation

Page 20: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

20

39

Exemples d’instructions Cray-1

Instructions indépendantesV0 V1 + V2V3 V4 and V5

Réservation de l'unité fonctionnelle V3 V1 + V2V6 V4 + V5

Réservation de l'opérande V3 V1 + V2V6 V1 * V5

Réservation de l'opérande et de l'unitéV0 V1 + V2V3 V1 + V5

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

40

Exemple d’une boucle Cray-1

Soient A et B deux vecteurs de longueur N. Calculer / A = 5*B + C

Programmation sur Cray-1 :

Q N div 64R N mod 64pour i = 1 à Q faire Calculer (A,64)Calculer (A,R)

Fonction Calculer(A, longueur)S0 5 initialiser le registre scalaire par une constanteS1 C charger C dans le registre scalaireVL longueur initialiser la longueur du vecteurV0 B multiplier chaque élément du vecteur par une constanteV1 S0 * V0 multiplier une constanteV2 S1 + V1 additionner une constanteA V2 sauvegarder le résultat dans A

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 21: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

21

41

Vectorisation (1/3)

Vectorisation : ensemble de transformations apportées à un programme scalaire conduisant à de bonnes performances lorsqu'il est exécuté sur un ordinateur vectoriel.

Rôle : Compilateur ou manuellement (règles ou critères)

Exemple : vectorisation d’une boucle

pour i= 1 à 20 faireC(i) A(i) + B(i)

VL 20V1 AV2 BV3 V1 + V2C V3

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

42

Vectorisation (2/3)

Indépendance des donnéespour i=1 à 20 faire X(1) X(1) + 5

X(i) X(i) + 5 X(2) X(2) + 5X(3) X(3) + 5

……Dépendance des données

pour i=2 à 40 faire Y(2) Y(1) + 3Y(i) Y(i-1) + 3 Y(3) Y(2) + 3

Y(4) Y(3) + 3……

Restructuration du programmepour i=1 à 20 faire pour j=2 à 40 faire

pour j=2 à 40 faire pour i = 1 à 20 faireZ(i,j) Z(i,j-1) + 7 Z(i,j+1) Z(i,j) + 7

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 22: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

22

43

Vectorisation (3/3)

Eclatement de la bouclepour i=1 à 100 faire pour i=1 à 100 faire

A(i) A(i) + 2 A(i) A(i)+2B(i+1) B(i) + 1 pour i=1 à 100 faire

B(i+1) B(i)+1

Instruction conditionnellepour i=1 à 100 faire pour i=1 à 100 faire

si (A(i) > 0) alors S(i) A(i) > 0B(i) = C(i) * 5 si S(I) alors B(i) = C(i) * 5

Exemples : ACTUS (1979) et VECTRAN (1975)

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

44

Vectorisation assistée

Vectorisation automatique (compilateur) n'est pas encore une solution satisfaisante pour optimiser la performance d'un ordinateur vectoriel car :• réalisation d'un compilateur vectoriel est complexe• algorithmes sophistiqués

Vectorisation assistée : • compilateur détecte les zones du programmes requérant le plus de temps

d'exécution.• utilisateur peut intervenir pour restructurer le code du module.

Outils :• bibliothèque de sous-programmes vectorisés (écrits par l'utilisateur ou par

le constructeur). Par exemple : opérations matricielles, équations d'algèbre linéaire, valeurs propres, traitement du signal (TFR), …

• Expérience de l'utilisateur (architecture, compilateur, bibliothèque).

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 23: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

23

Chapitre IIIRéseaux d’interconnexion

• Introduction

• Classifications

• Topologies statiques

• Topologies dynamiques

• Application aux algorithmes parallèles

• Sommes partielles

• Produit matriciel

45Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Introduction aux réseaux d’interconnexions

A1

Réseau d’interconnexionA2

An

A i : Téléphone, Processeur, Module mémoire, Ordinateur, Capteurs, …

Exemples : Réseau local, Internet, Réseau d’interconnexion d’un multiprocesseurs,…

A1

A2

Am

46Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 24: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

24

Classifications des réseaux d’interconnexion

• Topologie : statique ou dynamique (reconfigurable)

• Commutation : par circuit (TCP/IP) ou par paquet (UDP/IP)

• Contrôle : centralisé ou distribué

• Mode d’opération : synchrone ou asynchrone

47Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Topologies statiques (1/2)

Les connexions entre les éléments de traitement sont statiques (figés une fois pour toutes) : Bus, Anneau, Etoile, Graphe complet, Matrice, Cube, Hypercube,…

48Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

a) bus

c) Etoile d) Graphe complet e) Matrice

b) Anneau

Page 25: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

25

Topologies statiques (2/2) : Hypercube

49Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

a) dim 0 b) dim 1 c) dim 2

d) dim 3 e) dim 4

Mesures des réseaux statiques

Définition :

• dimension(réseau) : longueur maximale pour lier 2 nœuds

• connexions(réseau) : nombre de liens du réseau

Exercice : Remplir le tableau suivant

50Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Réseau d’interconnexion dimension connexion

Bus

Anneau

Etoile

Graphe complet

Matrice

hypercube

Page 26: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

26

Topologies dynamiques

Les connexions entre les éléments de traitement sont dynamiques (modifiables ou programmables) : réseau Baseline nxn

n/2 x n/2

n/2 x n/2

0123

n-1n-2n-3n-4

.

.

.

.

0123

n-2n-3n-4

.

.

.

.

état 0

état 1

51Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Programmation du réseau Baseline n=8

0 1 2 3 4 5 6 71 7 3 5 0 4 6 2Permutation = ( )

01

23

45

67

01

23

45

67

52Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 27: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

27

Exercice : Réseau Baseline

Considérons un réseau Baseline nxn.

a) Quel est le nombre des étages d’un réseau baseline nxn ?

b) Quel est le nombre total des cellules de base ?

c) Peut-on programmer n’importe quelle permutation ?

d) Comment peut on implémenter le contrôle ?

e) Décrire un algorithme décentralisé pour le réseau Baseline.

f) Décrire un algorithme décentralisé de routage pour l’hypercube.

53Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Calcul des sommes partielles

Problème : Calcul de S(k) = Σ0≤i≤k a(i) pour k = 0,1,...,n-1

54

Solution 2 : Calcul non répétitif → (n – 1) additionsS(0) a(0)pour k = 1 à n-1 faire

S(k) S(k-1) + a(k)

Solution 1 : calcul direct → n(n- 1)/2 additionspour k = 0 à n-1 faire

somme a(0)pour i = 1 à k faire

somme somme + a(i)S(k) somme

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 28: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

28

S(0)

S(1)

S(2)

S(3)

S(4)

S(5)

S(6)

S(7)

ET0

ET1

ET2

ET3

ET4

ET5

ET6

ET7

Calcul MIMD des sommes partielles

t3

a0

a0+a1

a0+…+a2

a0+…+a3

a0+…+a4

a0+…+a5

a0+…+a6

a0+…+a7

t1

a0

a0+a1

a1+a2

a2+a3

a3+a4

a4+a5

a5+a6

a6+a7

t2

a0

a0+a1

a0+…+a2

a0+…+a3

a2+…+a5

a3+…+a6

a1+…+a4

a4+…+a7

t0

a1

a2

a3

a4

a5

a6

a7

a0

55Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Exercice : Algorithmes des sommes partielles

Considérons le calcul des sommes partielles sur un système MIMD composé de p ET est reliés par un réseau d’interconnexion Baseline.

a) Trouver la complexité des solutions 1 et 2 sur un SISD.

b) Trouver la complexité de la solution MIMD.

c) En supposons que n=p=8 :

• Quelles sont les permutations qu’il faut réaliser pour effectuer ce traitement

• Quel est la programmation du réseau pour chaque permutation ?

56Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 29: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

29

Produit matriciel

Solution 2 : SIMD (n pour i = 1 à n faire

Par pour k = 1 à n faire cik = 0pour j = 1 à n faire

Par pour k = 1 à n faire cik = cik + aij*bjk

Solution 1 : SISDpour i = 1 à n faire

pour j = 1 à n fairecij = 0pour k = 1 à n faire cij = cij + aik*bkj

Problème : Produit matriciel de deux matrices d’ordre n

57Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Produit matriciel (n=3)

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

M2 M3M1

.

.

.

a11

a21

a31

b11

b21

b31

c11

c21

c31

a12

a22

a32

b12

b22

b32

c12

c22

c32

a13

a23

a33

b13

b23

b33

c13

c23

c33

A

B

C

i j En parallèle

1 c11=0, c12=0, c13=0

1 c11+=a11b11, c12+=a11b12, c13+=a11b13

2 c11+=a12b21, c12+=a12b22, c13+=a12b23

3 c11+=a13b31, c12+=a13b32, c13+=a13b33

2 c21=0, c22=0, c23=0

1 c21+=a21b11, c22+=a21b12, c23+=a21b13

2 c21+=a22b21, c22+=a22b21, c23+=a22b23

3 c21+=a23b31, c22+=a23b32, c23+=a23b33

3 c31=0, c32=0, c33=0

1 c31+=a31b11, c32+=a31b12, c33+=a31b13

2 c31+=a32b21, c32+=a32b22, c33+=a32b23

3 c31+=a33b31, c32+=a33b32, c33+=a33b3358Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 30: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

30

Exercice : Réseau d’interconnexion du produit matriciel

Considérons le calcul du produit matriciel sur un système MIMD composé de 3 ET et un bus comme réseau d’interconnexion.

a) Proposer un réseau d’interconnexion pour les relier.

b) Comment allez-vous programmer ce réseau ?

59Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

60

Chapitre IVAnalyse des performances des systèmes parallèles

• Eléments de performance des système parallèles

• Mesures de performance

• Complexité des algorithmes

• Equilibre des charges

• Granularité

• Ordonnancement

• Extensibilité

• Communication bloquante

• Sources d’interblocage

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 31: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

31

61

Motivation

? amélioration de la performance

Programme séquentiel+

Parallélisation(OpenMP, MPI,…)

programme parallèle

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

62

Eléments de performancedes systèmes parallèles

• Taille de l’exemplaire (entrée du programme)

• Complexité des algorithmes (logarithmique, polynomial, exponentiel,…)

• Architecture (mémoire partagée, distribuée)

• Processeurs (nombre, fréquence, nombre de cores, GPU, GPGPU,…)

• Mémoire (temps d ’accès, cache, niveaux de caches,…)

• Langage (C, Java, Fortran,…)

• Paradigmes de programmation (procédural, fonctionnel, orienté objet,…)

• Compilateur (optimisation, vectorisation, …)

• Système d ’exploitation (Linux, Windows,…)

• Protocole de communication (Ethernet, TCP/IP, ATM…)

• Parallélisation (équilibre des charges, Granularité, Ordonnancement, communication bloquante ou non, exclusion mutuelle,…)

• Bibliothèques (MPI, OpenMP,…) Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 32: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

32

63

Mesures de performance

• Soit t(n,p) le temps d’exécution d’un problème de taille n en utilisant un système composé de p processeurs

• Performance

P = 1/t(n,p)

• Accélération (Speed up)

A = t(n,1)/t(n,p)

• Efficacité

E = A/p

En général 1 ≤ A ≤ p et E ≤ 1

si A > p alors il s’agit d’une sur-accélération

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

64

Exemple : Calcul de l’accélération

… … …… … …… … …… … …… … …… … …… … …… … …… … …t(n,1) = cn2

En négligeant les temps de communication

t(n,9) = t(n/3,1) = cn2/9

A = t(n,1)/t(n,9) = 9 et E = A/9 = 1

… … …… … …… … …… … …… … …… … …… … …… … …… … …

n

Considérons une matrice d’ordre n et supposons que le traitement d’un élément prend c secondes (exemple : traitement d’image)

Soit t(n,p) le temps d’exécution d’une matrice d’ordre n en utilisant p processeurs

n

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 33: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

33

65

Exercice : Evaluation des performances

Reprenons l’exemple précédent.

a) Comment pouvez augmenter l’accélération et l’efficacité ?

b) En pratique, quelle hypothèse faut-il revoir ?

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

66

Degré moyen de parallélisme

• Degré de parallélismeD(t) = nombre de processeurs utilisés pendant l’instant t

avec m processeurs (D(t) ≤ m)

−=

2

112)(

1 t

tdttD

ttD

• Degré moyen de parallélisme

où t1 et t2 les temps de début et fin de l ’exécution

=−

=2

112)(

1 t

tt

tDtt

D• D(t) est une fonction discrèteSystèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 34: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

34

67

Exemple :Calcul du degré moyen de parallélisme

8 9 10 11 127654

123456789

10

temps

processeurs

D = (1 + 4 + 8 + 6 + 5 + 3 + 4 + 1) / 8 = 4

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

68

Exercice : Choix du nombre de processeurs

Reprenons l’exécution de l’exemple précédent.

a) Quel est le nombre de processeurs qui minimise le temps d’exécution ?

b) Qu’arrive-t-il si on augmente le nombre de processeurs (plus que 8) ?

c) Qu’arrive-t-il si on réduit le nombre de processeurs (moins que 8) ?

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 35: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

35

69

Complexité des algorithmes

• Notion d ’ordreO(f(n)) = {t:N > R*/ (∃c ∈ R+)(n0 ∈ N)( ∀n> n0 ) [t(n)<cf(n)]}

t(n) est de l’ordre de f(n)

• Soit t(n) le temps d ’exécution d’un algorithme sur un exemplaire de taille nt(n) ∈O(log n) algorithme est logarithmique t(n) ∈O(n) linéairet(n) ∈O(n2) quadratiquet(n) ∈O(p(n)), où p polynôme polynomialt(n) ∈O(f(n)), où f exponentielle exponentiel

• Classes des problèmes : P, NP, NP-complet• Problèmes indécidables : Exemple du problème d’arrêt

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

70

Exemple : Algorithmes des sommes partielles

Algorithme 1pour i = 0 à (n – 1) faire

S(i) a(0)pour j = 1 à i faire

S(i) S(i) + a(j)

Algorithme 2S(0) a(0)pour i = 1 à n-1 faire

S(i) S(i-1) + a(i)

Soit a un vecteur de n éléments, les sommes partielles S(i) (0 ≤ i < n) sont définis par :

=

=i

j

jaiS0

)()(

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 36: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

36

71

Equilibre des charges

Pour illustrer le concept de l’équilibre des charges, considérons le calcul des sommes partielles S(i) (0 ≤ i < 256) sur 8 processeurs numérotés p0, p1,…,p7.

Soient t(pi) le temps d’exécution du processeur pi (0 ≤ i <8)t(8) le temps d’exécution du système composé des 8 processeurst(8) = Maximum(t(p0),t(p1),…,t(p7))

Supposons qu’il n’est pas possible que les processeurs puissent communiquer (temps de communication infini)

le calcul des sommes partielles sera effectué par Algorithme 1.

=

=i

j

jaiS0

)()(

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

72

Charge des processus de Affectation 1

128 150 192 224 2569664320

p0 p1 p2 p3 p4 p5 p6 p7

Affectation 1p0 exécute les itérations i = 0 à 31p1 ″ i = 32 à 63

…pk ″ i = 32k à 32k+31…p7 ″ i = 224 à 255

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 37: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

37

73

Algorithme de Affectation 1

Exercice : Soit N(k) le nombre d’additions effectuées par le processeur k. Montrer que : N(k) = 16 x (64k + 31)

N(0) = 496N(1) = 1520…N(7) = 7664

AlgorithmePar pour k=0 à 7 faire

pour i = 32k à (32k + 31) faireS(i) a(0)pour j = 1 à i faire

S(i) S(i) + a(j)

32640)(7

0

===k

kNS 40808/ =S

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

74

Nombre d’additions de Affectation 1

temps(Affectation 1) = t(p7) = 7664 x c où c : temps d’exécution d’une addition

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 38: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

38

75

Charge des processus de Affectation 2

128 144 160 176 192 208 224 2402561129680644832160

p0 p1 p2 p3 p4 p5 p6 p7 p7 p6 p5 p4 p3 p2 p1 p0

Affectationp0 exécute les itérations i=0 à 15 et i=240 à 255p1 ″ i=16 à 31 et i=224 à 239…pk ″ i=16k à 16k+15 et i=(240 - 16k) à (255 - 16k)…p7 ″ i=112 à 127 et i=128 à 143

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

76

Algorithme de Affectation 2

AlgorithmePar pour k=0 à 7 faire

pour i=16k à 16k+15 et i=(240 - 16k) à (255 - 16k) faireS(i) a(0)pour j=1 à i faire

S(i) S(i) + a(j)

Exercice :Montrer que le nombre d’additions est indépendant de k et que

N(k) = 4080

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 39: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

39

77

Nombre d’additions de Affectation 1 et 2

temps(Affectation 2) = t(p0) =t(p1) = ... = t(p7)Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

78

Degré moyen de parallélismede Affectation 1 et 2

t4 t5 t6 t7 t8t3t2t1t0

123456789

10

temps

processeursAffectation 1

Affectation 2

Exercice : montrez que D(Affectation 1) = 4,5 et D(Affectation 2) = 8

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 40: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

40

79

Granularité

Granularité = taille de la tâche affectée (allouée) à un processeur (ou processus)temps d ’exécution = temps de calcul + temps de communication

Hypothèse : temps de communication d’un message de taille n est a + b * noù a est b sont deux constantes (a : latence et b : débit)

Exemple : Produit matriciel C = AB où A et B deux matrices d’ordre n.

Version 1: pour i=1 à n fairepour j=1 à n faire

C(i,j) 0pour k=1 à n faire

C(i,j) C(i,j) + A(i,k) * B(k,j)Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

80

Granularités des processeurs pour le produit matriciel

version 2 : granularité grosse Par pour i=1 à n faireprocessus : vecteur x matrice pour j=1 à n faire

C(i,j) 0pour k=1 à n faire

C(i,j) C(i,j)+A(i,k)*B(k,j)

version 3 : granularité moyenne pour i=1 à n faireprocessus : vecteur x vecteur Par pour j=1 à n faire

C(i,j) 0pour k=1 à n faire

C(i,j) C(i,j)+A(i,k)*B(k,j)

version 4 : granularité fine pour i=1 à n faireprocessus : scalaire x scalaire pour j=1 à n faire

C(i,j) 0Par pour k=1 à n faire

C(i,j) C(i,j)+A(i,k)*B(k,j)

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 41: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

41

81

Nombre de multiplications et de communications pour le produit matriciel

Nombre de multiplications et de communications pour n=3Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

82

Ordonnancement

• Alternance entre les phases de calcul et de communication

• Congestion du réseau de communication réduit le débit

• Ordonnancement des processus de telle sorte que lorsque certains calculent les autres communiquent

Calcul

Communication

Calcul

Communication

Calcul

Calcul

p1p2

p3

p4

Exemple : 2 processeurs + 1 DMA

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 42: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

42

83

Extensibilité (scalability)

0

20

40

60

80

100

1 2 3 4 5 6 7 8

Exercice : Déterminer le nombre optimal de processeurs pour ce temps d’exécution

processeurs

temps

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

84

Communication bloquante

Quand p0 envoie un message à p1, p0 ne peut continuer son exécution (traitement) que lorsqu’il reçoit un accusé de réception de p1

p0 p1

Envoyer (message)

Attendre(accusé)

Traitement

Recevoir (message)Envoyer (accusé)

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 43: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

43

85

Interblocage

p0 p1

Envoyer (message 0)

Envoyer (message 1)

(1) Interbloquage

p0 p1

Envoyer (message 0)

Envoyer (message 1)

Recevoir (message 1)

(2) Solution

Recevoir (message 0)

Envoyer (accusé 0)

Envoyer (accusé 1)

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Exercice : produit matriciel

Considérons le calcul matriciel de deux matrices d’ordre n.

a) Quelles sont les différentes manières d’effectuer ce calcul

b) Pour chaque cas trouvez :

• Le nombre des processeurs

• Le temps de calcul

• Le degré moyen de parallélisme

86Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 44: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

44

Chapitre VApplications parallèles

• Environnement distribué• Installations d’OpenMP et MPI• OpenMP (Open MultiProcessing)

• Présentation d’OpenMP• Région parallèle• Synchronisation et exclusion mutuelle• Constructeurs de boucle• Clauses réduction

• MPI (Message Passing Interface)• Présentation de MPI• Communication (envoi et réception de messages)• Diffusion• Réduction

• Autres outils des applications parallèles• Multithreading en Java

87Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

88

Environnement distribué

Réseau de communication

Cray J916(6 processeurs)

Réseau local 1 Réseau local 2

P

P : poste de travail (PC, SIMD, MPP,...) sous un système d’exploitation (Unix, Linux, Windows, SunOS,…) utilisant des bibliothèque (OpenMP, MPI, …)

P P P P P P P

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 45: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

45

Installations de OpenMP et MPI

• Unix : La majorité des éditions incluent dans leur noyau les commandes mpicc et mpirun de MPI et l’option de compilation –fopenmp d’OpenMP (https://www.ubuntu.com/download/desktop)

• Cygwin : Simulation d’un environnement UNIX sous Windows. Il faudrait installer openMP et mpi (https://cygwin.com/install.html)

• Vmware : Machine virtualisée permettant l’exécution d’applications sous des systèmes d’exploitation différents (Windows, Linux, OS,…)

• Eclipse : Utilisation de l’outil PTP (Parallel Tools Plateforme) sous Windows et Unix (https://www.youtube.com/watch?v=m9o0TGS1_80)

89Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

90

Installation des packages de CygWin

Compilateur et éditeur

g++ : gcc ++ GNU Compiler Collection

ssh : open ssl

make : devel/make the GNU version

vim : Editor/vim Vi IMproved

Biblithèques OpenMP et MPI

libopenmpi : C librairy

libopenmpi : devel librairy

openmpi : C librairy

libopenmpicxx1 : C++ librairy

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 46: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

46

Exercice : Programme C sous Unix

// hello.c programme qui affiche ″Hello World″#include <stdio.h>void main() {

printf("Hello World!");}

Lancement de la compilation:$gcc hello.c (ou bien $gcc –o hello.exe hello.c)

Lancement de l’exécution:$./a (ou bien $./hello)

Affichage obtenu:$ Hello World!

91Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Présentation d’OpenMP

• Historique : PVM (Parallel Virtual Machine) en 1991 et MPI-1(1994), MPICH2(2000) et OpenMP (1997)

• API (Application Programming Interface) pour les applications multithreads

• Standard composé d’un ensemble de directives au compilateur et de fonction de la bibliothèque pour les applications parallèles

• Simplifie l’écriture des multitreads pour les langages Fortran, C et C++

• Souvent utilisé dans des architectures à mémoire partagées

• Modèles d’exécution :

• SPMD (Single Programme Multiple Data) : Plusieurs threads exécutent le même programme tout en traitant partiellement ou totalement les données dépendamment de leur identificateur

• Constructeur et clauses associées aux directive (for, reduce,…)

92Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 47: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

47

Architecture d’OpenMP

93Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Modèle de programmation : Fork/Join

94Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

• Un thread maître (en rouge) peut créer un ensemble de threads : bifurquer (Fork)

• Plusieurs threads peuvent se ramener au thread maître : se joindre (Join)

• Alternance entre des régions séquentielles et des régions parallèles

• Le parallélisme peut être imbriqué (nested) : un thread peut créer d’autres threads

Séquentielle Parallèle Séquentielle Parallèle Séquentielle

Fork Join Fork Join

Fork Join

Page 48: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

48

Région parallèle

95Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

• Création des threads de la région parallèle grâce à la directive au compilateur :#pragma omp parallel

• Exemple de de création de 3 threads dans la région parallèle :double A[100]; // variable partagéeomp_set_threads_num(3); // initialisation du nb de threads#pragma omp parallel // directive de la région parallèle{ // début de la région parallèle

int ID = omp_get_thread_num(); // identification du threadcalculer(ID,A); // appel de la fonction

} // fin de la région parallèle

• Chaque thread exécute le bloc de la région parallèle et appelle la fonction calculer avec son numéro ou rang (ID = 0,1 et 2) qui est une variable privée.

• La directive peut inclure une clause : #pragma omp parallel num_threads(3)

Exercice

96Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Ecrire le programme helloOMP.c qui reprend hello.c (exercice précédent).

1. Ajouter la directive de la création de la région parallèle (sans la directive d’initialisation du nombre de threads) et afficher le numéro du thread après le message. Compiler le programme ($gcc –fopenmp helloOMP.c) et l’exécuter.

2. Quel est le nombre total des threads générés ? Est-il le même que pour vos camarades ?

3. Quelle est la configuration matérielle de votre système ? Quel est le contenu des variables de l’environnement système ($env)

4. Qu’arrive-t-il après la commande ($export OMP_NUM_THREADS=3)?

5. Refaire une autre exécution. Que pouvez-vous constater par rapport à l’affichage de la première exécution ?

Page 49: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

49

Calcul séquentiel de Π

97Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Considérons le calcul séquentiel de Π par intégration numérique :

où n est le nombre de pas

Algorithme séquentieln nombre de paspas 1/n, somme 0pour i=0 à (n – 1) faire

x (i + 0,5)*passomme somme + 4/(1 + x*x)

pi pas * sommeimprimer(pi)

1

4

2

Programme séquentiel de Π

98Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

/* fichier piSéquentiel.c version séquentielle du calcul de Pi par intégration* numérique de la fonction f(x) = 4/(1 + x*x) entre 0 et 1 */#include <stdio.h>#define N = 1000; // nombre de points à évaluermain (){

int i;double pas, x, pi, somme = 0.0;pas = 1.0/(double) N; // distance entre deux abscissesfor (i = 0; i < N; i++){ // considérer n points

x = (i + 0.5)*pas; // calculer l’abscisse à évaluersomme += 4.0/(1.0 + x*x);// accumuler les ordonnées dans somme

}pi = pas * somme; // trouver une approximation de piprintf("Pi=%20.19f ",pi);

}

Page 50: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

50

Exercice : Précision du calcul et optimisation

99Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

1. Comment pourriez-vous améliorer la précision de la valeur obtenue de Pi ?

2. Déterminer n pour que le calcul produit la valeur Pi avec 11 chiffres corrects après la virgule sachant que Pi25 = 3,141592653589793238462643.

3. Ecrire une version récursive de ce calcul. Faire attention à la granularité des threads.

4. Pi peut être calculé à partir de :

Comparer la précision de ce calcul par rapport au précédent.

5. En prenant n=109, estimer le temps d’exécution en utilisant la fonction clock() qui retourne le nombre de cycles d’horloge et la constante CLOCKS_PER_SEC de la bibliothèque <time.h>.

Exercice : Calcul parallèle de Π

100Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

1. Ecrire le programme piOMP.c qui est une version parallèle de piSéquentiel.c en utilisant la directive de création de la région parallèle et les fonctions de la bibliothèque (runtime library routines) :

int omp_get_num_threads(); // retourne le numéro du thread

int omp_get_thread_num(); // retourne le nombre de threads

Faire attention aux variables partagées par les threads ainsi qu’à leurs variables privées.

2. Estimer le temps d’exécution en utilisant la fonction de la bibliothèque :

double omp_get_wtime(); // retourne le temps en secondes

3. Estimer le temps d’exécution en variant le nombre de threads (1,2,…,16).

Page 51: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

51

Répartition du traitement aux threads

101Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

pour i=0 à N-1 faire calcul // algorithme séquentiel

Région parallèle // répartition R1nb nombre de threadsk numéro du threaddébut k*N/nbfin (k+1)*N/nbsi k=N-1 alors fin Npour i=début à fin-1 faire calcul

Région parallèle // répartition R2nb nombre de threadsk numéro du threadpour i=k à (N-1) pas=nb faire calcul

Exemple: N=14 et nb=3Itération Thread(R1) Thread(R2)

0 0 01 0 12 0 23 0 04 1 15 1 26 1 07 1 18 1 29 2 010 2 111 2 212 2 013 2 1

Exercice : Calcul parallèle de Π

102Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

1. Reprendre le programme piOMP.c et écrire une version où les tâches sont explicitement réparties aux threads.

2. Comparer le temps d’exécution de cette version avec la précédente.

Page 52: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

52

Synchronisation : Exclusion mutuelle

103Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Impose des contrainte d’ordre afin de protéger l’accès aux variables partagéesPlusieurs types : critical, atomic,…La directive #pragma omp critical permet une exclusion mutuelle : un seul

thread à la fois peut entrer dans la région critique

float res;#pragma omp parallel{ float B; int i, id, nthrds;

id = omp_get_thread_num();nthrds = omp_get_num_threads();for (i=id; i<niters; i+nthrds){

B = big_job(i);#pragma omp critical

consume (B, res);}

}

Exercice : Exclusion mutuelle

104Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Reprendre le programme piOpenMP et ajouter la directive afin de garantir un accès en exclusion mutuelle à la variable partagée somme.

Page 53: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

53

Constructeur de partage de traitement d’une boucle (loop worksharing construct)

105Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

for (i=0; i<N; i++) a[i] = a[i] + b[i]; // séquentiel

#pragma omp parallel // région parallèle{ int id, i, Nthrds, istart, iend;

id = omp_get_thread_num();Nthrds = omp_get_num_threads();istart = id * N / Nthrds;iend = (id+1) * N / Nthrds;if (id == Nthrds-1) iend = N;for (i=istart; i<iend ;i++) a[i]=a[i]+b[i];

}

#pragma omp parallel // région parallèle et constructeur#pragma omp // de boucle{ for(i=0; i<N; i++) { a[i] = a[i] + b[i];}

Clause de réduction

106Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Clause de réduction : reduction (op : list)Inside a parallel or a work-sharing construct:– A local copy of each list variable is made and initialized depending on the

“op” (e.g. 0 for “+”).– Compiler finds standard reduction expressions containing “op” and uses

them to update the local copy.– Local copies are reduced into a single value and combined with the original

global value.The variables in “list” must be shared in the enclosingparallel region.

double ave=0.0, A[MAX]; int i;#pragma omp parallel for reduction (+:ave)

for (i=0;i< MAX; i++) { ave + = A[i]; }ave = ave/MAX;

Opérateurs dans C : +, *, -, &, |, ^, && et ||

Page 54: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

54

Programme OpenMP du calcul de Π

107Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

#include <stdio.h>#include <omp.h>static long N = 100000000; // nombre d'étapesint main(){

int i; double x, pi, somme = 0.0, pas, start_time, run_time;start_time = omp_get_wtime();pas = 1.0/(double) N;#pragma omp parallel for reduction (+:somme)for (i=0; i<N; i++){

x = (i + 0.5)*pas;somme += 4.0/(1.0 + x*x);

}pi = pas * somme;run_time = omp_get_wtime() - start_time;printf("Pi=%f temps écoulé=%f",pi, run_time);

}

Exercice :Comparaison des temps d’exécutions

108Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Comparer les temps d’exécution des différentes version du calcut de Pi.

Page 55: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

55

Présentation de MPI

• Bibliothèque standard à inclure dans un programme C (#include "mpi.h") ou Fortran (INCLUDE ’mpif.h’)

• Plusieurs implantations : MPI-1(1994), MPICH2(2000) et OpenMPI(2009)

• Autres bibliothèques : OpenMP(2010),…

• Souvent utilisée dans des architectures à mémoire distribuée

• Modèle SPMD (Single Programme Multiple Data)

• Le même programme est installé dans chaque processeur (ou machine)

• Des instances multiples du programme traitent partiellement ou totalement les données

• Chaque instance a un identificateur unique par rapport à un communicateur

• L’instance exécute la partie du programme selon son identificateur

• Le traitement inclut le transferts de messages et la combinaison des résultats (Reduce)

109Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Schéma général d’un programme MPI

rang identificateur du processus en cours par rapport à un communicateur

si (rang = identificateur_spécifique) alors

faire un traitement

sinon

faire un autre traitement

110

p0

p1

p2

p3

Communicateur

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 56: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

56

Quelques commandes Unix

$pwd

$ls -l

$hostname

$mpirun -n 1 hostname (ou mpiexec -np 1 hostname)

$mpirun -n 7 hostname

$mpirun hostname

$mpirun -n 5 hello

$mpirun -n 12 hello

$mpirun -machinefile machine.txt -n 4 hostname

111Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Quelques fonctions MPI (1/2)

112

int MPI_Init(int *argc, char ***argv)int MPI_Finalize()int MPI_Comm_rank(MPI_Comm comm, int *rank)int MPI_Comm_size(MPI_Comm comm, int *size)int MPI_Send(const void *buf, int count, MPI_Datatype datatype, int dest, int tag,

MPI_Comm comm)int MPI_Recv(void *buf, int count, MPI_Datatype datatype, int source, int tag,

MPI_Comm comm, MPI_Status *status)int MPI_Bcast(void *buffer, int count, MPI_Datatype datatype, int root, MPI_Comm comm)int MPI_Comm_group(MPI_Comm comm, MPI_Group *group)int MPI_Group_incl(MPI_Group group, int n, const int ranks[], MPI_Group *newgroup)int MPI_Comm_create(MPI_Comm comm, MPI_Group group,MPI_Comm *newcomm)int MPI_Comm_split(MPI_Comm comm, int color, int key, MPI_Comm *newcomm)

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 57: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

57

Quelques fonctions MPI (2/2)

113

int MPI_Reduce(void *sendbuf, void *recvbuf, int count,

MPI_Datatype datatype, MPI_Op op, int root,MPI_Comm comm)

Int MPI_Allreduce( void *sendbuf, void *recvbuf, int count,

MPI_Datatypedatatype, MPI_Opop, MPI_Commcomm )

Opérations :

MPI_MAX : maximum MPI_MIN : minimum

MPI_SUM : sum MPI_PROD : product

MPI_LAND : logical and MPI_BAND : bit-wise and

MPI_LOR : logical or MPI_BOR : bit-wise or

MPI_LXOR: logical xor MPI_BXOR : bit-wise xor

MPI_MAXLOC : max value + location MPI_MINLOC : min value + location

Liste complète (≈360 fonctions) : https://www.open-mpi.org/doc/v1.8

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Exemples de programmes

• Communication entre processus

• Calcul de Π• Sommes partielles

• Vote électronique

• Synchronisation des événements (horloge de Lamport)

• Datation des événements

114Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 58: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

58

Algorithme de communication

p nombre total de processusrang identificateur du processusdest 0si (rang ≠ 0) alors

message ″Hello world du processus ″ + rangenvoyer(message,dest)

sinonécrire(″Hello world du processus 0 : nombre de processus ″,p)pour source=1 à (p-1) faire

recevoir(message,source)écrire(message)

Exemple : p=4

115

p0

p2 p3p1

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Programme de communication (1/3)

/* programme helloMPI.c*/#include <stdio.h>#include <string.h>#include "mpi.h"

int main(int argc, char* argv[]){int my_rank; /* rank of process */int p; /* number of processes */int source; /* rank of sender */int dest; /* rank of receiver */int tag=0; /* tag for messages */char message[100]; /* storage for message */MPI_Status status ; /* return status for receive */

116Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 59: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

59

Programme de communication (2/3)

/* start up MPI */MPI_Init(&argc, &argv);

/* find out process rank */

MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);

/* find out number of processes */

MPI_Comm_size(MPI_COMM_WORLD, &p);

if (my_rank !=0){

/* create message */

sprintf(message, "Hello MPI World from process %d!", my_rank);

dest = 0;

/* use strlen+1 so that '\0' get transmitted */

MPI_Send(message, strlen(message)+1, MPI_CHAR,dest, tag,MPI_COMM_WORLD);

}117Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Programme de communication (3/3)

else{printf("Hello MPI World From process 0: Num processes: %d\n",p);for (source = 1; source < p; source++) {

MPI_Recv(message, 100, MPI_CHAR, source, tag,MPI_COMM_WORLD, &status);

printf("%s\n",message);}

}

/* shut down MPI */MPI_Finalize();return 0;

}

118Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 60: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

60

Exercice : Programme de communication

a) Création de Exemple1.cprogramme de communication précédent

b) Compilation de Exemple1.c$mpicc -o Exemple1.exe Exemple1.c

c) Exécution de Exemple1.c$mpirun -n 5 Exemple1.exe

d) Création de Exemple2.csupprimer les appels MPI_Sendexécuter le programmeQue se passe-t-il (utiliser la commande top et supprimer les processus)?

e) Création de Exemple3.csupprimer les appels MPI_Sendsupprimer la boucle lorsque my-rank=0 (processus p0)remplacer sprintf par printf (un affichage par processus)exécuter le programme à 2 reprises. Que se passe-t-il ?

119Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Algorithme du calcul de ΠΠΠΠCalc_pi(rank, num_procs)

si (rank = 0) alorsnum_intervals 1000pour s=1 à num_procsfaire envoyer(0,s,num_procs)

h 1/num_intervalssum0pour i = rank + 1à num_intervalspasnum_procsfaire

x=h * (i – 0,5)sum = sum + 4*racine_carrée(1 – x2)

mypi = h* sumsi (rank≠ 0) alors envoyer(rank,0,mypi)sinon

pour s=1 à num_procsfairerecevoir(pi)sum += pi

écrire(″PI=″, sum*h)120Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 61: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

61

Diffusion et réduction

Calc_pi(rank, num_procs)si (rank = 0) alors

num_intervals 1000diffuser(num_intervals)h 1/num_intervalssum0pour i = rank + 1à num_intervalspasnum_procs

x=h * (i – 0,5)sum = sum + 4*racine_carrée(1 – x2)

mypi = h* sumreduce(mypi,pi,sum)si (rank = 0) alors écrire(″PI=″, pi)

121Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Schéma du calcul de ΠΠΠΠ

Hypothèse :

num_procs = 3 (p0, p1 et p2)num_intervals =10 donc h = 0,1

p0 calcule les valeursx=0,05, x=0,35, x=0,65 et x=0,95

p1 calcule les valeursx=0,15, x=0,45 et x=0,75

p2 calcule les valeursx=0,25, x=0,55 et x=0,85

122

p0 p1 p2 p0 p1 p2 p0p1 p2 p0

1

1

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 62: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

62

Programme du calcul de ΠΠΠΠ (1/3)

/* fichier piMPI.c */#include <mpi.h>#include <stdio.h>void calc_pi(int rank, int num_procs){

int i, num_intervals;double h, mypi, pi, sum, x;

/* set number of intervals to calculate */if (rank == 0) {

num_intervals = 1000000000;}

/* tell other tasks how many intervals */MPI_Bcast(&num_intervals, 1, MPI_INT, 0, MPI_COMM_WORLD);

123Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Programme du calcul de ΠΠΠΠ (2/3)

124

/* now everyone does their calculation */h = 1.0 / (double) num_intervals;sum = 0.0;for (i = rank + 1; i <= num_intervals; i += num_procs) {

x = h * ((double)i - 0.5);sum += (4.0 /(1.0 - x*x));

}mypi = h * sum;

/* combine everyone's calculations */MPI_Reduce(&mypi, &pi, 1, MPI_DOUBLE, MPI_SUM, 0,MPI_COMM_WORLD);if (rank == 0) {

printf("PI is approximately %.16f\n", pi);}

}

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 63: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

63

Programme du calcul de ΠΠΠΠ (3/3)

125

int main(int argc, char *argv[]) {int my_rank; /* rank of process */int num_procs; /* number of processes */

MPI_Init(&argc, &argv); /* start up MPI */MPI_Comm_rank(MPI_COMM_WORLD, &my_rank); /* find out process rank */MPI_Comm_size(MPI_COMM_WORLD, &num_procs); /* number of processes */calc_pi(my_rank, num_procs); /* calculate PI */

MPI_Finalize(); /* shut down MPI */return 0;

}

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Exercice : Programme du calcul de ΠΠΠΠ

a) Création de MPIPi1.cprogramme ΠΠΠΠ précédent

b) Compilation et exécution de MPIPi1.c

$mpicc -o MPIPi1.exe MPIPi1.c –lm

$mpirun -n 4 MPIPi1.exe

c) Création de MPIPi2.c

augmenter le nombre d’intervalles

d) Création de MPIPi3.c tel que Π = 4 * ∫ dx/(1 + x2)

e) Quelle est la version qui donne les meilleures précisions relativement à num_intervals réduit sachant que les 25 chiffres de ΠΠΠΠ sont :

Pi25 = 3,141592653589793238462643f) Déterminer le temps d’exécution des deux versions en utilisant MPI_Wtime()

126

0

1

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 64: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

64

Exercice 1 : Sommes partielles

Considérez l’algorithme de la première affectation du calcul des sommes partielles :

Par pour k=0 à 7 fairepour i = 32k à (32k + 31) faire

S(i) a(0)

pour j = 1 à i faire

S(i) S(i) + a(j)

a) Traduire cet algorithme en un programme SPMD en utilisant les fonctions MPIoù a =(2,3,6,9,4,7,0,2,2,6,8,9,11,0,2,4).

b) Afficher les calculs des processus selon la forme suivante :

<numéro du processus> : S(<indice>)=<valeur calculée>

c) Modifier le programme pour qu’il puisse être exécuté avec 1,2 , 4, 8 et 16 processus.

d) Afficher le temps de traitement des processus sachant que a est un vecteur de 100 000 éléments tel que a(i)=i. Que pouvez-vous dire des temps d’exécution ?

127Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Exercice 2 : Sommes partielles

Reprenez les mêmes questions que l’exercice précédent et cette fois-ci pour l’algorithme de la deuxième affectation du calcul des sommes partielles :

Par pour k=0 à 7 fairepour i=16k à 16k+15 et i=(240 - 16k) à (255 - 16k) faire

S(i) a(0)

pour j = 1 à i faire

S(i) S(i) + a(j)

128Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 65: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

65

Fonctions MPI_Reduce

MPI_Reduce( void* send_data, void* recv_data, int count, MPI_Datatypedatatype, MPI_Op op, int root, MPI_Comm communicator)

129

MPI_MAX - Returns the maximum element. MPI_MIN - Returns the minimum element. MPI_SUM - Sums the elements. MPI_PROD - Multiplies all elements. MPI_LAND - Performs a logicaland across the elements. MPI_LOR - Performs a logicalor across the elements. MPI_BAND - Performs a bitwiseand across the bits of the elements. MPI_BOR - Performs a bitwiseor across the bits of the elements. MPI_MAXLOC - Returns the maximum value and the rank of the process that

owns it. MPI_MINLOC - Returns the minimum value and the rank of the process thatowns it.

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Exemples MPI_Reduce

130Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 66: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

66

Fonction MPI_Allreduce

MPI_Allreduce( void* send_data, void* recv_data, int count, MPI_Datatypedatatype, MPI_Op op, MPI_Comm communicator)

131Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Algorithme de vote électronique

getVote(candidateNum)candidate valeur aléatoire entre 0 et CandidatNumreturn candidate

DPoll(candidateNum)rank identificateur du processuspour i=0 à candidateNumfaire

vote[i] 0vote [getVote(candidateNum)] 1Allreduce(vote, result, Somme)pour i=0 à candidateNumfaire

afficher (rank,vote[i],result[i])

Exercice : Faire la trace pour candidatNum = 3 et proceesNum = 9132Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 67: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

67

programme de vote électronique (1/2)

#include <stdio.h>#include <mpi.h>#include <stdlib.h>

// return random value between 0 and CandidateNumint getVote(int germe, int candidateNum){

int candidate;srand(germe);candidate = (rand() % (candidateNum + 1));return candidate;

}

133Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

programme de vote électronique (2/2)

Int main(int argc, char *argv[]) {const int candidateNum=3;int i, rank,

vote[candidateNum + 1], // vote du processusresult[candidateNum + 1]; // résultat du vote

MPI_Init(&argc,&argv);MPI_Comm_rank(MPI_COMM_WORLD, &rank);for (i=0; i <= candidateNum; i++) vote[i]=0;

vote [getVote(rank, candidateNum)]=1;MPI_Allreduce(&vote, &result, candidateNum+1, MPI_INT, MPI_SUM,

MPI_COMM_WORLD);for (i=0; i <= candidateNum; i++)

printf("rank=%d vote[%d]=%d result[%d]=%d\n",rank,i,vote[i],i,result[i]);MPI_Finalize();return 0;

}134Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 68: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

68

Exercice : Sommes partielles

Soit l’algorithme suivants :p nombre de processeursrang identificateur du processussomme a(rang)pour i = 0 à (log(p) – 1) faire

pas 2**isi (rang < n – pas) alors

envoyer(somme, rang + pas)si (rang > pas) alors

recevoir(A, rang - pas)somme somme + A

écrire(" Somme partielle du processeur :", rang, " = " ,somme)

Faire la trace pour a =(2,3,6,9,4,7,0,2,2,6,8,9,11,0,2,4) et programmer cet algorithme en utilisant MPI.

135Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Exercice (1/2)

a) Corriger le programme de la page suivante.

b) Quel est le résultat de son exécution ?

c) Que calcule-t-il ?

d) Expliquer le type de granularité.

e) Modifier le programme pour augmenter la granularité.

f) Estimer le temps d’exécution.

136Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 69: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

69

Exercice (2/2)

main(int argc, char **argv) {int myrank, size, k, order, row, column, sum;MPI_Init (&argc, &argv);MPI_Comm_rank (MPI_COMM_WORLD, &myrank);MPI_Comm_size (MPI_COMM_WORLD, &size);

order = sqrt(size);row = myrank / order;column = myrank % order;

sum = 0;for (k=0; k<order; k++) sum = sum + (row + k) * (k - column);printf("[processus : %d]: c(%d,%d) = %d\n",myrank,row,column,sum);MPI_Finalize();

}137Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Exercice

Soient deux vecteurs a=(a0,a1,…,an-1) et b=(b0,b1,…,bn-1) avec n=2m (m ∈ N+). Nous voulons calculer le produit scalaire S = a0* b0 + a1* b1 + … + an-1* bn-1

a) Ecrire un algorithme SPMD où le processus pk lit ak et bk, calcule le produit ak * bk et l’envoie à p0 qui calcule la somme S et l’affiche.

b) Récrire l’algorithme en remplaçant les envois et réceptions par Reduce.c) Afin d’augmenter la granularité et en ayant m processeurs, réécrire l’algorithme selon

l’affectation suivante :p0 calcule le produit scalaire partiel : de l’indice 0 à l’indice 1.pk calcule le produit scalaire partiel : de l’indice 2k à l’indice 2k+1 – 1 (0 < k < m).

d) Faire la trace pour n=16 de ce dernier algorithme et déduire le degré de parallélisme sachant que le temps d’exécution est proportionnel au nombre de multiplications (temps d’addition et de transfert sont négligeables devant la multiplication).

e) Tout en ayant m processeurs, trouver une affectation qui permet l’équilibrage de charge. Calculer son degré de parallélisme en supposant que m=2i (i ∈ N+). En déduire le degré de parallélisme quand n=16.

f) Ecrire un programme SPMD de cette deuxième affectation et faire la trace pour n=16.138Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 70: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

70

139

Synchronisation des événements

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

p0

p1

p2

Hypothèse : ressources partagées dans un système répartipk : processus k ( 0 ≤ k < n)eki : événement i du processus k (0 ≤ i < nk)les processus peuvent échanger des massages (envoi ou réception)

Problème : dater tous les événements avec une seule horloge logique

Exemple : k = 3 et nk = 5

e00 e01 e02 e03 e04

e14e10 e11 e12 e13

e20 e21 e22 e23 e24

140

Horloge logique de Lamport

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

p0

p1

p2

- initialisation de Hi à 0

- A chaque événement e su site : Hi := Hi + 1 et e est daté par Hi

- A chaque envoi de message m, la date Hi du site est envoyée avec le message

- A la réception d’un message avec la date Hj, Hi := max (Hi, Hj) + 1

1 2 3 4 8

82 3 6 7

1 2 3 4 5

1 2 3 4 8

82 3 6 7

1 2 3 4 5

Page 71: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

71

141

Représentation des événements

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

eki contient :j s’il envoie un message au processus jj+3 s’il reçoit un message du processus jk si l’événement n’envoie ni reçoit de message

Exemples : e00 = 1, e01= 2, e02 = 0, e03 = 5 et e04 = 4p0 = {1,2,0,5,4}p1 = {3,5,5,0,1}p2 = {1,2,0,3,1}événement = {p0,p1,p2}

142

Algorithme de datation

datation : tableau d’une dimension de l’ordre partiel d’un processusdatationPart : tableau de 2 dimensions de l’ordre partiel de tous les processusdatationTot : tableau de 2 dimensions de l’ordre total de tous les processus

Événement={ {1,2,0,5,4}{3,5,5,0,1}{1,2,0,3,1}}

k rang du processusdatationPartielle(evenement(k),k,datation)Assembler(datation,datationPart,0)si (k=0) alors

datationTotale(datationPar,datationTot)Diffuser(datationTot,0)

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 72: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

72

143

Datation Partielle

fonction datationPartielle(processus, k, datation)H 0pour i = 0 à 4 faire

e processus(i)si (e=k) alors

H++sinon si(e < 3) alors

H++destination eenvoyer(H,destination)

sinonsource e – 3recevoir(D,source)H max(H,D) + 1

datation(i) HSystèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

144

Datation Partielle 2

fonction datationPartielle(processus, k, datation)H 0pour i = 0 à 4 faire

e processus(i)H++si (e < 3 et e ≠ k) alors

destination eenvoyer(H,destination)

sinonsource e – 3recevoir(D,source)si D ≥ H alors H D + 1

datation(i) H

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

Page 73: Systèmes et traitements parallèleseleuldj/Cours/Arc_Par/STP Support 2018.pdf · devant le temps de ces opérations, estimez le temps d’exécution de l’évaluation de p(x 0)

27/09/2018

73

145

Datation Totale

fonction datationTotale(datationPart, datationTot)i0 0, i1 0, i2 0pour H=1 à 15 faire

indice positionMin(datationPart(0,i0),datationPart(1,i1), datationPart(2,i2))

si (indice=0) alorsdatationTot(0,i0) Hi0++

si (indice=1) alorsdatationTot(1,i1) Hi1++

sinondatationTot(2,i2) Hi2++

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018

146

Multithreading en Java

public class MaTache extends Thread {

public MaTache() {

start();

}

public void run() {

System.out.println("Hello World");

}

public static void main(Stringch[] args){

MaTache t1 = new MaTache();

MaTache t2 = new MaTache();

}

}

Systèmes et traitements parallèles, M. Eleuldj, EMI, Octobre 2018