Title: Informatique parallle hautes performances
1Informatique parallèle hautes performances
- Présentation à luniversité de Franche-Comté
- 19 novembre 2003
2Plan de la présentation
- Introduction
- Le matériel
- Programmation parallèle
- Expérience TOP500
- Larchitecture I-Cluster
3Les segments de marché
- Conception mécanique
- Science des matériaux
- Défense et sécurité
- Conception microélectronique
- Géo-sciences
- Sciences de la vie
- Visualisation
4Besoins du calcul parallèle
- Calcul hautes performances
- Trop gros
- En mémoire
- Sur disque
- Trop long
- Météo
- Mais de durée rarement infinie
- Les limites
- Les processeurs/mémoires sont limités
- Les objectifs
- Efficacité
- Optimisation du coût Matériel
- Héritage de vieux codes
- Les solutions
- Work Faster
- Matériel plus rapide
- Work Smarter
- Meilleur algorithme
- Work Harder
- Parallélisme
5Différents domaines applicatifs
- Algèbre linéaire
- Mécanique des fluides (Navier-Stockes)
- Manipulations spectrales
- Transformées de Fourier, DCT
- Simulations
- Monte-Carlo
- Extraction
- Repliement de protéines (recherche de
sous-chaînes) - Autres
- Le reste ne représente que 10 à 20 du marché
6Plan de la présentation
- Introduction
- Le matériel
- Programmation parallèle
- Expérience TOP500
- Larchitecture I-Cluster
7Composants
- Matériel
- RAM
- CPU
- ALU
- Registres
- Pipeline, VLIW, out-of-order
- Cache
- IO
- Réseau
- Cartes faible latence
- Routage
- Stockage
- Temps daccès différents
- registre ltlt cache ltlt ram ltlt réseau ltlt disque
- Coût inversement proportionnel au temps daccès
- Logiciel
- Middleware
- Système dexploitation
- Coordination
- Ordonnancement de travaux
- Librairies
- Passage de messages
- Algèbre linéaire
- Compilateurs
- Hints
8Architectures
- Vectoriel
- SMP
- Cluster de calcul
- Constellation
- Grille
- Métaordinateurs
- Retour vers le futur
- Les infrastructures du passé reviennent
- Ex. Web, LDAP
9Types darchitectures selon Flynn
- Classification de Flynn
- Un peu désuète (sixties)
- Ne reflète pas larchitecture mémoire
- MIMD-SM (Shared Memory)
- MIMD-DM (Distributed Memory)
- SPMD (Single Program Multiple Data) est un cas
courant (cf. MPI)
10Symmetric Multiprocessing (SMP)
- Cas le plus courant (bipros)
- Mémoire partagée
- Le cache est essentiel
- Assure la cohérence
- Relation happens-before
- Accès par lignes de cache
- 4096 bits par exemple
- 0x00cf2351 accède la ligne 0x00cf2000 0x00cf2fff
- Une écriture rend la ligne invalide (dirty)
- Différentes politiques possibles
- Write-back
- Write-through
11SMP avec Crossbar
- Accès cohérent
- p processeurs
- n mémoires
- Chaque processeur peut être mis en relation avec
chaque mémoire - Exemple du réseau butterfly (où np)
- Composé de multiplexeurs 2x2
12Cluster
- Définition Mémoire distribuée
- Coût faible
- Il faut gérer le passage de messages
- Cohérence
- Transmission des messages lente
- Code spécifique et complexe
13Réseaux faible latence
- Souvent présents dans les clusters de calcul
- Plusieurs implémentations disponibles
- SCI, Myrinet, Quadrics
- Débit élevé
- Latence en ns
- Routage à la source
- Chaque machine va router le message
- Les cartes réseau sont intelligentes
- Routage Wormhole
- Topologie virtuelle en tores 2D ou 3D
- Possibilités de remote DMA, Scatter/Gather
- Solutions très chères
- Exemple
- Tore 2D
- Routage de 1,2 (en rouge) à 2,4 (orange)
- Sud, Est, Est est le chemin pré calculé
4
1
2
3
1
2
3
4
14Technologies dinterconnexion
15Grilles (GRID)
- Vision Disposer de puissance de calcul de la
même manière que de puissance électrique - Power outlet / Power grid
- Cluster Machines homogènes locales
- Grille Machines hétérogènes globales
- Fédération de ressources Répartition souvent
mondiale - Liaison entre plusieurs grappes par liens rapides
- Mais
- Aspects humains (tu peux me donner ton mot de
passe ?) - Les administrateurs sont sur chacun des
différents sites - Passage à léchelle difficile
- Copie dun fichier vers 5000 machines gros
problèmes en vue - Problèmes algorithmiques
- Couplage de Composants
16Stockage hautes performances
- Problème Accès simultané aux fichiers
- Nombreuses machines en parallèle
- Visibilité homogène des données
- Solutions
- Caches coopératifs
- NFS
- Réplication des données
- Pré chargement (prefetch)
- RAID logiciel et matériel
- Problème de cohérence
- PVFS
- NFSp
17Parlons dargent
- La vitesse des processeurs dépend du carré de
leur coût - Speed Cost2
- Laccélération est généralement liée
logarithmiquement au nombre de processeurs - Speedup log2(processors)
- Le logiciel coûte très cher
- Il faut donc faire attention a ses choix
dinfrastructure - La tentation des clusters est grande
- Le choix nest pas facile
- Mais
- La plupart des projets ont un budget militaire ou
scientifique - Ils sont riches
- A quoi bon changer de modèle et passer aux
clusters ? - Résultat On en reste aux machines
sur-performantes, par facilité
18Plan de la présentation
- Introduction
- Le matériel
- Programmation parallèle
- Expérience TOP500
- Larchitecture I-Cluster
19Complexité
- Il faut caractériser les algorithmes
- Complexité
- En nombre dinstructions
- En nombre demplacements mémoire
- En nombre de messages à échanger
- Ordre des algorithmes
- Fonctions O (coût réel), O (min), ? (max)
- Caractérise le coût relativement a une fonction
simple - Ex. O(n3), O(n log2n)
- Un ordre non polynomial interdit le passage à
léchelle - Un ordre (poly-)logarithmique est souhaitable
20Taille de grain
- Grain Gros
- (niveau dune tâche)
- Programme
- Grain moyen
- (niveau contrôle)
- Fonction
- Grain fin
- (niveau données)
- Boucle
- Grain très fin
- (multiples niveaux)
- Hardware
Tâche i-l
Tâche i
Tâche il
func2 ( ) .... ....
func3 ( ) .... ....
func1 ( ) .... ....
a (0) .. b (0) ..
a (1) .. b (1) ..
a (2) .. b (2) ..
x
Load
21Exemple Multiplication de matrices carrées
(séquentielle)
- Soient Aaij, Bbij, Ccij , 1in, 1jn
- On veut calculer C A x B
- cikSj1..naij.bjk, 1in, 1kn
- Complexité de calcul
- Ceci nécessite, pour chaque cik
- n multiplications
- n additions
- n.n cik , donc n2 éléments, doù 2n3 opérations
- Lordre de la multiplication de matrices par un
programme séquentiel est donc O(n3) - Place mémoire
- 3 matrices de taille n2
- Le besoin en mémoire est donc de O(n2)
22Multiplication plus efficace
- Si on a un cache trop petit, la performance
sécroule - 3n2 valeurs ne tiennent plus en cache
- Le cache ne sert plus !
- On va faire des calculs par blocs
- Même ordre, mais plus efficace (gains de 2000 en
Pentium-class)
- Pour chaque sous-bloc
- I bandes verticales
- J bandes horizontales
- Pour chaque sous-bloc Cmp de C
- cikSj1..naij.bjk mimI, pkpJ
- Mémoire nécessaire par bloc
- I.n J.n I.J
- Au lieu de 3.162768, on a
- 2.16 2.16 2.2 68 seulement
- Problème identique Out of core
-
B
A
C
Ex. n16, IJ2
23Multiplication parallèle
- p processeurs pour calculer
- Calcul par sous-blocs
- n/p sous-blocs calculés par processeur
- Mais
- Chacun doit dabord disposer des données de
départ (Matrices A et B) - Mémoire partagée (SMP) gratuit
- Les données sont accessibles à chaque processeur
- Cluster Envoi des 2n2 données (A et B) vers p
processeurs, retour de n2 données (C) - Donc coût de communication O(2p.n2) acceptable
- Question Quel est le grain de calcul de
matmut() ?
24OpenMP
- Open Multi Processing
- Standard industriel de 1997
- Clauses de compilation explicites (hints)
- Modèle master-worker, fork join
- Description des structures parallélisables
- Matrices décomposées en sous blocs
- Le code contient des hints de gestion des
sous-blocs - Le compilateur est intelligent
- Parallélise automatiquement le code
- Gère les communications inter-nuds
- Parallélisme de données ou de processus
25Le passage de messages
- MPI (Message Passing Interface)
- Abstraction de la topologie de proc/RAM
- Routines de communication
- MPI_Send(), MPI_Recv()
- Gestion par numéro de machine
- Primitives de groupes (communicators)
- Synchrones ou asynchrones
- Simple a appréhender
- Mais
- mise au point douloureuse
- Portage pas si trivial que ça
26Recouvrement calcul-communication
- Objectif efficacité
- Lors dune attente de communication, un processus
va continuer à calculer - Difficile à formaliser
- Très difficile à programmer
- Extrèmement difficile à débugger
- Décomposition des communications
- Emballage du message (par lémetteur)
- Temps de transport
- Déballage (par le récepteur)
27Problèmes liés au parallélisme
- Horloges logiques
- Synchronisation
- Systèmes asynchrones Comment alerter un
processus distant ? - Accès sérialisé aux ressources partagées
- Exclusion mutuelle
- False sharing
- Deadlocks
- Fautes Terminaison
- Détection de fautes
- Tolérance
- Communication de groupe
- Élection dun coordinateur (leader)
- Réplication
- Cohérence
- Mise au point répartie
- Bugs
- Performance
- Connaissance du métier de lapplication
28Précédence causale
- Relation happens-before (précède)
- Élément essentiel en informatique distribuée
- Asynchronisme du monde réel gt race conditions
- Illustre bien quen informatique distribuée, les
choses simples deviennent plus complexes - ei précède ej (ei lt ej) ssi une de ces 3
conditions est vraie - ei et ej se produisent sur le même processus et
ei se produit physiquement avant ej - ei et ej se produisent sur deux processus
distincts et ei est lémission dun message
tandis que ej est la réception de ce même message - Il existe k tel que ei lt ek et ek lt ej
- Exemples
29Horloges logiques
- Horloge logique e lt e gt LC(e) lt LC (e)
quels que soient e et e - Horloge logique de Lamport
- Chaque nud Pi détient un compteur Ti
- Lors dun évènement local Ti est incrémenté
- Lors dun envoi par Pi, Ti est incrémenté et
transmis avec le message - Lors dune réception par Pj, Tj est mis à jour
- Tj max(Tj, Ti ) 1
- Solution simple et élégante, très utilisée en
pratique - Une version vectorielle existe, qui vérifie aussi
LC(e) lt LC (e) gt e lt e - Exemple
P1
P2
P3
P4
30Ordonnancement
- Objectif Optimisation des ressources
- Lancer n tâches sur p processeurs
- Notion de graphe de flot dexécution (ex.
POVray) - Comment utiliser les processeurs inactifs ?
- Différentes politiques
- Temps global dexécution (makespan)
- Charge de calcul
- Tâches prioritaires
- Allocation dynamique (online) ou statique
(off-line) - Lallocation statique nécessite un graphe de flot
connu - Problème NP-complet
- On a recours à des heuristiques
- Beaucoup de recherche
31Plan de la présentation
- Introduction
- Le matériel
- Programmation parallèle
- Expérience TOP500
- Larchitecture I-Cluster
32Les 500 ordinateurs les plus puissants
- Classement ouvert à tous
- Publication tous les 6 mois
- Objectif le plus grand nombre possible
dinstructions par seconde - Inversion dune matrice dense
- Calcul itératif par décomposition de Cholesky
- Une implémentation de base HPL (Linpack)
- Notre objectif
- entrer au TOP500 avec du matériel de grande
consommation
33Infrastructure dévaluation
- Partenariat HP Labs, IMAG-ID, INRIA
- 225 HP e-Vectra
- Pentium III
- 733 MHz
- 256 MB
- Standard Ethernet (100 MBps)
34Mise en place du programme
- Coordination entre 225 machines
- Pas facile
- Il ne faut pas ralentir par excès de
communication - Chaque élément nest plus un réel
- On passe à des petites matrices (sous-blocs)
- Calcul de la taille de sous-bloc optimale
- Division en 15x15 machines
- Problématique du broadcast
35Résultats
- Premier cluster de grande consommation au TOP500
- 385ème Superordinateur au monde, 15ème en France
- 81,6 Gflop/s en mai 2001
36Leçons clés
- La latence réseau est critique
- On attend autant quon calcule
- Homogénéité des machines
- Sinon lalgorithmique est trop difficile
37Questions ?
38Exemple didactique
- Un incendie
- Un robinet
- Des robots-pompiers Ri, i 1, 2, 3
- Chacun possédant un seau et un seul
- Actions possibles
- Remplir pour remplir le seau au robinet
- Echanger(j) pour échanger son seau avec Rj
- Déverser pour verser le seau sur lincendie
- Marcher pour aller au robinet ou au foyer
- Contraintes
- 1 seul robot peut remplir son seau à la fois
- Échange possible uniquement si les 2 robots sont
prêts - Pas de collisions pendant la marche, ni le
déversage de seaux - Problème Comment programmer le fonctionnement
des pompiers ?
39Quel algorithme
- Solution 1 Robots autonomes (SIMD)
- Chacun va remplir son seau, le déverse etc
- Solution 2 La chaîne (pipeline)
- Un robot remplit les seaux, un autre les déverse
et tous les autres échangent seaux vides contre
seaux pleins - Ces deux approches sont très différentes
- Goulot détranglements différents