Vous êtes sur la page 1sur 163

1

Paralllisme
Professeur
M. Hicham. MEDROMI

2
Plan

Machines parallles
Systme parallle
Architecture Parallle
Mini-projets

H. MEDROMI AS
3
Menu : plat du jour
Dfinition du paralllisme
O Concurrence versus distribution
O Paralllisme dexcution
Exemples de systmes distribus
Modlisation dynamique
Problmes emblmatiques
O De la concurrence
O De la distribution
Paralllisme, concurrence et langage
Systmes ractifs et lments en Java
4
Dfinition du Paralllisme
En informatique, on dit que deux instructions, deux
actions, deux calculs sont parallles si elles/ils
ont lieu (leur excution a lieu) au mme instant

O Notion de simultanit
Logique / rel
O Notion de non dpendance
5
Modle flot de donnes
T1
T7
T5
T3
T4
T2
T6
T8
T0
T9
6
Trois niveaux de paralllisme
Paralllisme du monde rel
O Analyse
Paralllisme de conception
O Concurrence, processus
Paralllisme dexcution
O Processeurs, circuits, rseaux
7
Introduction(?) au paralllisme
Paralllisme
O utiliser plusieurs ordinateurs ensemble pour rsoudre des problmes
plus gros (taille mmoire, espace disque)
plus rapidement (puissance CPU)
O Mot cl : efficacit
Diffrents domaines de recherche
O thoriques
algorithmique
ordonnancement
O pratiques
supports
modles
si on veut de l efficacit les deux sont videmment lies
8
Environnement logiciel parallle
Composants ncessaires pour lexcution
d un programme parallle
Hardware
Systme d exploitation
Support d excution
Compilateur
Application
9
Modles de programmation parallle
Dfinies par
O le compilateur
O le support d excution
Buts
O facilit de programmation
proche du squentiel
proche d un modle de description dalgorithmes parallles
O PRAM
O BSP
O efficacit = f(algorithme, compilateur, support, systme, hardware)
O portabilit = f(support, algorithme)
scalabilit
obsolescence du matriel
utilisation de plusieurs sites pour la mme application (meta-
computing)
10
Les dbuts du paralllisme
Multiprogrammation
O notion de processus
O systme Multics (~65)
O toujours dactualit, au cur des UNIX et de NT
Programmation concurrente
O les coroutines (Djikstra, 68)
O multiprogrammation grain plus fin
O problmes de synchronisation
Paralllisme simul
O pas de machine contenant rellement du paralllisme

11
Paralllisme matriel : premire poque
Processeurs vectoriels (Cray, ~1976)
O circuit spcifique
O oprations arithmtiques lmentaires (+, )
O donnes manipules : vecteurs
O calcule n additions en parallle au lieu dune
contient n ALUs au lieu d une avec un seul microcontrleur pour
tous
Traitement parallle sur des donnes
O mme opration sur un ensemble de donnes
O le paralllisme se fait sur les donnes (par opposition aux instructions)
O Paralllisme de donnes
O fonctionnement naturellement synchrone
Classification traditionnelle
O SIMD : Single Instruction (flow) Multiple Data
12
Modle paralllisme de donnes
Principe algorithmique
O dfinir des structures de donnes (souvent) rgulires (vecteurs,
matrices)
O effectuer une suite d oprations simples sur ces structures
Exemple
Vecteur a[100];
Vecteur b[100];
Vecteur c[100];

for i:= 1 to 100 dopar
c[i]:=a[i]+b[i];
done
a b c
13
Importance de la compilation
Le compilateur doit tre intelligent
Dcoupage de la boucle
a b c
Si le processeur vectoriel ne sait calculer
que 50 additions en parallle

-> 2 cycles au lieu d un
14
Caractristiques
Modle simple et naturel
O programmation simple
passage direct partir de l algorithme squentiel
O compilateur peu compliqu crire
O efficacit peu prs garantie
N pour les architectures vectorielles et SIMD en gnral
O cas particulier : le pipe-line (processeurs super-scalaires)
Adapt un certain type dapplications
O calcul sur des structures rgulires
O applications scientifiques et certaines simulations

15
MPL
Langage data-parallle
O pour une machine prcise : Maspar MP-1
O machine SIMD de 1024 16384 processeurs
O architecture : un processeur performant en scalaire qui commande
16384 processeurs scalaires qui font tous la mme chose
O chaque processeur a une mmoire locale associe
O topologie des communications : grille 2D torique
commande
16
Variables parallles
Deux types de variables dans le langage
O scalaire : rside dans la mmoire du processeur matre
O parallle : rside dans la mmoire de tous les processeurs esclaves
Syntaxe la C
int i;
parallel int a,b,c; // dfinit les variables a,b et c sur tous les processeurs

i=1; // effectu sur le matre seulement
c=a+b; // effectu sur tous les processeurs en mme temps
a[0]=12; // effectu sur le processeur 0 seulement
17
Communication entre les processeurs
Accs des cases mmoire distantes
O par localisation gographique dans les 8
directions possibles
N,S,E,W,NE,NE,SE,SW
NW[4].a=12; // accde la valeur de a d un autre processeur
18
Fonctionnement synchrone
Chaque instruction est dcode par le matre et excute par tous les
processeurs
O modle fondamentalement synchrone
O pas de conflit d accs des variables possible
Comment est fait a[0]=12 ?
O Chaque processeur a un bit d activation
O dit au processeur s il doit excuter l instruction ou pas
O activation calcule par le compilateur complexit
Programmation de bas niveau
O C-like != fortran par exemple
O dcoupage des structures par le programmeur
O mais compilateur sophistiqu quand mme
Paralllisme de donnes sur architecture SIMD
19
volution architecturale
Dbut 90 : SIMD en perte de vitesse
O composants spcifiques donc chers
O idem pour les rseaux
O dpass en performances pures par des composants standards
O petit march donc prix lev
O rapidement obsoltes
Rseaux locaux standards deviennent performants
O Fast-Ethernet, Myrinet, etc.
O vous avez vu a hier
Les machines parallles deviennent MIMD
O processeur puissant standard+rseau d interconnexion rapide
20
Problmes du data-paralllisme
Intelligence du compilateur
O paralllisation automatique des boucles
O calcul des dpendances entre les donnes
compliqu, sujet de recherche encore actuelle
O exploitation correcte des machines mme non SIMD
rpartition des donnes sur les processeurs
problmes dalignement, de dfaut de cache
Gestion des structures de donnes irrgulires
O type liste, arbres,
O toutes les dpendances complexes entre objets
le compilateur ne s en sort plus!
Ncessit de langages plus volus
O HPF ou Fortran 90
21
HPF
Extension avec modification de la norme Fortran-90
Dfini en 93
But : avoir rapidement des compilateurs pouvant l implanter
Purement orients donnes, ne contient plus de primitives de gestion de
messages ou de synchro
Vise l efficacit sur architectures distribues aussi
Paralllisation non compltement automatique
O directives fournies par le programmeur pour le placement des donnes
O mais conserve un modle data-parallle (boucles FORALL)
22
Le modle HPF
Modle 4 niveaux
O Objets HPF normaux (tableau)
O mapps sur des templates qui reprsentent des groupes d alignement
dfinit les contraintes d alignement sur et entre les objets
permet de spcifier aussi la faon de les distribuer sur les
processeurs
O ces templates sont mapps sur des processeurs virtuels (machine
abstraite possdant une topologie), spcification dune distribution
O les processeurs virtuels sont mapps sur les processeurs physiques
Intuitivement
O une opration entre deux objets est plus efficace s ils sont sur le mme
processeur
O ces oprations peuvent tre excutes en parallle si elles peuvent tre
ralises sur des processeurs diffrents
23
Fonctionnement de HPF
Spcification de dpendances entre les objets
O par le mapping sur les templates
O possibilit de lier deux objets pour les aligner de la mme manire
O les oprations entre objets aligns l identique sont plus efficaces
O possibilit de raligner dynamiquement les objets
Distribution des objets
O dfinit le mapping des objets sur un ensemble de processeurs abstraits
O but : rapprocher sur la grille des processeurs abstraits les objets qui
interagissent
O deux possibles : BLOCK (suite d lments contiges) et CYCLIC
(pareil mais avec bouclage)
Instruction FORALL
O ~= au for parallle mais en plus puissant (description d intervalles,)
24
Fonctionnement de HPF(2)
Expression d indpendance d instructions
O par exemple deux instructions dans une boucle
Spcification de fonctions locales
O ne ncessitent pas de communications pour tre excutes -
> efficacit
Rsumons
O langage data-// pour architectures SIMD et MIMD
O alignement/distribution des donnes
O directives d aide au compilateur
O mlange des apports de diffrents langages
O largement utilis car disponibilit de compilateurs (Adaptor)
25
Machine Parallle
26
Machine Parallle
Une machine parallle est essentiellement un ensemble
de processeurs qui cooprent et communiquent
27
Processeur
Une machine parallle est essentiellement un ensemble
de processeurs qui cooprent et communiquent
28
Type de paralllisme

On distingue classiquement quatre types principaux
de paralllisme (Taxonomie de Tanenbaum):

SISD SIMD MISD MIMD
De nos jours cette classification peut paratre
un peu artificielle car le moindre micro-processeur
courant inclut lui-mme plusieurs formes
de micro-paralllisme.
29
Micro-Paralllisme
Permet nanmoins d'expliquer les bases
de l'architectures des ordinateurs, squentiels et
parallles.
Cette classification est base sur les notions
de flot de contrle
(deux premires

lettres,

I voulant dire ``Instruction'')
et flot de donnes
(deux dernires lettres, D voulant dire ``Data'').
30
Description des machines
Machine SISD
Machine SIMD
Machine MISD
Machine MIMD
31
Machine SISD
Une machine SI SD (Single I nstruction Single Data)
Cest ce que l'on appelle d'habitude une machine de Von Neuman.
Une seule instruction est excute et une seule donne
(simple, non-structure) est traite tout instant.

Le code suivant,
int A[100];
...
for (i=1;100>i;i++)
A[i]=A[i]+A[i+1];
s'excute sur une machine squentielle en faisant les additions
A[1]+A[2], A[2]+A[3], etc., A[99]+A[100]
la suite les unes des autres.
32
Machine SIMD
Une machine SI MD (Single I nstruction Multiple Data)
peut tre de plusieurs types, parallle ou systolique.
En gnral l'excution en parallle de la mme instruction
se fait en mme temps sur des processeurs diffrents
(paralllisme de donne synchrone).
Examinons par exemple le code suivant crit en
CM-Fortran sur la Connection Machine-5 avec
32 processeurs,
33
Machine SIMD
Une machine INTEGER I,A(32,1000)
CMF$ LAYOUT A(:NEWS,:SERIAL)
...
FORALL (I=1:32,J=1:1000)
$ A(I:I,J:J)=A(I:I,J:J)+A(I:I,(J+1):(J+1))
Chaque processeur i, 1 i 32 a en sa mmoire locale une tranche
du tableau A: A(i,1), A(i,2), ..., A(i,1000).
Il n'y a pas d'interfrence dans le calcul de la boucle entre les diffrentes
tranches: tous les processeurs excutent la mme

boucle sur leur propre
tranche en mme temps
34
Machine SIMD

Rparation d'un tableau sur les processeurs d'une machine SIMD typique
35
Machine MISD
Une machine MI SD (Multiple I nstruction Single Data)
peut excuter plusieurs instructions en mme temps
sur la mme donne. Cela peut paratre paradoxal mais
cela recouvre en fait un type trs ordinaire

de micro-
paralllisme dans les micro-processeurs modernes :
les processeurs vectoriels et les architectures pipelines.


36
Machine MISD
Un exemple de ``pipelinage'' d'une addition vectorielle est le suivant.
Considrons le code:

FOR i:=1 to n DO
R(a+b*i):=A(a'+b'*i)+B(a''+b''*i);

A, B et R sont placs dans des registres vectoriels qui se remplissent au
fur et mesure du calcul.
En ce sens, quand le pipeline est rempli, plusieurs instructions sont
excutes sur la mme donne

37
Machine MISD
``
Temps A ( i ) B ( i ) R ( i )
1 1 . . . 1 . . . . . . .
2 2 1 . . 2 1 . . . . . .
3 3 2 1 . 3 2 1 . . . . .
4 4 3 2 1 4 3 2 1 . . . .
5 5 4 3 2 5 4 3 2 1 . . .
6 6 5 4 3 6 5 4 3 2 1 . .
etc.


38
Machine MIMD

Le cas des machines MI MD (Multiple I nstruction Multiple Data)
est le plus intuitif.
On a plusieurs types

d'architecture possibles :
(1) Mmoire partage (Sequent)

(2) Mmoire locale avec rseau de communication (Transputer,
Connection Machine, local, par rseau d'interconnexion), ou systme
rparti C'est le cas (2) que l'on va voir plus particulirement avec PVM.
On pourra galement simuler le cas (1)
39
Architecture simplifie d'une machine
mmoire partage






40
Machine MIMD

Une machine MIMD mmoire partage (2) est principalement constitue
de processeurs avec des horloges indpendantes, donc voluant de faon
asynchrone, et communiquant en crivant et lisant des valeurs dans
une seule et mme mmoire (la mmoire partage).

Une difficult supplmentaire, que l'on ne dcrira pas plus ici, est que
chaque processeur

a en gnral au moins un cache de donnes, tous
ces caches devant avoir des informations

cohrentes aux moments
cruciaux.
41
Modle polydrique: fondements
et application la paralllisation
de programmes rguliers
42
Prsentation
Plan
Introduction la paralllisation automatique
Modle polydrique: fondements
Ordonnancement de boucles
Paralllisation de programmes rguliers
Application: compilation pour FPGA

43
Plan
Introduction la paralllisation automatique
O Historique
Types de machines parallles
Modles pour les machines parallles
Langage de programmation parallle
O Un modle simple: les architectures systoliques
44
Historique
Classification des machines parallles
(Flynn)
O En fonction du contrle de squences
dinstrutions
O Single Instruction Multiple Data : SIMD
O Multiple Instruction Multiple Data : MIMD
O En fonction de lorganisation de la mmoire
O Shared Memory: SM
O Distributed Memory: DM

45
Historique
Classification des machines parallles
O En fonction du rseau dinterconnexion
O rseaux dinterconnexion dynamique pour SM (crossbar
switch, rseaux base de bus, interconnection multi-tage)
O rseaux dinterconnexion statique pour DM (grille, arbre,
hypercube) En fonction de lorganisation de la mmoire
Autres types: rseaux de
neuronnes,processor in memory (circuits
reconfigurables)
46
Tendances
Single
Processor
SMP
MPP
SIMD
Cluster
NOW
0
100
200
300
400
500
j
u
i
n
-
9
3
n
o
v
-
9
3
j
u
i
n
-
9
4
n
o
v
-
9
4
j
u
i
n
-
9
5
n
o
v
-
9
5
j
u
i
n
-
9
6
n
o
v
-
9
6
j
u
i
n
-
9
7
n
o
v
-
9
7
j
u
i
n
-
9
8
n
o
v
-
9
8
j
u
i
n
-
9
9
47
Tendances, suite
Grappes de machines SMP
O PCs multiprocesseurs (Pentium,Alpha)
O Nuds de machines parallles (SP-3)
O Connexions de gros serveurs (Origin2K,SUN E10K).
Processeurs du commerce.
Logiciels standards performants.
Linux, NT.
48
Ecart Processeur/Mmoire
1
10
100
1000
DRAM
CPU
1
9
8
0

1
9
8
1

1
9
8
3

1
9
8
4

1
9
8
5

1
9
8
6

1
9
8
7

1
9
8
8

1
9
8
9

1
9
9
0

1
9
9
1

1
9
9
2

1
9
9
3

1
9
9
4

1
9
9
5

1
9
9
6

1
9
9
7

1
9
9
8

1
9
9
9

2
0
0
0

1
9
8
2

Ecart de Performance
Processeur-Mmoire:
(croissance 50% / an)
P
e
r
f
o
r
m
a
n
c
e

Temps
Loi de Moore
DRAM
9%/an.
(2X/10ans
)
Proc
60%/an.
(2X/1.5an)
49
Hirarchies mmoires profondes
Contrle
Bus
donnes
Stockage
second.
(Disque)
Processeur
R
e
g
i
s
t
r
e
s

Mmoire
principale
(DRAM)
Cache
Niveau
2
(SRAM)
C
a
c
h
e

I
n
t
e
r
n
e

1s
10,000,000s
(10s ms)
100,000 s
(.1s ms)
Vitesse (ns): 10s 100s
100s
Gs
Taille (octets):
Ks Ms
Stockage
tertiaire
(Disque/
bande)
Ts
Mmoire
distribue
Mmoire
Distante
Grappe
10,000,000,000s
(10s sec)
10,000,000 s
(10s ms)
50
Plan
Introduction la paralllisation automatique
O Historique
Types de machines parallles
Modles pour les machines parallles
Langage de programmation parallle
O Un modle simple: les architectures systoliques
51
Modle P-RAM
P processeurs, une mmoire partage
(modle SIMD-SM)
Les processeurs communiquent travers la
mmoire partage
Chaque opration prend une unit de temps
52
Modle BSP
BSP: bulk synchronous parallelism (modle
MIMD-DM)
Un ensemble de paires processeurs-
mmoires
L excution consite en succession de super-
step spars par des phases de
communications (synchronisation)
53
Modle plus prcis
Modlisation des cots de communication
O cot-envoi(L)=+L
Modlisation de la hirarchie mmoire
Modlisation du matriel spcifique de la
machine
O ALU spcifique
O registres
54
Limites de la modlisation
En gnral, un modle est soit peu raliste,
soit trop spcifique
La modlisation ne permet pas de se passer
d exprimentation pour valuer un programme
parallle.
Mais
elle aide comprendre la structure du calcul parallle
elle permet de formaliser la notion de paralllisation

55
Plan
Introduction la paralllisation automatique
O Historique
Types de machines parallles
Modles pour les machines parallles
Langage de programmation parallle
O Un modle simple: les architectures systoliques
56
Langage de programmation parallle
Les langages sont la charnire des
modles et des machines
Le langage idal serait:
O simple programmer (et debugger!)
O efficace
O portable
.. Il n existe pas
57
Exprimer le paralllisme
O Paralllisme de donnes
il exploite la rgularit des donnes et applique en
parallle un mme calcul des donnes diffrentes
O Paralllisme de contrle
il consiste faire des tches diffrentes simultanment
O Paralllisme de flux
technique du travail la chaine
chaque donne subit une squence de traitement
raliss en mode pipeline.

58
Programmer les machines
Mmoire partages
O espace d adressage commun
O mcanisme dexclusion mutuelle
Mmoire distibue
O communication par passage de message
O librairie de communication
59
Les langages data-parallles
Fortran 77/90/95 + directives
Lutilisateur spcifie une partie du paralllisme et la
rpartition des donnes
Prsent comme la boite noire pour la paralllisation
dapplications
Bonnes performances pour les codes rguliers
Quelques vraies applications paralllises
Beaucoup de r-criture de codes
Outil important pour lavenir du calcul numrique
parallle
60
Programmation data-parallle
Style de programmation caractris par:
O un flot de contrle unique: un seul programme dfinit les
oprations data-parallles,
O un espace de nommage global: le programmeur voit une seule
mmoire,
O des oprations parallles: le paralllisme dcoule des oprations
appliques aux donnes distribues sur les processeurs,
O des directives de compilation.
Les dtails de bas niveau (distribution effective des donnes,
communications) sont transfrs du programmeur au compilateur.
But : scarter des spcificits de la machine et encourager une
diffusion plus large du paralllisme.
61
Paralllisation dapplications numriques
Algorithme squentiel Distribution de donnes
Algorithme parallle
HPF/OpenMP
Bibliothques de calcul
squentielles
parallles
Bibliothques de
communication
programme HPF/OpenMP
programme F77 + MP
F77/90
Etude perfs + monitoring
62
High Performance Fortran
Issu dun forum runissant chercheurs, constructeurs et
dveloppeurs d applications.
Bas sur Fortran 90 et destin aux machines MIMD DM.
Directives de placement des donnes sur les processeurs.
Constructions data-parallles (FORALL) et spcification du
paralllisme (INDEPENDENT et PURE).
Fonctions intrinsques et bibliothque standard.
HPF-2 pour les applications irrgulires.
Nombreux compilateurs et outils.
Performances moyennes en gnral.
63
Alignement et distribution
64
Paralllisme implicite
Langage fonctionnels

Langages dclaratifs

Paralllisation de programmes squentiels
65
Paralllisation automatique: difficults
Analyse de dpendences
Do i=1,N
a=0
Do j=1,N
a=a+B[i,j]
C[i]=a
DoAll i=1,N
a[i]=0
Do j=1,N
a[i]=a[i]+B[i,j]
C[i]=a[i]
66
Paralllisation automatique: difficults
Pointeurs



Contrle dynamique
Do i=1,N
A[i]=
B[i]=A[C[i]]
While C>0 Do
.
67
Paralllisation automatique: difficults
Granularit
O Partitionnement des calculs en fonctions du
rapport de cot calcul/communication
Gnration de code
O Compilation descommunications
68
Outils utilisant le modle polydrique
Pico (HP Palo Alto)
Compaan (U. Leiden, Berkeley)
MMAlpha (INRIA Rennes)
69
Compaan
70
MMAlpha
FPGA
ASIC
Uniformisation
Drivation RTL
Ordonnancement
Alpha
VHDL
71
Rfrences cours 1
Transparent et Exos sur
O Www.ens-lyon.fr/trisset
P. Quinton et Y. Robert, Algorithmes et architectures
systoliques, Masson, 1989.
commence dater, mais la partie algorithmique et les
chapitres 11 et 12 sont toujours d'actualit.
V. Kumar, A. Grama, A. Gupta et G. Karypis,
Introduction to Parallel Computing, Benjamin
Cummings, 1994.
Bonne introduction gnrale
72
Plan
Introduction la paralllisation automatique
O Historique
Types de machines parallles
Modles pour les machines parallles
Langage de programmation parallle
O Un modle simple: les architectures systoliques
73
Le modle Open MP
74
Prsentation de Open MP
API portable, oriente mmoire partage
O existe pour C, C++, Fortran 77 et 90
O existe sur plusieurs architectures (UNIX et NT)
Conu pour du paralllisme grain fin
O essentiellement pour les boucles
O utilisable aussi pour des algorithmes grain moyen
Positionnement
Application parallle
Threads du systme ou d une librairie
Runtime Open MP
Compilateur Open MP
75
Exemple de boucle
Annotation sur les threads, les objets partags et privs
O A est partag, I est priv (local chaque thread)
program
c$omp parallel do
c$omp& shared (A) private(I)
do I=1,100
...
enddo
c$omp parallel
end
A
DoP
I=1
I=2
I=3
I=4
I=5
I=6
Barrire
Thread
76
Duplication et recopie de variables
Recopie temporaire de variables partages (en C)
#pragma omp threadprivate(A)
struct Astruct A;
#pragma omp parallel copyin(A)
{ ... }
/* rgion parallle suivante */
#pragma omp parallel
{ ...}
A recopi dans tous
les threads sauf
dans le matre
Rcupre les valeurs de la rgion
parallle prcdente
77
Section critique et partage de variables
Barrire et exclusion mutuelle
#pragma omp parallel private(i,j)
shared(a,b,n,m,sum)

for(j=1;j<=n;j++)
#pragma omp for
for(i=1;i<=n;i++) {
#pragma omp critical
sum=sum+a[i,j];
}
#pragma omp barrier
b(j)=sum;
}

Exclusion mutuelle sur
l accs sum
Synchronisation pour l attente de tous les threads
78
Comparaison avec les autres modles
MPI Threads OpenMP
Portable ~=
Scalable
Performance
Data-parallel
Haut niveau
Proche du
squentiel

Prouvable
79
Particularits
Ordonnancement peut tre effectu par le runtime
O directive schedule spcifiable pour chaque boucle
Possibilit de relaxer les contraintes de symchronisation
O laiss des threads continuer leur excution mme si tous n ont pas fini
la boucle
Pourquoi utiliser OpenMP ?
API portable et standard pour toutes les machines mmoire partage
extension de langages existants
facilit de portage d un code squentiel
suffisament gnral pour des applications data-parallles
compilateurs largement disponibles
80
Conclusion (provisoire) sur le data-//
Premier type de paralllisme largement utilis
O calculateurs vectoriels
O architecture SIMD
Adapt au
O traitement sur des donnes rgulires
O architectures fortement couples
Programmation aise
O mais crire les compilateurs est trs compliqu
volution architecturale (importance des caches, des pipe-lines, )
constructeurs jugs plus sur la qualit du code produit que sur les
caractristiques de la machine (ex : Cray)
Largement utilis pour beaucoup de codes scientifiques
O mto, aronautique, ...
81
Paralllisme matriel : seconde poque
Fin des annes 80
O dclin des architectures tout-propritaires
O exemple type : Cray avec le T3D (processeurs ALPHA, rseau haut
dbit propritaire)
O dclin des architectures SIMD : nouveaux types d applications
parallles envisageables
O mergence de nouveaux modles de programmation
Orients instructions
Tendance actuelle
O processeurs standards + rseau standard (structure de grappes de
machines) : pas trop cher
O architectures spcifiques (SGI Origin 2000, T3?) : chers, offrent des
fonctionnalits spcifiques tant matrielles que logicielles

82
Paralllisme dinstructions
Paralllisme traditionnel
O application parallle = ensemble de flots dexcution concurrents
O programmation guide par les instructions
O ncessit de partager de donnes, ventuellement d oprations de
synchronisation,
O structuration en tches /= en blocs de donnes sur lesquels effectuer des
oprations
Application parallle = ensemble de tches partageant des donnes (y
accdant en parallle)
Deux problmes principaux
O comment structurer une application en tches ?
O comment communiquer pour
partager les donnes,
se synchroniser ?
83
Paradigmes de programmation
Interface des systmes d exploitation peu adapte
O gestion des processus : fork, exec,
O Communications : IPC, sockets, XDR,
Diffrentes abstractions fournies par les supports d excution
O Activits
Acteur, processus, objet actif, threads,
O Communication
Envoi de messages (synchrone ou asynchrone)
Mmoire partage (objet, page, synchronisation, cohrence, )
Appel de procdure distance
N Dfinissent des modles de programmation
84
Schmas de programmation parallle
Matre/Esclave
O un coordinateur lance toutes les tches esclaves
O coordination centralise du travail et des I/O
SPMD
O le mme programme s excute sur diffrentes parties du mme
problme
Asynchrone (MIMD?)
O ensemble de programmes diffrents
O chaque programme excute une fonction diffrente de l'application
Schmas hybrides
O data-flow, task farming,
N Dfinissent des schmas de communication et de synchronisation !=
modles de programmation
85
Architectures de type SMP
mmoire partage
86
Caractristiques des SMP
Processeurs partagent physiquement la mmoire
O accs au mme bus
Paralllisme matriel au sein du systme
O ex: ensibull : 8(?) processeurs
P P
M
Comment exploiter ce paralllisme ?
87
Exploitation des SMP
Applications traditionnelles
O un processus UNIX par CPU
O partage du temps au niveau du processus lourd
Applications parallles
O paralllisme intra-processus
O ncessit de pouvoir multiprogrammer un processus lourd
O activits encapsules dans le mme process UNIX
= processus lgers (threads)
88
Les processus lgers (threads)
Principe
O processus lourd encapsule les donnes
O processus lger contenu dans un processus lourd
O contexte d excution seulement : peu coteux
Historique
O utilis pour la programmation systme
dmons
recouvrement latence communication/accs disque
O plus rcemment utilis pour le calcul
permet l excution efficace de petites tches
exploitation des SMP
89
Les threads POSIX : Pthreads
Interface standard de programmation pour les threads
O portabilit des programmes utilisant les threads
Fontionnalits
O cration/destruction de threads
O synchronisation (conditions, mutex, smaphores)
O ordonnancement, priorits
O signaux
Attributs d un thread POSIX
O caractrisation de son tat
pile, ordonnancement, donnes prives
90
Cration d un thread POSIX
Cre un thread avec les attributs attr
excute la fonction start_routine avec arg comme argument
tid : identifieur du thread cr (quivalent au pid UNIX)





+ Fork/join
+ Primitives de synchronisation
int pthread_create (
pthread_t *tid,
pthread_attr *attr,
void* (*start_routine)(void *),
void *arg);
91
Utilisation des threads pour le calcul
Exemple : produit de matrices
O un thread = calcul d une case
O un thread = calcul d une ligne/colonne
Granularit quelconque
O impossible avec des processus lourds : cot excessif
O efficacit => cot gestion activits << cot activits
Assembleur de la programmation parallle
O peut amener une grande efficacit
O pnible utiliser
Quid des SMPs ?
Quid des threads en distribu ?

92
Utilisation des threads pour
exploiter les architectures SMP
93
Plan
Les diffrents types de threads
O Threads utilisateurs
O Threads systme
Correspondance entre les classes de threads dans
Solaris
Ordonnancement
O Politique standard
O Politique spcifique (priorit, temps rel, )
Conclusion
94
Les processus lgers utilisateurs
Lis lespace mmoire dun processus
Indpendant du systme sous-jacent
Ordonnanceur Ordonnanceur
Systme
Ordonnanceur
CPU CPU CPU
95
Avantages
Faible cot des oprations
O Cration, destruction
O Changement de contexte lger
O Possibilit den avoir un grand nombre
Souple
O Rpartition du temps grable par le programmeur,
pas de risque de blocage du systme

96
Inconvnients
Pas de paralllisme intra-processus
O Sous exploitation des machines SMP
Partage du temps deux niveaux
Entre les processus lourds
Entre les processus lgers dun mme processus
O Pas de partage global au prorata du nombre de
processus lgers
Pas de protection mmoire entre les activits
97
Les processus lgers systme
Grs par le systme d exploitation
Existent dans le noyau hors des applications
CPU CPU CPU
98
Avantages
Exploitation des SMP
O Interactions entre les activits applicatives et les
activits noyau ?
Ordonnancement global de toutes les
activits
O Prise en compte par le systme
O Rpartition quitable (?) entre les utilisateurs au
prorata de leurs activits
Mcanisme de protection entre les activits
99
Inconvnients
Gestion coteuse
O Passage par le noyau = surcot important
Medium-weight threads
Plusieurs activits accdent au noyau
simultanment
Rentrance obligatoire du noyau
Ordonnancement non contrlable par le
programmeur
100
Historique de SOLARIS
Annes 80
O SunOS 4 (Solaris 1) : Noyau monolithique non
rentrant de la famille BSD
O Bibliothque de threads utilisateurs LWP au
standard POSIX
Rcriture complte dbut des annes 90
O Solaris 2, threads systme, standard SysV,
rentrant => Support des SMP
101
Les threads de Solaris
Deux types de threads
O Systme : propres au noyau, scheduls par lui sur
les processeurs => entits dexcution
O Utilisateurs : standard POSIX, propre lespace
mmoire dun processus => contexte dexcution
(pile)
Entits diffrentes de nature distincte
O Comment les faire correspondre ?
102
Interaction
Notion de processeur virtuel (LWP)
O Interface entre les user et les kernel threads
Ils sont associs aux processus lourds
Le nombre de LWPs est indpendant du
nombre de threads utilisateurs du processus
Au moins 1 LWP par processus
Association possible entre threads
utilisateurs et LWP
103
Exemple
Systme
CPU CPU CPU CPU CPU
104
Utilisation des threads
Un paramtre lappel de pthread_create
choisit entre la cration d un LWP ou d un thread
user
set_concurrency fixe le nombre de LWPs du
processus
Quand tous les LWPs d un processus sont
bloqus, le systme en cre un dautorit
Le noyau schedule les LWPs et ses threads
propres sur les processeurs

105
Caractristiques
Conservation dune interface applicative
portable (POSIX)
Efficacit des threads
O Cration/destruction
O Synchronisation
Mapping sur les threads noyaux
O Indpendants des threads users
106
Performances
Temps de cration dun thread
(Ultra SPARC 1, Solaris 2.5)
107
Performances (2)
Temps de synchronisation de threads
(Ultra SPARC 1, Solaris 2.5)

Micro secondes Ratio
Threads non lies 60 1
Threads lies 360 6
Entre processus 200 3.3
108
Ordonnancement
Ordonnancement deux niveaux
O Threads sur les LWPs
O LWPs sur les processeurs
Politique standard : partage du temps
O Rpartition homogne entre les LWPs (modulo
les priorits)
O Rpartition entre les utilisateurs
109
Classes d ordonnanceur
Possibilit de choisir un type
dordonnancement par LWP
O Time-Sharing : priorit = pourcentage de temps
processeur alloue
O Real-Time : priorit = ordre dexcution
LWP schedul par le noyau
Nouvelle version
O Rpartition entre les utilisateurs priment
110
Architecture distribue
Architectures SMP
O limites en taille
maximum : une centaine
O spcialises
lies des constructeurs : coteuse
Dveloppement des rseaux
O locaux : Fast-Ethernet, Myrinet,
O grande chelle : internet
O prix baissent, dbits augmentent
Utilisation d architectures distribues
O petite chelle (une salle, un btiment)
O grande chelle (pays, monde) : mtacomputing
= Nouveau modle de programmation

111
Modles bass sur lenvoi de
messages
112
Conclusion sur le passage de messages
Modle simple
O efficace sur tout rseau car proche du matriel
O abstractions manipules de bas niveau
O assembleur de la programmation parallle
Adapt pour des schmas de programmation simples
O matre/esclave de base
O SPMD avec protocole de partage rudimentaire (centralise)
Inadapt pour des schmas compliqus
O algorithmique distribue complexe
O debugage compliqu (interblocage, non dterminisme)
rsultat
et performances!
113
Threads et distribution
Comment utiliser les threads dans un contexte distribu ?
O Activits de faible granularit
O SMP en distribu
O recouvrement calcul/communication
Deux approches
O envoi de messages
les threads communiquent directement entre eux
O problme de la dsignation
O algorithmique distribue complique
O appel de procdure distance
idem au RPC (Remote Procedure Call)
demande d excution d un service distant
cration d un processus pour excuter l appel
la sauce JAVA : RMI
114
Modles bass sur le RPC
115
Pourquoi le RPC ?
Constat
O possibilit de dcomposer une application en tches indpendantes
(processus)
O passage de donnes au dbut de lexcution, collecte des rsultats la
fin
= comportement typique d un RPC
Mais
O les tches sont souvent de faible dure
O si ce sont des processus Unix
= cot gestion (cration, destruction, ordonnancement) > cot du
travail
Solution
O les regrouper = on retombe sur un systme passage de messages
O utiliser des processus peu coteux
Les Processus lgers (threads)
116
Comparaison avec les autres modles
MPI Threads OpenMP
Portable ~=
Scalable
Performance
Data-parallel
Haut niveau
Proche du
squentiel

Prouvable
117
Conclusion
But de la programmation parallle
O efficacit
Diffrents paramtres entrent en jeu
O algorithme parallle
O modle de programmation
O performances du support d excution
O quilibrage de charge, ordonnancement
Modles mmoire partage
O facile utiliser
O performances pas toujours au rendez-vous (sauf matriel spcifique)
Modles passage de message
O performant sur architectures traditionnelle
O compliqu utiliser (peu naturel pour un programmeur)
118
Solution ?
Modle mulant une mmoire partage
O dcomposition en tches (processus)
O chaque tche accde des variables partages
liste des variables
type d accs (lecture, criture)
O les variables dfinissent des dpendances entre les tches
construction d un graphe de dpendances
utilisation de ce graphe pour dcider qui doit possder la variable
Caractristiques
O programmation facilite (proche du squentiel)
O minimisation des communications efficacit en rseaux et en SMP
Athapascan-1
119
Modliser le monde rel
Le monde est fait dacteurs ou dAgent
Le monde est le lieu :
O dvnements (quelque chose se produit une date
donne, sans dure)
Lutilisateur dcroche sont tlphone.
Le cours commence
O Dactivits (phnomnes continus)
La sirne hurle
La rivire coule
Le fichier se charge
120
Interaction monde rel systme
Les acteurs






Le monde rel est fait dAgents particuliers que
lon appelle acteurs
Le systme, que lon peut dcomposer sous
forme dAgents, interagit avec les acteurs du
monde rel
Systme
Humain Vanne
121
Paralllisme de conception
Les agents du systmes ont a priori une vie
indpendante
O Certains sont actifs, rpondent des
vnements de lenvironnement
O Certains ne font que rpondre des
sollicitations internes, lappelant attendant la
rponse. Squentialit de la collaboration
122
Paralllisme matriel - Paralllisme
dexcution
Distribution
O Plusieurs machines ; plusieurs processeurs
Pour des raisons de performance
Pour ajouter de la redondance (tolrance aux
fautes)
Pour tenir compte du caractre rparti de
lapplication, des utilisateurs

123
Distribution : exemple de dploiement

Host
appl ication
Cl ient
S1
web servi ce
Service
S2
web servi ce
Service
S3
i nfrastructure
DB
web servi ce
Service
HTTP
HTTP
HTTP
JDBC
JDBC
124
Systmes distribus : exemples
Rseau de stations de travail
Internet
Intranet
Une voiture

125
Systme distribu :
The Internet
a network host
work
stations
a local network
126
Conception darchitecture : distribution
(environnement ferm)
Distribution physique
O Multiplexage automobile









O Isolation des fonctions
Diagnostic
Flexibilit / modularit
? Baisser les cots ?
I
m
a
a
g
e
s

e
x
t
r
a
i
t
e
s

d
e

:

S
y
s
t
e
m

L
e
v
e
l

D
e
s
i
g
n

F
o
r

R
e
a
l

T
i
m
e

A
p
p
l
i
c
a
t
i
o
n
s

A
.

F
e
r
r
a
r
i


h
t
t
p
:
/
/
s
a
n
c
y
.
e
n
s
i
e
t
a
.
f
r
/
m
d
a
/
e
c
o
l
e
M
D
A
2
0
0
2
/
p
r
e
s
e
n
t
a
t
i
o
n
s
/
F
e
r
r
a
r
i
-
R
T
S
S
-
A
F
-
4
.
p
d
f

127
Conception darchitecture :
distribution (environnement ferm)
I
m
a
a
g
e
s

e
x
t
r
a
i
t
e
s

d
e

:

S
y
s
t
e
m

L
e
v
e
l

D
e
s
i
g
n

F
o
r

R
e
a
l

T
i
m
e

A
p
p
l
i
c
a
t
i
o
n
s

A
.

F
e
r
r
a
r
i


h
t
t
p
:
/
/
s
a
n
c
y
.
e
n
s
i
e
t
a
.
f
r
/
m
d
a
/
e
c
o
l
e
M
D
A
2
0
0
2
/
p
r
e
s
e
n
t
a
t
i
o
n
s
/
F
e
r
r
a
r
i
-
R
T
S
S
-
A
F
-
4
.
p
d
f

128
Centralized vs. Distributed Computing


mainframe computer
workstation
network host
network link
terminal
centralized computing
distributed computing
129
Paralllisme matriel - Paralllisme
dexcution
Concurrence
O Paralllisme interne aux processeurs, aux
machines
O 2 ou plusieurs actions sont concurrentes si
elles peuvent sexcuter simultanment

130
Concurrence : exemple de
dploiement

Host
appl ication
Cl ient
database
DB
Service
131
Modle de conception modle
dexcution
Approche Compilation. Le paralllisme peut tre
extrait par des outils informatique (parallliseurs,
vectoriseurs, outils de synthse de circuits)
partir dune description mathmatique dun
problme ou partir dun programme squentiel.
Approche Machine virtuelle. Le programmeur
dispose du concept de concurrence et programme
avec lhypothse dune machine virtuelle
paralllisme infini. Des mcanismes lexcution
sassure de lexcution du programme sur les
ressources matrielles disponibles.
132
Un modle en couches (Yet Another)
Squentiel (jetons)
Parallle choix-(rseau)
Squentiel (bus, tampon de la carte
rseau)
Parallle choix-(API OS threads)
Squentiel (OS internal)
Parallle choix-(multiprocesseur) ????

133
Menu : plat du jour
Dfinition du paralllisme
O Concurrence versus distribution
O Paralllisme dexcution
Exemples de systmes distribus
Modlisation dynamique
Problmes emblmatiques
O De la concurrence
O De la distribution
Paralllisme, concurrence et langage
Systmes ractifs et lments en Java
134
Les trois composantes dune
modlisation

Modle temporel
Modle Fonctionnel
Modle structurel (agent)
Que fait le systme?
Squencement des actions
dans le monde rel/ le systme.
Quels objets constituent
le monde rel/le systme?
135
Modlisation dynamique du systme
Dcrit le comportement des agents et leur
volution dans le temps

Modle dynamique du systme identifie les
diffrents vnements venant du monde externe
et montre les enchanements dans le systme
que provoquent ces vnements externes
UML
O Diagrammes dtat (au niveau dun objet)
O Diagrammes de squence ou collaboration
(collaboration entre agents
O Diagrammes dactivit
136
Transitions dtat
Transition
provoque par
un vnement
Na pas de
dure (au
niveau analyse
ou conception)
Dclenche
traitement
Dure dun tat
Livre
libre
achat
Livre
Rserv
rservation
libration
Livre
prt
emprunt
Livre rendu
emprunt
137
Diagramme de squence : appel tlphonique
l oop
*[unt i l done]
cal lInProgress (state)
cal li ng : Suscriber : Swi tch : Swi tch cal led : Suscri ber
di git
offHook
di alTone
connect
ring
al erting
ringback
answer
answer
answer
138
cal lInProgress (state)
cal li ng : Suscriber : Swi tch : Swi tch cal led : Suscri ber
release
onHook
release
onHook
clear
clear
Diagramme de squence : raccrocher

139
Communication entre activits
Dlgation Synchrone
O Appel de procdure
O Appel de procdure/ mthode distant
RPC/RMI

Message
O Synchrone (attente de lmetteur par une
sorte daccus de rception)
O Asynchrone (lmetteur ne fait que dposer
le message)

Dsignation directe ou indirecte

140
Attention :
1) Communication par messages n implique pas rseau.
2) Rseau n implique pas communication par messages.
Rseau avec des messages
Paradigme par messages
Mmoire partage
Paradigme variables partages
TRANSPARENCE
141
Menu : plat du jour
Dfinition du paralllisme
O Concurrence versus distribution
O Paralllisme dexcution
Exemples de systmes distribus
Modlisation dynamique
Problmes emblmatiques
O De la concurrence
O De la distribution
Paralllisme, concurrence et langage
Systmes ractifs et lments en Java
142
Concurrence et distribution : les
similitudes
Paralllisme

Synchronisation

Communication entre activits
143
Concurrence : quelques problmes
spcifiques
Partage de donnes
O Accs exclusif : exclusion mutuelle
Exemple plus loin

quit - vivacit
O Tous les processus auront finalement accs
la ressource dsire (processeur, mmoire,
imprimante )
144
Distribution : quelques problmes
spcifiques
Partage de linformation
O Mise en commun de linformation
O Cohrence
Communication par message
145
Distribu : communication par messages

Les messages peuvent se perdre, se
dupliquer, saltrer
On ne sait pas faire la diffrence entre un
rseau en panne et un rseau lent
O Si je ne reois pas un message, cela peut
vouloir dire :
Que le site metteur est en panne, que le rseau
est en panne
Que le site metteur ou le rseau est surcharg
Que le message est perdu

O Quid de ltat global, dune heure globale ?

O Exemple le problme des 2 armes encerclant
Napoleon (modle asynchrone)
146
Un problme du distribu : le
dsquencement

pas d argent
dposer (C1, 8)
;
retirer (C1, 7) ;
client
Banque
Solution : accus de rception
147
Diffusion atomique. Cohrence de
caches
Variable/objet partag 3
4
3
3
A B C D
148
Diffusion atomique. Cohrence de
caches
Variable/objet partag 4
3
3
4
4
A B C D
149
Menu : plat du jour
Dfinition du paralllisme
O Concurrence versus distribution
O Paralllisme dexcution
Exemples de systmes distribus
Modlisation dynamique
Problmes emblmatiques
O De la concurrence
O De la distribution
Paralllisme, concurrence et langage
Systmes ractifs et lments en Java
150
Paralllisme, concurrence et langage
Langage squentiel (Basic, C, Pascal, C++)
et utilisation de primitives de bas niveau
d'un noyau ou excutif
(API : Interface de Programmation d Application)

Langage parallle (Ada, Java, , VHDL)
comportant directement le concept de
processus / thread/ tches et les outils
d exclusion mutuelle, de synchronisation et
de communication

151
Langage de haut niveau
Programme crit dans un langage de haut
niveau (concept de processus, exclusion
mutuelle, synchronisation)

Compilation

Code contenant des appels systmes de
bas niveau

Java Ada
152
L instruction concurrente
CONC Inst1 || Inst2 || Inst3 END
CONC
int x = ;
int y = ;
int min, max, produit ;
CONC
if (x <y) min = x else min = y ;
||
if (x <y) max = y else max = x ;
||
produit = x * y ;
END CONC ;
153
Graphe de l instruction
x=
0;
y=0;
x=x+1;
y=y+1;
z=x+y;
154
a
b
c
i
j
Multiplication de deux matrices carrs
155
Multiplication de matrices
for (int i=0; i < n; i++) conc
for (int j=0; j < n ; j++) conc
{ double somme = 0.0;
for (int k =0, k < n,
k++)
somme = a[i,k] * b[k,j]
+ somme ;
c[i,j] := somme;
}

156
Un modle dexcution concurrent :
Processus et threads
Modle d excution
Flot squentiel dexcution dinstructions
Processus : zone mmoire protge
Thread : processus lger au sein dun
processus
O Flot squentiel
O Partage mmoire
O Threads Java, thread utilisateurs POSIX,
threads noyaux, lightweight process
157
Threads Java
Sorte de processus, cest dire un simple
flot squentiel dexcutions dinstructions
Caractris par
O Un corps (body) : mthode run dun agent
O Des tats (state)
O Une priorit (priority)
Processus
Threads
158
Process State Transition Diagram
Simplifed finite state diagram for a process's lifetime
start
ready
running
blocked
terminated
dispatch
queued
event completion waiting
for event
exit
159
Processus Java
Il y a trois types de programmes Java :
applications, applets et servlets, tous crits en tant
que classes.
O Une application Java a une mthode main,et est
excute comme un processus indpendant.
O Une applet ne possde pas de mthode main, et est
excute au travers dun navigateur ou du programme
appletviewer.
O Une servlet ne possde pas de mthode main, et est
excute dans le contexte dun serveur web.
Un programme Java est compil en bytecode, un
code objet universel. Quand il est excut, le
bytecode est interprt par une Machine Virtuelle
Java Machine (JVM).

160
Trois types de programmes Java
Applications
un programme dont le byte code peut tourner
sur nimporte quel systme qui possde une
Machine Virtuelle Java (JVM). Une application
peut tre standalone (monolithique) ou
distribue (si il interagit avec dautres
processus).
Applets
Un programme dont le byte code est tlcharq
dune machine distante et qui sexcute dans la
Machine Virtuelle du navigateur.
Servlets
Un programme dont le byte code rside sur une
machine distante et est excut sur requte
dun client HTTP (un navigateur ?).
161
Trois types de programmes Java
computer
Java object
Java Virtual Machine
A standalone Java application is run on a local machine
Java object
Java Virtual Machine
An applet is an object downloaded (transferred) from a remote machine,
then run on a local machine.
request
response
a servlet
an applet
Aservlet is an object that runs on a remote machine and
interacts with a local program using a request-response protocol
a process
162
Crer des threads en Java
2 faons
O Par hritage de la classe Thread


O Par implmentation de linterface Runnable
163
Interface Runnable
::MyRunnable
thread
run()
interface
java::lang::Runnable