Programmation
des systèmes réparties
Frédéric Gava (MCF) gava@univ-paris12.fr
LACL, bâtiment P2 du CMC, bureau 221 Université de Paris XII Val-de-Marne
61 avenue du Général de Gaulle 94010 Créteil cedex
Architectures parallèles
3/0
Premiè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
4/0
Exemple grappe de PCs
5/0
Une grappe de l’INRIA
6/0
Super-ordinateurs
Le earth-simulator au Japon, environ 5000 processeurs…Le Tera-10 du CEA (France) est classé par mis les 5 plus puissantes machines…
7/0
Le parallélisme ?
On distribue les données sur p=4, 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 qu’un calcul … s’il n’y a pas de bouchon !
8/0
Paralléliser c’est distribuer
Données
D on né es
9/0
Paralléliser c’est accélérer
A C C L U L
A C L
C U
L
10/0
Mais aussi communiquer et
synchroniser
11/0
Comment mesurer ?
L
Cela limite les performances…
Calcul
Données
G
Synchronisation (latence)
Temps de
communication
12/0
Vitesse de calcul
log Flops/s
-2,0 0,0 2,0 4,0 6,0 8,0 10,0 12,0 14,0
1941
1945
1949 1953
1957 1961
1965 1969
1973
1977 1981
1985 1989
1993
1997
2001
2005
Kilo Mega Giga Tera
Loi de Moore : l’efficacité des processeurs double tout les 18 mois (normalement vrai jusqu’en 2017 mais après ?)
13/0
Vitesse des communications
177 0,41
28000 t3e-256(32)
222 0,47
2200 t3e-256(24)
253 0,4
15000 t3e-256(16)
327 0,6
7000 t3e-256(8)
382 0,9
4000 t3e-256(4)
260 1,1
2000 t3e-256(2)
1/g Mmots/s 1/L M/s
Mflops/s Nb
Processeurs
CRAY T3E, haut de gamme circa 2002
Même la fibre optique n’y peut rien car la vitesse de la lumière est finie et donc communiquer coûte cher…
14/0
Le problème de l’efficacité
Le but faire le total (addition) d’un ensemble de nombre donnée ; le nombre d’entiers à 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 l’efficacité globale des volontaires
15/0
Exemple
4+8 5+9 2+1
Volontaire :
1 2 3
Total : 12+14+3=29
16/0
Total avec 5 processeurs
4+8+7+3 5+9+6+1 2+1+9+8 3+4+5+1 6+7+4+1
Volontaire :
1 2 3 4 5
17/0
Total avec 10 processeurs
Volontaire :
5+6
2
4+8
1
9+2
3
1+7
4
3+8
5
4+5
6
1+6
7
3+9
8
7+4
9
2+3
10
18/0
Moralité
Les communications coûtent cher La synchronisation aussi
Ce n’est pas parce que l’on a plus de processeur que le calcul sera plus rapide : on parle d’efficacité de l’algorithme 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)
19/0
Différentes architectures (1)
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
20/0
Mémoires partagées
Processeur
Mémoire
Bus
Processeur
Bus
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 (16 maxi dans le commerce)
Processeur
Mémoire
Bus
Réseau
Processeur Processeur Ici, c’est l’apanage 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 => communications aussi efficaces que lecture mémoire
21/0
Mémoires distribués
Processeur Mémoire
Réseau
Processeur Mémoire
Processeur Mémoire
Les processeurs communiquent via le réseaux
; c’est le domaine des grappes de machines.
Possibilité de machines peu cher avec un TRES grand nombre de processeurs mais néanmoins, encore aujourd’hui, des communications plus lentes que précédemment. Possibilité de construire pour pas cher sa propre machine parallèle…
Machine esclave
Réseaux
Machine esclave Machine esclave Machine esclave
Machine maître
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@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.
22/0
Différentes architectures (2)
MIMD SIMD
Multiple Data
MISD SISD
Single Data
Multiple Instructions Single
Instruction Machine Séquentielle
On peut aussi classer les machines parallèles suivant les programmes parallèles qui y sont utilisés
Pour cela, on classe suivants les instructions et les données
Grappe de machines
23/0
SIMD
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 d’instructions 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.
24/0
MISD
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, c’est à dire avec plusieurs processus sur un même processeur) et chaque processus ne fait qu’une seule et unique opération
Exemple :
Processus 1 calcul +1
Processus 2 calcul *2
Processus 3
calcul +3
?
1, 5, 6 10, 23
Flux de données
Données initiales Données finales
Futurs du parallélisme ?
(qui vivra verra…)
26/0
Les grilles de calcul
Un « graal »
(super)-ordinateur distribuées géographiquement Du calcul à la demande, comme de l’électricité Nombreux projets et réalisations :
GRID’5000
Grille du CERN Globus
etc.
27/0
Taxonomie
Une machine parallèle=plusieurs 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 l’utilisateur pour lui fournir le résultat
etc.
28/0
Les problèmes
Sécurité :
applications détruisant les fichiers etc.
autorisation sur quelles machines ?
sûreté d’exé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 t’elle besoin d’autant 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.)
29/0
Applications
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 d’information ?
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 d’autres choses…
Intelligence artificiel (interaction homme-machine comme un e-vendeur ou apprentissage automatique pour la recherche de pétrole d’aprè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.