architectures et paradigmes de programmation...
TRANSCRIPT
Architectures et paradigmes de programmation parallèle
Violaine LouvetInstitut Camille Jordan
ECOMOD 2010 – Réseau des Plasmas Froids
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
SOMMAIRE● Problématique de l'évolution des architectures
● Architecture interne
● Processeurs
● Mémoire
● Interconnexion
● Architectures Hautes Performances
● Multi-coeurs
● Many-coeurs
● Architectures hybrides
● Paradigmes de programmation
● Introduction
● Modèle à mémoire partagée
● Modèle à mémoire distribuée
● Modèle hybride
● Conclusions
● Références
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
SOMMAIRE● Problématique de l'évolution des architectures
● Architecture interne
● Processeurs
● Mémoire
● Interconnexion
● Architectures Hautes Performances
● Multi-coeurs
● Many-coeurs
● Architectures hybrides
● Paradigmes de programmation
● Introduction
● Modèle à mémoire partagée
● Modèle à mémoire distribuée
● Modèle hybride
● Conclusions
● Références
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
Conjectures de Moore
● Le nombre de transistors des microprocesseurs double tous les 2 ans
● Loi vérifiée depuis 1973, théoriquement valable jusqu'en 2015 (atteinte de certaines limites physiques)
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
Evolution de la technologie
● Depuis 2004 : ralentissement de l'augmentation en fréquence dû à des problèmes de dissipation thermique
● Les fondeurs favorisent alors l'hyperthreading et le multi-cœurs
● « The Wall » : la finesse de gravure peut être poussée jusqu'à 20 nm, au delà, limites industrielles et physiques
● Efficacité énergétique : entre 1999 et 2007, multiplication par 7 de la consommation d’électricité des serveurs en rack. A ce rythme les dépenses en énergie pour le fonctionnement et le refroidissement d’une machine dépasseront bientôt son coût initial
● Architectures hybrides : montée en puissance des processeurs graphiques (marché de masse) et des processeurs à très basse consommation (cell)
Herb Sutter, “The free lunch is over”, Dr. Dobb's Journal, 30(3),March 2005. On-line version, August 2009.http://www.gotw.ca/publications/concurrency-ddj.htm
La fin du « Free Lunch »
● La fin des gains en performances « faciles » est arrivée
● 2x3 GHz < 6 GHz : un processeur dual-cœurs n'offre pas les mêmes performance qu'un mono-cœur
● Les applications vont devoir s'adapter à cette évolution :● Beaucoup de cœurs : problème de concurrence, d'accès
mémoire ...● Avec des fréquences relativement basses● Hétérogénéité des cœurs
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
SOMMAIRE● Problématique de l'évolution des architectures
● Architecture interne
● Processeurs
● Mémoire
● Interconnexion
● Architectures Hautes Performances
● Multi-coeurs
● Many-coeurs
● Architectures hybrides
● Paradigmes de programmation
● Introduction
● Modèle à mémoire partagée
● Modèle à mémoire distribuée
● Modèle hybride
● Conclusions
● Références
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
Architecture globale :Von Neumann 1945
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
Architecture actuelle
Taxinomie de Flynn
● Classification des architectures selon 2 dimensions : instruction, data
● Deux états possibles pour chacune des dimensions : single, multiple
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
SISDSingle Instruction, Single Data
SIMDSingle Instruction, Multiple Data
MISDMultiple Instruction, Single Data
MIMDMultiple Instruction, Multiple Data
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
SOMMAIRE● Problématique de l'évolution des architectures
● Architecture interne
● Processeurs
● Mémoire
● Interconnexion
● Architectures Hautes Performances
● Multi-coeurs
● Many-coeurs
● Architectures hybrides
● Paradigmes de programmation
● Introduction
● Modèle à mémoire partagée
● Modèle à mémoire distribuée
● Modèle hybride
● Conclusions
● Références
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
Caractéristiques d'un processeur
● Jeux d'instructions (ISA : Instruction Set Architecture) qu'il peut exécuter. Historiquement on en distingue 2 types, aujourd'hui les jeux d'instruction des processeurs sont souvent intermédiaires :
● CISC (Complex Instruction Set Computer) : beaucoup d’instructions complexes mais prenant plusieurs cycles d’horloge
– Exemple : x86
● RISC (Reduced Instruction Set Computer) : moins d’instructions possibles (chaque instruction n'effectue qu'une seule opération élémentaire : load, store ...) mais n’utilisant que quelques cycles d’horloge
– Exemple : powerpc – cell – ARM (ipod ...)
● Complexité : nombre de transistors
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
Caractéristiques d'un processeur● Nombre de bits pouvant être traités en une instruction : 32 ou 64 bits.
● Définit la taille des registres généraux du processeur (emplacement mémoire interne du processeur) pour les nombres entiers.
● En 64 bits, les entiers et les adresses passent de 32 bits (4 octets) à 64 bits (8 octets).
● Avantages :
– Passage de 8 registres de 32 bits à 16 registres de 64 bits
– Adressage mémoire > 4 GB
– Nouvelles fonctionnalités, par exemple mode d'accès amélioré à la mémoire
● Vitesse maximale de l’horloge (plus elle augmente, plus le processeur complète d’instructions en une seconde).
● La fréquence d’horloge détermine la durée d’un cycle.
● Chaque opération utilise un certain nombre de cycles.
● La fréquence d’horloge est fonction de :
– la technologie des semi-conducteurs,
– le packaging,
– les circuits.
Composants d'un processeur● 1 CPU = plusieurs unités fonctionnelles
● Une unité de gestion des bus (unité d’entrées-sorties) en interface avec la mémoire vive du système,
● des registres, souvent divisés en registre floating-point (FPRs) et registres généraux (GPRs),
● Un compteur ordinal (Program Counter), registre contenant l'adresses de l'instruction en cours (ou à venir),
● une unité d’instruction (control unit) qui lit les données arrivant, les décode et les envoie à l’unité d’exécution,
● une unité d’exécution qui accomplit les tâches que lui a données l’unité d’instruction, composée notamment de :
– une ou plusieurs unités arithmétiques et logiques (UAL) qui assurent les fonctions basiques de calcul arithmétique et les opérations logiques.
– une ou plusieurs unités de virgule flottante (FPU) qui accomplissent les calculs complexes. L’instruction de calcul de base est la multiplication / addition voir les deux en même temps (FMA pour Floating-point Multiply and Add) en double précision.
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
PipeliningUne opération s’exécute en plusieurs étapes indépendantes par des éléments différents du processeur. Exemple du découpage classique RISC :
● IF : Instruction Fecht, charge l’instruction à exécuter dans le pipeline.
● ID : Instruction Decode/Register Fecht, décode l’instruction et adresse les registres.
● EX : Execution/Effective Address, exécute l’instruction (par la ou les unités arithmétiques et logiques).
● MA : Memory Access/ Cache Access, dénote un transfert depuis un registre vers la mémoire dans le cas d’une instruction du type STORE (accès en écriture) et de la mémoire vers un registre dans le cas d’un LOAD (accès en lecture).
● WB : Write-Back, stocke le résultat dans un registre.
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
Dans un micro-processeur sans pipeline, les instructions sont exécutées les unes après les autres. En supposant que chaque étape met 1 cycle d’horloge pour s’exécuter, il faut normalement 5 cycles pour exécuter une instruction, 15 pour 3 instructions.
Modèle idéal
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
Exécution simultanée des différentes étapes (parallélisme d'instructions)
Complexité liée au pipeline● Accès concurrent à la mémoire
● Branchements● Prédiction dynamique, en fonction des dernières instructions de
branchement
● Indication du compilateur
● Prédiction statique en fonction de l'emplacement de la cible dans le déroulement de l'exécution
● Durées différentes pour chacune des étapes● Problème de la latence mémoire
● Introduction de délais (delay, bubble) pour synchroniser les instructions
● Problème de dépendances
● Interruptions
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
Parallélisme de données● Le mode SIMD permet d'appliquer la même instruction
simultanément à plusieurs données :● Soit physiquement installé dans les processeurs : architectures
vectorielles (CRAY, NEC SX ...), qui disposent d'instructions vectorielles :
– L'instruction est décodée une seule fois, les éléments du vecteur sont ensuite soumis aux unités de traitement
– Les pipelines sont pleinement alimentés
● Soit simulé par des instructions de type vectorielles de bas niveau :
– SSE, 3DNow!, ...
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
Parallélisme d'instructions
ILP = Instruction Level Parallelism :● Architectures superscalaires :
● Exécuter simultanément les différentes étapes du pipeline sur des données distinctes
● Thread Level Parallelism (TLP) :● Améliorer le remplissage du flot d'instructions du processeur
en mixant plusieurs flux d'instructions
● Architecture Very Long Instruction Word (VLIW) :● Traiter des instructions longues, agrégations d’instructions
courtes indépendantes de façon à les exécuter explicitement en parallèle
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
Architectures superscalaires● Duplication de certains composants (FMA, FPU) et exécution simultanée de plusieurs
instructions
● Gestion des instructions :
– Statique (in-order) : exécutées dans l'ordre du code machine
– Dynamique (out-of-order) : le hardware modifie l'ordre des instructions pour favoriser le parallélisme
● Exécution spéculative, prédiction de branchement
● Prefetching : anticiper les données et les instructions dont le processeur aura besoin, et ainsi les précharger en mémoire
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
Thread Level Parallelism● SMT (Simultaneous MultiThreading)
● A chaque cycle, traitement de plusieurs instructions (parallélisme d'instruction) issues de plusieurs threads distincts : partage du pipeline, des registres et des caches entre les threads.
● Dégrade les performances individuelles mais améliore les performances de l'ensemble.
● Performance de l'ordre de 5 à 15% pour des applications multithreadées : ce n'est pas du « vrai » multithread !
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
Architectures VLIW● Reporte une partie de la gestion du pipeline d'exécution sur le compilateur
● Le compilateur a la charge de fournir une instruction longue = bundle (jusqu'à 256 bits), agrégation d'instructions courtes indépendantes
● Technologie EPIC d'Intel : l'Itanium
● Gain en performance (pas de contrôle, pas de ré-ordonnancement au niveau du processeur, les instructions sont exécutées dans l'ordre exact choisi par le compilateur) mais compatibilité binaire entre génération quasi-impossible.
● Le rôle du compilateur est essentiel !
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
SOMMAIRE● Problématique de l'évolution des architectures
● Architecture interne
● Processeurs
● Mémoire
● Interconnexion
● Architectures Hautes Performances
● Multi-coeurs
● Many-coeurs
● Architectures hybrides
● Paradigmes de programmation
● Introduction
● Modèle à mémoire partagée
● Modèle à mémoire distribuée
● Modèle hybride
● Conclusions
● Références
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
Différentes technologies● Deux grandes catégories :
● DRAM (Dynamique Random Access Memory) : chaque bit est représenté par une charge électrique qui doit être rafraîchie à chaque lecture/écriture
● SRAM (Static Random Access Memory) : retient ses données aussi longtemps qu'il y a du courant.
● Temps d'un cycle SRAM 8 à 16 fois plus rapide qu'un cycle DRAM.
● Coût de la mémoire SRAM 8 à 16 fois plus élevé que la mémoire DRAM
Type Taille Vitesse Coût/bit
Registre < 1 KB < 1ns €€€€
SRAM On-chip 8 KB – 6 MB < 10 ns €€€
SRAM Off-chip 1 MB – 16 MB < 20 ns €€
DRAM 64 MB – 1 TB < 100 ns €
Flash 64 MB – 32 GB < 100 µs c
Disk 40 GB – 1 PB < 20 ms ~ 0
Solution la plus courante :
De 1 à 3 niveaux de SRAM en mémoire cache La mémoire principale en DRAM La mémoire virtuelle sur des
disques
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
Caractérisation de la mémoire● Cas idéal : Mémoire la plus grande possible et la plus rapide
possible
● La performance des ordinateurs est limitée par la latence et la bande passante de la mémoire :● Latence = temps pour un seul accès
Temps d'accès mémoire >> temps cycle processeur
● Bande passante = nombre d'accès par unité de temps
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
Hiérarchisation de la mémoire
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
Organisation des caches● Le cache est divisé en lignes de mots.
● 2 niveaux de granularité :● Le CPU travaille sur des mots (par exemple 32 ou 64 bits)
● Les transferts mémoire se font par blocs (par exemple lignes de cache de 256 octets).
● Une même donnée peut être présente à différents niveaux de la mémoire : problème de cohérence et de propagation des modifications.
● Les lignes de caches sont organisées en ensembles à l'intérieur du cache, la taille de ces ensembles est constante et est appelée le degré d'associativité.
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
Mémoire virtuelle● La mémoire virtuelle est le dernier niveau de la hiérarchie mémoire.
● Espace d'adressage virtuel (ou logique) :
● Quantité maximale d'espace d'adressage disponible pour une application.
● Cet espace d'adressage est en correspondance avec l'espace d'adressage physique pour l'accès aux données via le MMU (Memory Management Unit) au niveau hard et via le système d'exploitation.
● L'espace d'adressage virtuel de chaque programme et l'espace mémoire sont divisés en pages (physiques ou virtuelles) de même taille.
● Translation Lookaside Buffer (TLB) : tampon de traduction d'adresses qui permet de conserver les dernières traductions adresse virtuelle ↔ adresse physique réalisées par le MMU.
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
Principe de localité
● Les programmes standards ont souvent des comportements prédictibles soit temporellement, soit spatialement, de sorte que les accès mémoires réalisés par le processeur pour les exécuter ne se font pas au hasard.
● Deux types de localité :● Temporelle : si un mot a été utilisé récemment, il a plus de chances d'être réutilisé
– Exemple : travailler sur des blocs qui tiennent dans le cache.
● Spatiale : si un mot a été utilisé récemment, les mots avec adresses voisines ont plus de chances d'être utilisés
– Exemple (localité spatiale sur les données) :for (i = 0 ; i < DIM ; i++) Buff[i] = Tab[i];
● Pre-fetching : ● Migration au plus près du processeur des données les plus récemment accédées.
● Migration au plus près du processeur des données ayant des adresses voisines.
Problèmes d'accès à la mémoire● Quand le processeur cherche un mot dans le cache :
● En cas d'échec, cache miss : le bloc du mot est copié depuis la mémoire dans le cache.
● En cas de succès, cache hit : la mémoire principale n'est pas accédée
● Trois catégories d'échec :● Echec obligatoire lors du premier accès
● Echec de capacité si le cache ne peut contenir tous les blocs nécessaires pendant l'exécution d'un programme
● Echec de conflit dans les caches associatifs : le mécanisme de correspondance utilisé (associativité) remplace des lignes déjà présentes dans le caches (alors que d'autres lignes peuvent être non utilisées)
● Page fault : l'adresse virtuelle référence une page qui n'est pas trouvée en mémoire physique. Il faut alors aller charger la page référencée en mémoire physique et modifier les indicateurs de présence dans la table des pages et dans le TLB.
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
Coût en cycles
Cache hit : ~ 1 cycle Page hit : ~ 100 cycles
Cache miss : ~ 100 cycles Page miss : ~ 5M cycles
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
SOMMAIRE● Problématique de l'évolution des architectures
● Architecture interne
● Processeurs
● Mémoire
● Interconnexion
● Architectures Hautes Performances
● Multi-coeurs
● Many-coeurs
● Architectures hybrides
● Paradigmes de programmation
● Introduction
● Modèle à mémoire partagée
● Modèle à mémoire distribuée
● Modèle hybride
● Conclusions
● Références
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
Composants● Le débit maximal d'un bus est caractérisé par :
● Le volume d'informations transmises simultanément (exprimé en bits = nombre de lignes physiques sur lesquelles les données sont envoyées de manière simultanée) = largeur du bus
– Exemple : une nappe de 32 fils permet de transmettre 32 bits en parallèle
● La vitesse du bus = fréquence (en Hz), nombre de paquets envoyés ou reçus par seconde.
● Front Side Bus : permet au processeur de communiquer avec la mémoire. 2 grands types :
● Hyper transport, solution AMD● QuickPath Interconnect (QPI), solution Intel
● Bus PCI, standard de bus interne permettant de connecter des cartes d'extensions sur la carte mère :
● PCI-Express : évolution du PCI standard, souvent disponible à la fois au niveau du northbridge et dou southbridge
Réseaux● Caractéristiques importantes :
● Bande passante (bandwith) = débit maximal
● Latence = temps d'initialisation de la communication
● Distance maximale entre deux noeuds
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
Technologie Latence Bande passante
1 Gb Ethernet - 1 Gb/s
10 Gb Ethernet ~ 10 µs 10 Gb/s
Infiniband < 2 µs De 10 à 96 Gb/s
Myrinet 2 µs 10 Gb/s
Répartition des types de réseaux des machines du top 500
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
SOMMAIRE● Problématique de l'évolution des architectures
● Architecture interne
● Processeurs
● Mémoire
● Interconnexion
● Architectures Hautes Performances
● Multi-coeurs
● Many-coeurs
● Architectures hybrides
● Paradigmes de programmation
● Introduction
● Modèle à mémoire partagée
● Modèle à mémoire distribuée
● Modèle hybride
● Conclusions
● Références
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
Architectures Hautes Performances
Atteindre l'exaflops ?
● Le petaflops a été atteint en 2008 (roadrunner)● Si on doit, pour atteindre l'exaflops, multiplier
par 1000 la facture énergétique, on a besoin de GigaWatts ! En fait, les prévisions sont de ~20 MW
● L'exaflops devrait être atteint vers 2018-2020● Sous quelle forme ?
● D'une manière générale, beaucoup d'unités de calcul
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
SOMMAIRE● Problématique de l'évolution des architectures
● Architecture interne
● Processeurs
● Mémoire
● Interconnexion
● Architectures Hautes Performances
● Multi-coeurs
● Many-coeurs
● Architectures hybrides
● Paradigmes de programmation
● Introduction
● Modèle à mémoire partagée
● Modèle à mémoire distribuée
● Modèle hybride
● Conclusions
● Références
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
Multicoeurs● Un processeur composé de plusieurs unités de calcul sur une même
puce.
● Permet d'augmenter la puissance de calcul sans augmenter la fréquence d'horloge.
● Et donc réduire la dissipation thermique.
● Et augmenter la densité : les cœurs sont sur le même support, la connectique qui relie le processeur à la carte mère ne change pas par rapport à un mono-processeur
Single Core Dual Core Quad Core
Core area A ~ A/2 ~ A/4
Core power W ~ W/2 ~ W/4
Chip power W + O W + O' W + O''
Core performance P 0.9 P 0.8 P
Chip performance P 1.8 P 3.2 P
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
Organisation des caches
Partage des caches● Partage du cache L2 (ou L3) :
● + : Communications plus rapides entre cœurs● + : meilleure utilisation de l'espace● + : migration des threads plus faciles entre les cœurs● - : contention au niveau de la bande passante et de la mémoire● - : problème de cohérence
● Pas de partage entre les caches :● + : pas de contention● - : communication/migration plus coûteuse, passage systématique par
le cache local
● Tendance :● Cache L2 non partagé, cache L3 partagé
Exemples
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
SOMMAIRE● Problématique de l'évolution des architectures
● Architecture interne
● Processeurs
● Mémoire
● Interconnexion
● Architectures Hautes Performances
● Multi-coeurs
● Many-coeurs
● Architectures hybrides
● Paradigmes de programmation
● Introduction
● Modèle à mémoire partagée
● Modèle à mémoire distribuée
● Modèle hybride
● Conclusions
● Références
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
Manycoeurs● Problématique :
● Consommation électrique : doubler la fréquence <=> X 8 de la consommation électrique
● Memory Wall : la vitesse d'accès à la mémoire augmente beaucoup plus lentement que la puissance crête du processeur
● Solution d'IBM : Blue Gene :● Augmenter le nombre de cœurs avec des fréquences réduites.
Caractéristiques de la BG/P● Avantages :
● Diminution de l'écart entre les débits et les latences mémoires
● Diminution de l'écart entre les débits et les latences réseaux
● Machine plus équilibrée
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
● Inconvénients :● Chaque cœur est lent
● Un très grand nombre de cœurs
● Peu de mémoire par cœurs
● 1 rack Blue Gene/P :
● 1024 nœuds, 4096 cœurs de type Power PC 45 à 850 MHz
● Cache L1 et L2 privés
● 2 Go de mémoire/nœud
● 1 nœud dédié au IO tous les 64 nœuds
● Topologie réseau :
● Tore 3D
● Réseau collectif
● barrières.
PowerPC 450 de la Blue Gene/P
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
FPU (Floating Point Unit) de type FMA (Fused Add Multiply)
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
SOMMAIRE● Problématique de l'évolution des architectures
● Architecture interne
● Processeurs
● Mémoire
● Interconnexion
● Architectures Hautes Performances
● Multi-coeurs
● Many-coeurs
● Architectures hybrides
● Paradigmes de programmation
● Introduction
● Modèle à mémoire partagée
● Modèle à mémoire distribuée
● Modèle hybride
● Conclusions
● Références
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
Architectures hybrides
● GP-GPU (General Purpose – Graphics Processing Units) :● Un marché de masse● Calcul double précision norme IEEE ● Outils de développement de plus en plus adaptés
Comparaison entre Fermi et Nehalem
● 512 coeurs simples
● ~ 3 billions de transistors
● ~ 1.5 GHz
● ~ 1500 Gflops SP
● ~ 750 Gflops DP
● ~ 190 Gbytes/s
● Support IEEE 754-2008
● Mémoires ECC (Error Correction Coding)
● 4 coeurs complexes
● 731 millions de transistors
● ~ 3 GHz
● 96 Gflops SP
● 48 Gflops DP
● ~ 30 Gbytes/s
● Support IEEE 754-2008
● Mémoires ECC (Error Correction Coding)
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
Organisation d'un GPU● Architecture Fermi
● 512 cœurs répartis en streaming processor (SM) de 32 coeurs
● Chaque streaming processor a un cache L1 partagé de 64 KB
● Tous les cœurs ont accès à un cache L2 partagé de 768 KB● Les cœurs supportent le standard IEEE 754-2008 pour la précision
flottante
● La mémoire est ECC (Error Correcting Coding)
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
Où vaton ?● Des dizaines, centaines, milliers de cœurs par processeur
● Exemple : Intel Knight Corner (basé sur l'architecture MIC – Many Integrated Cores)
● Des processeurs hybrides ● Exemple : APU (Accelerated Processing Unit) AMD Fusion combinant CPU et
GPU en une seule unité de traitement
● Des architectures many-coeurs à consommation électrique relativement basse :● Exemple : successeur de la Blue Gene/P : Blue Gene/Q, Cyclops64
● Quelles conséquences ?● Mémoires très hiérarchiques
● Très peu de mémoire par coeur
● Peu/pas de gestion de cohérence des caches
● Gestion de milliers de threads sur un chip
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
SOMMAIRE● Problématique de l'évolution des architectures
● Architecture interne● Processeurs
● Mémoire
● Interconnexion
● Architectures Hautes Performances● Multi-coeurs
● Many-coeurs
● Architectures hybrides
● Paradigmes de programmation● Introduction
● Modèle à mémoire partagée
● Modèle à mémoire distribuée
● Modèle hybride
● Conclusions
● Références
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
Pourquoi paralléliser ?● Parallélisation : ensemble de techniques logicielles et matérielles permettant
l'exécution simultanée de séquences d'instructions indépendantes, sur des processeurs différents.
● Pourquoi ?● Traitement de problèmes scientifiques : météo, climat, biologie, géophysique, chimie
…
● Applications : bases de données, web, …
● Parce qu'on n'a plus le choix !
● La multiplication du nombre d'unités de calcul ne réduit pas spontanément le temps d'exécution des programmes ...
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
Classification de Flynn associée● SISD, architecture séquentielle : un seul flot d'instructions, un seul flot de données,
exécution déterministe.
● MISD : un seul flot de données alimente plusieurs unités de traitement associées à plusieurs flots d'instructions. Peu implémenté.
● SIMD, processeurs vectoriels, GPU : un seul flot d'instructions et plusieurs flots de données. Toutes les unités de traitement exécutent la même instruction à un cycle d'horloge donné, en opérant sur des données différentes, exécution déterministe.
● MIMD, cluster de multi-cœurs : plusieurs flots de données et d'instructions. Chaque unité de traitement peut gérer un flot d'instructions sur un flot de données différent des autres. Exécution synchrone ou asynchrone, déterministe ou non-déterministe.
SISD
SIMD MISD MIMD
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
Terminologie● Mémoire partagée : d'un point de vue hard, réfère à une machine dont tous les proc ont un accès
direct à une mémoire commune. D'un point de vue modèle de programmation, toutes les tâches ont la même image mémoire.
● Mémoire distribuée : d'un point de vue physique, basée sur un accès mémoire réseau pour une mémoire physique non commune.D'un point de vue modèle de programmation, les tâches ne peuvent voir que la mémoire de la machine locale.
● Communications : les tâches parallèles échangent des données par différents moyens physiques : via un bus à mémoire partagée, via un réseau. Quelque soit la méthode employée, on parle de «communications».
● Synchronisation : la coordination des tâches en temps réel est souvent associée aux communications, elle est souvent implémentée en introduisant un point de synchronisation au-delà duquel la tâche ne peut continuer tant que une ou plusieurs autres tâches ne l'ont pas atteint.
● Granularité : mesure qualitative du rapport calcul/communications
● Grain grossier (coarse) : relativement beaucoup de calcul entre différentes communications
● Grain fin (fine) : relativement peu de calcul entre différentes communications
● Speedup : mesure de l'amélioration des performances dues au parallélismewall clock time of serial execution / wall clock time on parallel execution
● Scalabilité : réfère à la capacité d'un système parallèle à fournir une augmentation de l'accélération proportionnelle à l'augmentation du nombre de processeurs.
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
Efficacité de la parallélisation● Accélération et efficacité sont une mesure de la qualité de la parallélisation
● Soit T(p) le temps d'exécution sur p processeurs.● Accélération : A(p) = T(1)/T(p) (p = 1,2,3 …)
● Efficacité : E(p) = A(p)/p
● Accélération parallèle parfaite :● T(p) = T(1)/p
● A(p) = T(1)/T(p) = T(1)/(T(1)/p) = p
● E(p) = A(p)/p = p/p = 100%
● Les programmes scalables demeurent efficaces pour un grand nombre de processeurs (passage à l'échelle).
● Scalabilité faible : l'efficacité reste bonne quand le nombre de processeurs augmente en augmentant la taille du problème : augmenter le nombre de données traitées par cœur
● Scalabilité forte : l'efficacité reste bonne quand le nombre de processeurs augmente en conservant une taille de problème fixe : aller plus vite sur un problème de même taille
Loi d'Amdahl● Raisons possible d'une mauvaise scalabilité :
● La machine parallèle employée : architecture inadaptée, charge …
● Le programme parallélisé : analyser le comportement, améliorer les performances
● Un peu des deux …
● Loi d'Amdahl● Plus une règle qu'une loi
● Principe : la partie non parallèle d'un programme limite les performances et fixe une bonne supérieure à la scalabilité.
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
SOMMAIRE● Problématique de l'évolution des architectures
● Architecture interne● Processeurs
● Mémoire
● Interconnexion
● Architectures Hautes Performances● Multi-coeurs
● Many-coeurs
● Architectures hybrides
● Paradigmes de programmation● Introduction
● Modèle à mémoire partagée
● Modèle à mémoire distribuée
● Modèle hybride
● Conclusions
● Références
Principes● Tous les processeurs accèdent à toute la mémoire globale avec un
même espace d'adressage global.
● Chaque processeur travaille indépendamment des autres mais les modifications effectuées par un processeur à un emplacement mémoire (en mémoire globale) sont visibles par tous les autres.
● Les processeurs ont leur propre mémoire locale (cache)
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
Accès mémoire● UMA, Unified Memory Access
● Des processeurs identiques, ayant tous le même temps d'accès à la mémoire. Plus couramment appelés SMP (Symmetric MultiProcessor)
● Gestion de la cohérence des caches. Certains systèmes sont CC-UMA : si un processeur modifie un emplacement mémoire partagé, la modification est visible par tous les autres processeurs
● NUMA (Non Uniform Memory Access)
● Conçus pour pallier aux problèmes d'accès mémoire concurrents via un unique bus
● En général fabriqués à base de plusieurs blocs SMP interconnectés
● Des temps d'accès à la mémoire différents suivant la zone accédée. Le temps d'accès via le lien d'interconnexion des blocs est plus lent.
● Gestion de la cohérence des caches. CC-NUMA : Cache Coherent NUMA.
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
Avantages et inconvénients
● Avantages● Espace d'adressage global → facilite le travail du
programmeur● Mémoire proche des CPUs → le partage des données
entre tâches est rapide
● Inconvénients● Manque de scalabilité : augmenter le nombre de CPUs
accroît le trafic sur le chemin d'accès à la mémoire partagée
● Le programmeur doit gérer la synchronisation pour un accès correct à la mémoire globale
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
Modèles de programmation associés
● Modèle à mémoire partagée : openMP● Threads : Posix, TBB …
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
SOMMAIRE● Problématique de l'évolution des architectures
● Architecture interne● Processeurs
● Mémoire
● Interconnexion
● Architectures Hautes Performances● Multi-coeurs
● Many-coeurs
● Architectures hybrides
● Paradigmes de programmation● Introduction
● Modèle à mémoire partagée
● Modèle à mémoire distribuée
● Modèle hybride
● Conclusions
● Références
Principes● Le point commun de ces architectures : elles possèdent un réseau
d'interconnexion pour communiquer entre les mémoires des différents processeurs
● Chaque processeur a sa propre mémoire locale, il n'y a pas de notion d'espace d'adressage global entre tous les procs
● Les procs opèrent indépendamment les uns des autres, une modification en mémoire locale n'a pas d'effet sur la mémoire des autres procs
● Si un processeur a besoin d'une données dans la mémoire d'un autre processeur, le programmeur doit définir explicitement la communication
● Les réseaux d'interconnexion sont divers, avec des niveaux de performances très variables
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
Avantages et inconvénients
● Avantages● On peut augmenter le nombre de processeurs et la mémoire
proportionnellement● Accès rapide à la mémoire locale sur chaque proc, sans
surcoût de gestion de cohérence de cache
● Inconvénients● Le programmeur doit gérer toutes les communications entre
processeurs● Difficulté pour faire coïncider une structure de données basée
sur une mémoire globale à cette organisation physique de la mémoire
● Temps d'accès mémoire non locaux élevés
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
Modèles de programmation associés
● Message Passing Interface : MPI● PVM● Cuda/OpenCL/Brook
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
SOMMAIRE● Problématique de l'évolution des architectures
● Architecture interne● Processeurs
● Mémoire
● Interconnexion
● Architectures Hautes Performances● Multi-coeurs
● Many-coeurs
● Architectures hybrides
● Paradigmes de programmation● Introduction
● Modèle à mémoire partagée
● Modèle à mémoire distribuée
● Modèle hybride
● Conclusions
● Références
Principes● Les ordinateurs les plus puissants au monde sont aujourd'hui un mixte de
mémoire partagée et de mémoire distribuée
● La brique de base (nœud) est un multiprocesseur à mémoire partagée
● Ces briques sont interconnectées par un réseau (type ethernet, myrinet, infiniband) ou par des bus (cas CPU-GPU)
● Architectures concernées :● Cluster de multi-processeurs multi-cœurs
● CPU + GPU
● Deux types de parallélisme :● Parallélisme à gros grains → passage de message
● Parallélisme à grains fins → thread like
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
Performances
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
Modèles de programmation associées● Association des modèles de programmation à
mémoire partagée et à mémoire distribuée● Exemple :
– MPI + openMP– MPI + Cuda/openCL
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
SOMMAIRE● Problématique de l'évolution des architectures
● Architecture interne● Processeurs
● Mémoire
● Interconnexion
● Architectures Hautes Performances● Multi-coeurs
● Many-coeurs
● Architectures hybrides
● Paradigmes de programmation● Introduction
● Modèle à mémoire partagée
● Modèle à mémoire distribuée
● Modèle hybride
● Conclusions
● Références
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
Conclusions● Importance de la compréhension de
l'architecture des machines pour ● Adapter les algorithmes, les méthodes numériques
et la programmation● Comprendre le comportement d'un programme● Choisir son infrastructure de calcul en fonction des
besoins
● Appréhender les évolutions des architectures de calcul pour réaliser des codes pérennes à l'algorithmie portable
ECOMOD 2010 – V. Louvet – Architectures et programmation parallèles
Références● Top 500 : www.top500.org
● Actualités sur le HPC :● http://www.realworldtech.com
● http://www.hpcwire.com/
● http://www.clusterhpc.com/
● http://insidehpc.com/
● Centres de calcul :● Idris : http://www.idris.fr/
● CINES : http://www.cines.fr/
● CCRT : http://www-ccrt.cea.fr/
● GENCI : http://www.genci.fr/?lang=fr
● PRACE : http://www.prace-project.eu/
● HPC Europa2 : http://www.hpc-europa.eu/
● Mésocentres : http://calcul.math.cnrs.fr/spip.php?rubrique6