Vous êtes sur la page 1sur 67

Les architectures parallles et leur

programmation pour le calcul


scientifique

Yves Denneulin

Plan du cours
Introduction au paralllisme
Le paralllisme de donnes
prsentation
illustration sur deux langages data parallles
mpl
HPF, Open MP

Le paralllisme dinstructions
prsentation
les catgories
passage de messages (MPI)
appels de procdures distants (PM2, Athapascan-0)

Le futur(?) du calcul parallle : le mtacomputing


2

Introduction(?) au paralllisme
Paralllisme
utiliser plusieurs ordinateurs ensemble pour rsoudre des problmes
plus gros (taille mmoire, espace disque)
plus rapidement (puissance CPU)

Mot cl : efficacit

Diffrents domaines de recherche


thoriques
algorithmique
ordonnancement

pratiques
supports
modles

si on veut de l efficacit les deux sont videmment lies


3

Environnement logiciel parallle


Composants ncessaires pour lexcution d un
programme parallle

Application
Compilateur
Support d excution
Systme d exploitation
Hardware
4

Modles de programmation parallle


Dfinies par
le compilateur
le support d excution

Buts
facilit de programmation
proche du squentiel
proche d un modle de description dalgorithmes parallles

PRAM
BSP
...
efficacit = f(algorithme, compilateur, support, systme, hardware)
portabilit = f(support, algorithme)
scalabilit
obsolescence du matriel
utilisation de plusieurs sites pour la mme application (meta-computing)

Les dbuts du paralllisme


Multiprogrammation
notion de processus
systme Multics (~65)
toujours dactualit, au cur des UNIX et de NT

Programmation concurrente
les coroutines (Djikstra, 68)
multiprogrammation grain plus fin
problmes de synchronisation

Paralllisme simul
pas de machine contenant rellement du paralllisme

Paralllisme matriel : premire poque


Processeurs vectoriels (Cray, ~1976)

circuit spcifique
oprations arithmtiques lmentaires (+, )
donnes manipules : vecteurs
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

mme opration sur un ensemble de donnes


le paralllisme se fait sur les donnes (par opposition aux instructions)
Paralllisme de donnes
fonctionnement naturellement synchrone

Classification traditionnelle
SIMD : Single Instruction (flow) Multiple Data
7

Modle paralllisme de donnes


Principe algorithmique
dfinir des structures de donnes (souvent) rgulires (vecteurs, matrices)
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

Importance de la compilation
Le compilateur doit tre intelligent
Dcoupage de la boucle

Si le processeur vectoriel ne sait calculer


que 50 additions en parallle
-> 2 cycles au lieu d un

Caractristiques
Modle simple et naturel
programmation simple
passage direct partir de l algorithme squentiel

compilateur peu compliqu crire


efficacit peu prs garantie

 pour les architectures vectorielles et SIMD en gnral


cas particulier : le pipe-line (processeurs super-scalaires)

Adapt un certain type dapplications


calcul sur des structures rgulires
applications scientifiques et certaines simulations

10

MPL
Langage data-parallle
pour une machine prcise : Maspar MP-1
machine SIMD de 1024 16384 processeurs
architecture : un processeur performant en scalaire qui commande 16384
processeurs scalaires qui font tous la mme chose
chaque processeur a une mmoire locale associe
topologie des communications : grille 2D torique

commande

11

Variables parallles
Deux types de variables dans le langage
scalaire : rside dans la mmoire du processeur matre
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
12

Communication entre les processeurs


Accs des cases mmoire distantes
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

13

Fonctionnement synchrone
Chaque instruction est dcode par le matre et excute
par tous les processeurs
modle fondamentalement synchrone
pas de conflit d accs des variables possible

Comment est fait a[0]=12 ?


Chaque processeur a un bit d activation
dit au processeur s il doit excuter l instruction ou pas
activation calcule par le compilateur complexit

Programmation de bas niveau


C-like != fortran par exemple
dcoupage des structures par le programmeur
mais compilateur sophistiqu quand mme

 Paralllisme de donnes sur architecture SIMD

14

volution architecturale
Dbut 90 : SIMD en perte de vitesse

composants spcifiques donc chers


idem pour les rseaux
dpass en performances pures par des composants standards
petit march donc prix lev
rapidement obsoltes

Rseaux locaux standards deviennent performants


Fast-Ethernet, Myrinet, etc.
vous avez vu a hier

Les machines parallles deviennent MIMD


processeur puissant standard+rseau d interconnexion rapide

15

Problmes du data-paralllisme
Intelligence du compilateur
paralllisation automatique des boucles
calcul des dpendances entre les donnes
compliqu, sujet de recherche encore actuelle

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


type liste, arbres,
toutes les dpendances complexes entre objets
 le compilateur ne s en sort plus!

Ncessit de langages plus volus


HPF ou Fortran 90
16

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
directives fournies par le programmeur pour le placement des donnes
mais conserve un modle data-parallle (boucles FORALL)

17

Le modle HPF
Modle 4 niveaux
Objets HPF normaux (tableau)
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

ces templates sont mapps sur des processeurs virtuels (machine abstraite
possdant une topologie), spcification dune distribution
les processeurs virtuels sont mapps sur les processeurs physiques

Intuitivement
une opration entre deux objets est plus efficace s ils sont sur le mme
processeur
ces oprations peuvent tre excutes en parallle si elles peuvent tre
ralises sur des processeurs diffrents

18

Fonctionnement de HPF
Spcification de dpendances entre les objets

par le mapping sur les templates


possibilit de lier deux objets pour les aligner de la mme manire
les oprations entre objets aligns l identique sont plus efficaces
possibilit de raligner dynamiquement les objets

Distribution des objets


dfinit le mapping des objets sur un ensemble de processeurs abstraits
but : rapprocher sur la grille des processeurs abstraits les objets qui
interagissent
deux possibles : BLOCK (suite d lments contiges) et CYCLIC (pareil
mais avec bouclage)

Instruction FORALL
~= au for parallle mais en plus puissant (description d intervalles,)
19

Fonctionnement de HPF(2)
Expression d indpendance d instructions
par exemple deux instructions dans une boucle

Spcification de fonctions locales


ne ncessitent pas de communications pour tre excutes -> efficacit

Rsumons

langage data-// pour architectures SIMD et MIMD


alignement/distribution des donnes
directives d aide au compilateur
mlange des apports de diffrents langages
largement utilis car disponibilit de compilateurs (Adaptor)

20

Le modle Open MP

Prsentation de Open MP
API portable, oriente mmoire partage
existe pour C, C++, Fortran 77 et 90
existe sur plusieurs architectures (UNIX et NT)

Conu pour du paralllisme grain fin


essentiellement pour les boucles
utilisable aussi pour des algorithmes grain moyen

Positionnement

Application parallle
Compilateur Open MP
Runtime Open MP
Threads du systme ou d une librairie

22

Exemple de boucle
Annotation sur les threads, les objets partags et privs
A est partag, I est priv (local chaque thread)

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=4

I=2

I=5

I=3

I=6
Barrire
23

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
24

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++) {
Exclusion mutuelle sur
#pragma omp critical
l accs sum
sum=sum+a[i,j];
}
#pragma omp barrier
b(j)=sum;
}
Synchronisation pour l attente de tous les threads
25

Comparaison avec les autres modles

Portable
Scalable
Performance
Data-parallel
Haut niveau
Proche du
squentiel
Prouvable

MPI Threads
~=

OpenMP

26

Particularits
Ordonnancement peut tre effectu par le runtime
directive schedule spcifiable pour chaque boucle

Possibilit de relaxer les contraintes de symchronisation


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

27

Conclusion (provisoire) sur le data-//


Premier type de paralllisme largement utilis
calculateurs vectoriels
architecture SIMD

Adapt au
traitement sur des donnes rgulires
architectures fortement couples

Programmation aise
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


mto, aronautique, ...
28

Paralllisme matriel : seconde poque


Fin des annes 80
dclin des architectures tout-propritaires
exemple type : Cray avec le T3D (processeurs ALPHA, rseau haut dbit
propritaire)
dclin des architectures SIMD : nouveaux types d applications parallles
envisageables
mergence de nouveaux modles de programmation

 Orients instructions
Tendance actuelle
processeurs standards + rseau standard (structure de grappes de machines)
: pas trop cher
architectures spcifiques (SGI Origin 2000, T3?) : chers, offrent des
fonctionnalits spcifiques tant matrielles que logicielles
29

Paralllisme dinstructions
Paralllisme traditionnel
application parallle = ensemble de flots dexcution concurrents
programmation guide par les instructions
ncessit de partager de donnes, ventuellement d oprations de
synchronisation,
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
comment structurer une application en tches ?
comment communiquer pour
partager les donnes,
se synchroniser ?
30

Paradigmes de programmation
Interface des systmes d exploitation peu adapte
gestion des processus : fork, exec,
Communications : IPC, sockets, XDR,

Diffrentes abstractions fournies par les supports


d excution
Activits
Acteur, processus, objet actif, threads,

Communication
Envoi de messages (synchrone ou asynchrone)
Mmoire partage (objet, page, synchronisation, cohrence, )
Appel de procdure distance

 Dfinissent des modles de programmation


31

Schmas de programmation parallle


Matre/Esclave
un coordinateur lance toutes les tches esclaves
coordination centralise du travail et des I/O

SPMD
le mme programme s excute sur diffrentes parties du mme problme

Asynchrone (MIMD?)
ensemble de programmes diffrents
chaque programme excute une fonction diffrente de l'application

Schmas hybrides
data-flow, task farming,

 Dfinissent des schmas de communication et de


synchronisation != modles de programmation
32

Architectures de type SMP mmoire


partage

Caractristiques des SMP


Processeurs partagent physiquement la mmoire
accs au mme bus

Paralllisme matriel au sein du systme


ex: ensibull : 8(?) processeurs

M
Comment exploiter ce paralllisme ?

34

Exploitation des SMP


Applications traditionnelles
un processus UNIX par CPU
partage du temps au niveau du processus lourd

Applications parallles
paralllisme intra-processus
ncessit de pouvoir multiprogrammer un processus lourd
activits encapsules dans le mme process UNIX
 processus lgers (threads)

35

Les processus lgers (threads)


Principe
processus lourd encapsule les donnes
processus lger contenu dans un processus lourd
contexte d excution seulement : peu coteux

Historique
utilis pour la programmation systme
dmons
recouvrement latence communication/accs disque

plus rcemment utilis pour le calcul


permet l excution efficace de petites tches
exploitation des SMP

36

Les threads POSIX : Pthreads


Interface standard de programmation pour les threads
portabilit des programmes utilisant les threads

Fontionnalits

cration/destruction de threads
synchronisation (conditions, mutex, smaphores)
ordonnancement, priorits
signaux

Attributs d un thread POSIX


caractrisation de son tat
pile, ordonnancement, donnes prives

37

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)
int pthread_create (
pthread_t *tid,
pthread_attr *attr,
void* (*start_routine)(void *),
void *arg);

+ Fork/join
+ Primitives de synchronisation

38

Utilisation des threads pour le calcul


Exemple : produit de matrices
un thread = calcul d une case
un thread = calcul d une ligne/colonne

Granularit quelconque
impossible avec des processus lourds : cot excessif
efficacit => cot gestion activits << cot activits

Assembleur de la programmation parallle


peut amener une grande efficacit
pnible utiliser

Quid des SMPs ?


Quid des threads en distribu ?
39

Utilisation des threads pour exploiter


les architectures SMP

Plan
Les diffrents types de threads
Threads utilisateurs
Threads systme

Correspondance entre les classes de threads dans Solaris


Ordonnancement
Politique standard
Politique spcifique (priorit, temps rel, )

Conclusion

41

Les processus lgers utilisateurs


Lis lespace mmoire dun processus
Indpendant du systme sous-jacent

Ordonnanceur

Ordonnanceur

Ordonnanceur

Systme
CPU

CPU

CPU

42

Avantages
Faible cot des oprations
Cration, destruction
Changement de contexte lger
Possibilit den avoir un grand nombre

Souple
Rpartition du temps grable par le programmeur, pas de risque de blocage
du systme

43

Inconvnients
Pas de paralllisme intra-processus
Sous exploitation des machines SMP

Partage du temps deux niveaux


Entre les processus lourds
Entre les processus lgers dun mme processus

Pas de partage global au prorata du nombre de processus lgers

Pas de protection mmoire entre les activits

44

Les processus lgers systme


Grs par le systme d exploitation
Existent dans le noyau hors des applications

CPU

CPU

CPU

45

Avantages
Exploitation des SMP
Interactions entre les activits applicatives et les activits noyau ?

Ordonnancement global de toutes les activits


Prise en compte par le systme
Rpartition quitable (?) entre les utilisateurs au prorata de leurs activits

Mcanisme de protection entre les activits

46

Inconvnients
Gestion coteuse
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

47

Historique de SOLARIS
Annes 80
SunOS 4 (Solaris 1) : Noyau monolithique non rentrant de la famille BSD
Bibliothque de threads utilisateurs LWP au standard POSIX

Rcriture complte dbut des annes 90


Solaris 2, threads systme, standard SysV, rentrant => Support des SMP

48

Les threads de Solaris


Deux types de threads
Systme : propres au noyau, scheduls par lui sur les processeurs => entits
dexcution
Utilisateurs : standard POSIX, propre lespace mmoire dun processus
=> contexte dexcution (pile)

Entits diffrentes de nature distincte


Comment les faire correspondre ?

49

Interaction
Notion de processeur virtuel (LWP)
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

50

Exemple

Systme
CPU

CPU

CPU

CPU

CPU
51

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

52

Caractristiques
Conservation dune interface applicative portable
(POSIX)
Efficacit des threads
Cration/destruction
Synchronisation

Mapping sur les threads noyaux


Indpendants des threads users

53

Performances

Temps de cration dun thread


(Ultra SPARC 1, Solaris 2.5)

Micro secondes
Thread non lie
50
Thread lie
350
Fork()
1700

Ratio
1
6.7
32.7
54

Performances (2)
Temps de synchronisation de threads
(Ultra SPARC 1, Solaris 2.5)

Micro secondes
Threads non lies
60
Threads lies
360
Entre processus
200

Ratio
1
6
3.3

55

Ordonnancement
Ordonnancement deux niveaux
Threads sur les LWPs
LWPs sur les processeurs

Politique standard : partage du temps


Rpartition homogne entre les LWPs (modulo les priorits)
Rpartition entre les utilisateurs

56

Classes d ordonnanceur
Possibilit de choisir un type dordonnancement par
LWP
Time-Sharing : priorit = pourcentage de temps processeur alloue
Real-Time : priorit = ordre dexcution

LWP schedul par le noyau


Nouvelle version
Rpartition entre les utilisateurs priment

57

Architecture distribue
Architectures SMP
limites en taille
maximum : une centaine

spcialises
lies des constructeurs : coteuse

Dveloppement des rseaux


locaux : Fast-Ethernet, Myrinet,
grande chelle : internet
prix baissent, dbits augmentent

Utilisation d architectures distribues


petite chelle (une salle, un btiment)
grande chelle (pays, monde) : mtacomputing

Nouveau modle de programmation


58

Modles bass sur lenvoi de messages

Conclusion sur le passage de messages


Modle simple
efficace sur tout rseau car proche du matriel
abstractions manipules de bas niveau
assembleur de la programmation parallle

Adapt pour des schmas de programmation simples


matre/esclave de base
SPMD avec protocole de partage rudimentaire (centralise)

Inadapt pour des schmas compliqus


algorithmique distribue complexe
debugage compliqu (interblocage, non dterminisme)
rsultat
et performances!

60

Threads et distribution
Comment utiliser les threads dans un contexte distribu ?
Activits de faible granularit
SMP en distribu
recouvrement calcul/communication

Deux approches
envoi de messages
les threads communiquent directement entre eux

problme de la dsignation
algorithmique distribue complique
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
61

Modles bass sur le RPC

Pourquoi le RPC ?
Constat
possibilit de dcomposer une application en tches indpendantes
(processus)
passage de donnes au dbut de lexcution, collecte des rsultats la fin
 comportement typique d un RPC

Mais
les tches sont souvent de faible dure
si ce sont des processus Unix
 cot gestion (cration, destruction, ordonnancement) > cot du travail

Solution
les regrouper  on retombe sur un systme passage de messages
utiliser des processus peu coteux

Les Processus lgers (threads)


63

Comparaison avec les autres modles

Portable
Scalable
Performance
Data-parallel
Haut niveau
Proche du
squentiel
Prouvable

MPI Threads
~=

OpenMP

64

Conclusion
But de la programmation parallle
efficacit

Diffrents paramtres entrent en jeu

algorithme parallle
modle de programmation
performances du support d excution
quilibrage de charge, ordonnancement

Modles mmoire partage


facile utiliser
performances pas toujours au rendez-vous (sauf matriel spcifique)

Modles passage de message


performant sur architectures traditionnelle
compliqu utiliser (peu naturel pour un programmeur)
65

Solution ?
Modle mulant une mmoire partage
dcomposition en tches (processus)
chaque tche accde des variables partages
liste des variables
type d accs (lecture, criture)

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
programmation facilite (proche du squentiel)
minimisation des communications efficacit en rseaux et en SMP

 Athapascan-1
66

Publi sur Developpez.com avec laimable autorisation de Yves Denneulin.


Retrouvez tous les cours Systmes de Developpez : http://systeme.developpez.com
Architecture des ordinateurs
Systmes d'exploitation
Systmes temps rels
Systmes embarqus
Systmes rpartis et middleware
Paralllisme
Annuaires
Sret de fonctionnement
67