Title: Pr
1Algorithmes Parallèles et Systèmes Réparties
Frédéric Gava (MCF) gava_at_u-pec.fr LACL, bâtiment
P2 du CMC, bureau 221 Université de Paris-Est
Créteil 61 avenue du Général de Gaulle 94010
Créteil cedex
2Pour ce semestre
- 40 heures de cours et de TD et de TP
- 3 enseignants (remplacement de M. Hains)
- Frédéric Gava (moi)
- Sovanna Tan
- Julien Tesson
- Notation
- Petit projet
- Examen final
- CC (?)
- Pas le même contenu que l'année dernière
3Le parallélisme ?
- On distribue les données sur p4, 32, 5000
ordinateurs - Chacun calcule sur sa part des données
- On séchange les résultats
- On recommence si nécessaire
- On espère que le calcul soit complété p fois
plus vite - Mais léchange des données prend du temps
- temps relatif inchangé depuis plus de 20 ans
- Échange 20, 100, 1000 x plus lent quun calcul
sil ny a pas de bouchon !
4Architectures parallèles
5Premières machines
- 1976 Cray I refroidi au gaz liquide
- 1981 Cyber 205, 50 Mflops
- 1986 Cray X-MP (713 MFlops)
- 1991 Cray Y-MP (16 GFlops)
- 1995-2006
- Grappes de PC
- Super-ordinateurs parallèles et vectoriels
- Calcul globalisé ou grilles de calcul
géographiquement distribuées - 2006-2014
- Architectures hybrides
- Grappes de multi-cœurs
- Plusieurs racs
- avec GPU
6Exemple grappe de PCs
7Une grappe de lINRIA
8Super-ordinateurs
Le earth-simulator au Japon, environ 5000
processeursLe Tera-10 du CEA (France) est classé
par mis les 5 plus puissantes machines
9Comment mesurer ?
G
L
Cela limite les performances
10Vitesse de calcul
Loi de Moore lefficacité des processeurs
double tout les 18 mois (normalement vrai
jusquen 2017 mais après ?)
Kilo Mega Giga
Tera
11Vitesse des communications
CRAY T3E, haut de gamme circa 2002
Nb Processeurs Mflops/s 1/L M/s 1/g Mmots/s
t3e-256(2) 2000 1,1 260
t3e-256(4) 4000 0,9 382
t3e-256(8) 7000 0,6 327
t3e-256(16) 15000 0,4 253
t3e-256(24) 2200 0,47 222
t3e-256(32) 28000 0,41 177
Même la fibre optique ny peut rien car la
vitesse de la lumière est finie et donc
communiquer coûte cher
12Différentes architectures
- On peut classer les machines parallèles suivant
leur efficacité, leur nombre de processeurs, le
types des processeurs/réseaux/mémoires etc. - On peut néanmoins et grossièrement classer les
machines parallèles suivant 2 catégories - Les machines à mémoire partagées
- Les machines à mémoire distribuées
- Le modèle client/serveur
13Mémoires partagées
Les processeurs multi-core comme les
dual-core les processeurs accède
directement à la mémoire vive très efficace
mais encore coûteux et limité en nombre de
processeurs (64 maxi dans le commerce)
Ici, cest lapanage des grosses, commerciales et
coûteuse (100k à 1M euros) machines massivement
parallèles comme les Cray T3E, SGI Origin 2000,
IBM SP avec 64, 128, 256 processeurs. Mais très
efficaces. Les processeurs accèdent tous à une
mémoire vive via un réseau gt communications
aussi efficaces que lecture mémoire
14Mémoires distribués
Les processeurs communiquent via le réseaux
cest le domaine des grappes de machines.
Possibilité de machines peu cher avec un TRES
grand nombre de processeurs mais néanmoins,
encore aujourdhui, des communications plus
lentes que précédemment. Possibilité de
construire pour pas cher sa propre machine
parallèle
Une machine maître (serveur) distribue les
données et les calculs aux esclaves (client) et
le maîtres récolte les résultats. Ce modèle de
machine parallèles a été utilisé par exemple pour
le Généthon, SETI_at_HOME etc. en utilisant les
temps de calculs non-utilisé par les
particuliers. On a donc une très grande capacité
de calcul mais avec les problèmes suivant il
faut que le problème soit trivialement
décomposable, il faut vérifier les données
calculés pour éviter les pirates (on fait de la
redondance de calcul puis on prend le résultat le
plus rendu), communications parfois très
coûteuses.
15Différentes architectures
- On peut aussi classer les machines parallèles
suivant les programmes qui y sont utilisés
(classification de Flynn) - Pour cela, on classe suivants les instructions
et les données
Single Instruction Multiple Instructions
Single Data SISD MISD
Multiple Data SIMD MIMD
16SIMD
- Chaque instruction du processeur manipule
parallèlement (dans les circuits imprimés)
plusieurs données on a donc plusieurs calculs à
la fois pour chaque instruction - On trouve ce type dinstructions dans
- les accélérateurs graphiques (du processeur ou
de la carte graphique) on souhaite manipuler
plusieurs pixels/polygones à la fois - les processeurs avec co-processeurs
arithmétiques on souhaite calculer plusieurs
additions à la fois pour accélérer les gros
calculs numériques - etc.
17MISD
- Plusieurs instructions manipulent parallèlement
une seule et unique donnée !? - En fait possible avec des programmes dis en
pipe-line des données circulent sur un
circuits de processeurs (ou de processus, cest à
dire avec plusieurs processus sur un même
processeur) et chaque processus ne fait quune
seule et unique opération - Exemple
18Moralité
- Parallélisme , ambiguïté du terme
- Calcul/archi parallèles (la concurrence )
- Multi-threading (serveurs web)
- Algorithmes PRAM
- Programmation GPU
- Programmation synchrone
- Calcul/archi distribués
- Grappes (cluster) dordinateurs
- Big-data
- Algorithmes distribuées
- Bien définir de quoi on parle ? modèles
théoriques
19Notions dalgorithmes parallèles et distribués
20Paralléliser cest distribuer
Données
21Cest aussi accélérer
C A L C U L
22Mais aussi communiquer et synchroniser
D
é
o
n
n
e
s
D
o
é
e
s
n
n
3 cons.
4 voyel.
(3,4)
(3,4)
(3,4)
(3,4)
23Le problème de lefficacité
- Le but faire le total (addition) dun ensemble
de nombre donnée le nombre dentiers à
additionner sera toujours le même - On va répartir ces nombres suivant deux nombres
de processeurs (humains), 5 et 10 - Pour cette expérience, je vais demander 10
volontaires - Chacun des volontaires fait la somme des entiers
qui lui sont alloués - Dès que le volontaire a terminé, il se met près
de moi - Puis les volontaires se réunissent pour faire la
somme total - On analysera ensuite lefficacité globale des
volontaires
24Exemple
Volontaire
2
3
1
48
21
59
Total 1214329
25Total avec 5 processeurs
Volontaire
2
3
4
5
1
4873
2198
5961
6741
3451
26Avec 10 processeurs
Volontaire
2
1
3
4
5
6
7
8
9
10
56
48
92
17
38
45
16
39
74
23
27Moralité
- Les communications coûtent cher
- La synchronisation aussi
- Ce nest pas parce que lon a plus de processeur
que le calcul sera plus rapide on parle
defficacité de lalgorithme parallèle - En gros plus on a de processeurs plus il faut
de gros problèmes sinon on fait perdre du temps
au processeurs (par rapport à une machine
parallèle avec moins de processeurs)
28Futurs du parallélisme ?(qui vivra verra)
29Les grilles de calcul
- Un graal
- (super)-ordinateur distribuées géographiquement
- Du calcul à la demande, comme de lélectricité
- Nombreux projets et réalisations
- GRID5000
- Grille du CERN
- Globus
- etc.
30Taxonomie
- Une machine parallèleplusieurs processeurs
- Meta-computing plusieurs machines parallèles
- Calcul pair-à-pair chaque machines est relié à
une ou plusieurs autres machines (échanges de
fichiers) - Modèle Clients-Serveurs des serveurs
répartissent les calculs à des clients ceux-ci
se connectent, calculent, redonnent le résultats
aux serveurs etc. - Global-computing toutes les machines du mondes
vue comme une seule ENORME machine (le graal ) - Mobile-computing un utilisateur veut lancer
une application un agent informatique se
balade sur le net pour trouver une machine
suffisamment puissante pour exécuter cette
application puis revient sur la machine de
lutilisateur pour lui fournir le résultat - Hybride différentes types darchitectures
imbriquées - etc.
31Les problèmes
- Sécurité
- applications détruisant les fichiers etc.
- autorisation sur quelles machines ?
- sûreté dexécution une application plantant
la/les machine(s) pour gêner les autres
applications - etc.
- Performance
- prédiction des communications
- répartition des ressources physiques
- une petite application (calculette) a telle
besoin dautant de ressource ? - sécurité une application faisant des millions
de calculs inutile pour gêner les autres - etc.
- Portabilité grande hétérogénéité des machines
- Tolérance aux pannes comment faire quand
une machine se déconnecte (panne de courtant
etc.) ? - La recherche en informatique y travaille (voir
site LACL par ex.)
32Applications
- Analyse de la structure du web
- Qui parle de qui sur les pages perso ?
- Que peut-on savoir sur mon entreprise via le web
et par regroupement dinformation ? - Quelles sont les réseaux pirates ?
- Sécurité informatique
- ce protocole de commerce est-il vraiment sûr ?
- Quel effet aurait une panne sur des informations
critiques ? - Le protocole de vote électronique est-il fiable
? - Un pirate peut-il tous casser dans le réseau de
mon entreprise ? - Et tellement dautres choses
- Intelligence artificiel (interaction
homme-machine comme un e-vendeur ou apprentissage
automatique pour la recherche de pétrole daprès
des relevés topographiques et géologiques) - Calcul formelle, démonstration automatiques,
assistant de preuves (les sujets de Bac S peuvent
être entièrement résolue par des machines) - etc.
33Différents modèles de programmation
34Modèles de programmation
- Modèles de programmation et modèles dexécution
dexécution - Ordonnancement et placement
35Modèles de programmation (2)
- Dexécution, une abstraction de larchitecture
matérielle - mémoire partagée vs mémoire distribuée
- SIMD/MIMD
- De programmation, une abstraction de la sources
du parallélisme données/contrôle
36Modèles de prog Djikstra/Flynn
- Parallélisme de contrôle
- Composition parallèle de processus séquentiels
- PAR(SEQ) MIMD
- pardo i 1, n
- a(i) b(i) c(i)
- x(i) y(i) z(i)
- end do
- Parallélisme de données
- Composition séquentielle de processus parallèles
- SEQ(PAR) SIMD
- forall() i 1, n
- a(i) b(i) c(i)
- forall() i 1, n
- x(i) y(i) z(i)
37Modèles dexécution
- Espaces dadressage multiples
- p processus
- Communiquent par messagerie
- Le programmeur ou le compilateur doit définir le
placement des données et lordonnancement des
calculs - Le placement des données peut définir celui des
calculs - Espaces dadressage unique
- p threads
- Communiquent à travers des variables partagées
- Le programmeur ou le compilateur doit définir le
placement et lordonnancement des calculs
38Ordonnancement
- Programme Graphe de tâches
- Une tâche est une unité de traitement séquentiel
- Un arc (T1, T2) correspond à un transfert
dinformation à la fin de T2 vers le début de T1 - Un graphe de tâches sans cycle définit un ordre
partiel - T1 ltlt T2 sil existe un chemin de T1 vers T2
- Ordre total programme séquentiel
- Ordre partiel programme parallélisable
39Ordonnancement et modèle de programmation
- La définition de lordonnancement peut être
- Réalisée dans un programme parallèle
- Extraite automatiquement dune spécification
plus ou moins contrainte parallélisation
automatique - Lexpression de lordonnancement dans les
langages parallèles - Par structures de contrôle SEQ(PAR)
- Par synchronisation PAR(SEQ)
- Placement
- Lordonnancement ne prend pas en compte le
nombre de processeurs disponibles - Le placement replie le parallélisme illimité
sur les ressources réelles - Contrainte minimisation des surcoûts
- Parallélisation placement
ordonnancement
40(No Transcript)
41Placement statique
- Off-line, éventuellement paramétré par le nombre
de processus et le numéro de processus - Les temps de calcul doivent être connus
- Cas régulier Bloc, cyclique, cyclique (k),
- Cas irrégulier ad hoc (p. ex. bisection
récursive)
42Décalage, distribution bloc
43Bisection récursive
Les éléments de calcul sont caractérisés par une
donnée nD souvent une position spatiale
Applicable aussi à un maillage
44Placement et ordonnancement dynamique
- Motivation
- La durée des calculs nest pas prévisible
- La puissance des machines nest pas connue
- Placement/ordonnancement on-line décidé à
lexécution - Questions
- Surcoûts gestion des processus ou des threads,
des échanges dinformation - Robustesse à lirrégularité des temps dexécution
45Placement et ordonnancement dynamique
- Centralisé Maître-Esclave
- Maître
- Implémente un algorithme de partitionnement, par
exemple bloc, avec possibilité de taille variable
du bloc - Taille fixe équivalent à statique
- Guided self-scheduling chaque esclave prend 1/p
de ce qui reste - Factoring chaque esclave prend 1/P de la moitié
du batch restant - Effectue les opérations globales par exemple
réduction - p esclaves Exécutent un bloc, et redemandent du
travail dès que terminé
46Placement et ordonnancement dynamique
- Répartition par vol de travail
- Un processus pousse sur la pile des travaux en
attente les tâches les plus longues - Les processus ou threads inactifs sélectionnent
un autre processus auquel ils prennent du travail
au fond de la pile - Peut être prouvé optimal pour une large classe
dapplications - Implémentation délicate gestion de verrous en
espace dadressage unique, protocole en espaces
dadressages multiples - http//supertech.lcs.mit.edu/cilk/
47Analyse de performances
48Objectifs
- On veut résoudre un problème
- Choix de programmation
- Plusieurs algorithmes naïfs ou non
- Puis, pour un algorithme, le programmer
- MAIS QUOI PARALLELISER ?
49Objectifs (1)
- On veut résoudre un problème
- Choix de programmation
- Plusieurs algorithmes naïfs ou non
- Pour un algorithme, choix/style de la
parallélisation, distribution des données/calculs - Paramètres de larchitectures
- nombre de processeurs et leurs caractéristiques
- Vitesse
- Mémoire cache
- Performances de la mémoire ou du réseau
- Paramètre de configuration (OS et I/O)
50Objectifs (2)
- Définir des indicateurs objectifs qui mesurent le
gain apporté par le parallélisme - Lindicateur pertinent dépend du critère par
rapport auquel on veut optimiser - Extensibilité dune architecture parallèle
capacité à améliorer la performance en augmentant
les ressources - Extensibilité dun algorithme parallèle
capacité dun algorithme à utiliser plus de
ressources - Latence ou débit
- Latence temps dexécution
- Débit nombre de transactions, de calculs,...
par unité de temps
51À finir, donc on prend d'autres slides