Академический Документы
Профессиональный Документы
Культура Документы
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)
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
pratiques
supports
modles
Application
Compilateur
Support d excution
Systme d exploitation
Hardware
4
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)
Programmation concurrente
les coroutines (Djikstra, 68)
multiprogrammation grain plus fin
problmes de synchronisation
Paralllisme simul
pas de machine contenant rellement du paralllisme
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
Classification traditionnelle
SIMD : Single Instruction (flow) Multiple Data
7
Exemple
Vecteur a[100];
Vecteur b[100];
Vecteur c[100];
Importance de la compilation
Le compilateur doit tre intelligent
Dcoupage de la boucle
Caractristiques
Modle simple et naturel
programmation simple
passage direct partir de l algorithme squentiel
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
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
14
volution architecturale
Dbut 90 : SIMD en perte de vitesse
15
Problmes du data-paralllisme
Intelligence du compilateur
paralllisation automatique des boucles
calcul des dpendances entre les donnes
compliqu, sujet de recherche encore actuelle
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
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
Rsumons
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)
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
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
27
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)
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
Paradigmes de programmation
Interface des systmes d exploitation peu adapte
gestion des processus : fork, exec,
Communications : IPC, sockets, XDR,
Communication
Envoi de messages (synchrone ou asynchrone)
Mmoire partage (objet, page, synchronisation, cohrence, )
Appel de procdure distance
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,
M
Comment exploiter ce paralllisme ?
34
Applications parallles
paralllisme intra-processus
ncessit de pouvoir multiprogrammer un processus lourd
activits encapsules dans le mme process UNIX
processus lgers (threads)
35
Historique
utilis pour la programmation systme
dmons
recouvrement latence communication/accs disque
36
Fontionnalits
cration/destruction de threads
synchronisation (conditions, mutex, smaphores)
ordonnancement, priorits
signaux
37
+ Fork/join
+ Primitives de synchronisation
38
Granularit quelconque
impossible avec des processus lourds : cot excessif
efficacit => cot gestion activits << cot activits
Plan
Les diffrents types de threads
Threads utilisateurs
Threads systme
Conclusion
41
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
44
CPU
CPU
CPU
45
Avantages
Exploitation des SMP
Interactions entre les activits applicatives et les activits noyau ?
46
Inconvnients
Gestion coteuse
Passage par le noyau = surcot important
Medium-weight threads
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
48
49
Interaction
Notion de processeur virtuel (LWP)
Interface entre les user et les kernel threads
50
Exemple
Systme
CPU
CPU
CPU
CPU
CPU
51
52
Caractristiques
Conservation dune interface applicative portable
(POSIX)
Efficacit des threads
Cration/destruction
Synchronisation
53
Performances
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
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
57
Architecture distribue
Architectures SMP
limites en taille
maximum : une centaine
spcialises
lies des constructeurs : coteuse
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
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
Portable
Scalable
Performance
Data-parallel
Haut niveau
Proche du
squentiel
Prouvable
MPI Threads
~=
OpenMP
64
Conclusion
But de la programmation parallle
efficacit
algorithme parallle
modle de programmation
performances du support d excution
quilibrage de charge, ordonnancement
Solution ?
Modle mulant une mmoire partage
dcomposition en tches (processus)
chaque tche accde des variables partages
liste des variables
type d accs (lecture, criture)
Caractristiques
programmation facilite (proche du squentiel)
minimisation des communications efficacit en rseaux et en SMP
Athapascan-1
66