Plan : • • • Les systèmes HPC – Typologie des systèmes : • Machines Mémoire partagée • Machines à Mémoire Distribuées • Machine NUMA – Exemples Architectures Processeurs HPC – Processeurs scalaires, superscalaires, vectoriels – Concepts d’optimisation Optimisation de codes – Technique d’optimisation – Compilo, librairies Master IM2P2 - Calcul Scientifique 23/10/09 Page 38 Architecture Processeurs : MIMD Processeurs Généralistes (€↓) Jeu d’instruction complexe : multimedia, add, mult,… Spécialisé Entiers Processeurs HPC (€↑) Jeu d’instruction simple : Mult., Add, Div., Sub. Spécialisé Flottants 64 bit 32 bit Exemple : Pentium IV Exemple : Itanium II 3,2 GHz Cache 500 ko 6,4 Gflop/s peak 1,5 GHz Cache 6 Mo 6 Gflop/s peak Linpack 0,7 Linpack 5,4 Gflop/s Gflop/s Temps de restitution ≅ 8 fois + rapide! Fondeurs : Intel (Itanium), AMD (Opteron), IBM (Power), SUN (UltraSparc) , NEC (Processeurs Vectoriels) Master IM2P2 - Calcul Scientifique 23/10/09 Page 39 Architecture Processeurs HPC Définition : cycle •Fréquence d’horloge = nombre d’impulsions par seconde •200 Mhz ⇒ 200 Millions de cycles par seconde •Restitution d’une opération ⇒ n cycles avec n ≥ 1 Spécificités processeur HPC: •Instruction Level Parallelism (ILP) : •Pipeline •multiple Functional unit (FPU) •Memoire Hierarchique •Accès mémoire rapide •Différents niveaux de cache L1, L2, L3 •Exécution Spéculative •Branch prediction •Prefetching Master IM2P2 - Calcul Scientifique 23/10/09 Page 40 Architecture Processeurs HPC Exemple schéma Architecture Proc. Superscalaire: Itanium Master IM2P2 - Calcul Scientifique 23/10/09 Page 41 Architecture Processeurs HPC Exemple schéma Architecture Proc. Superscalaire: Itanium •Architecure « massively parallel »: 2 FPU 4 I&MM Units 3 Branch Prediction Master IM2P2 - Calcul Scientifique 23/10/09 Page 42 Proc. Scalaire : Pentium 4 IA32 •Pas de cache L3… •1 FPU Master IM2P2 - Calcul Scientifique •Pipeline… •Branch prediction 23/10/09 Page 43 Architecture Processeurs HPC Objectif Pipeline ⇒ 1 cycle = 1 résultat •Vision très schématique A1 = B1 + C1 load exec write 3 phases ⇒ 1 phase/cycle Pipeline : exemple •3 Opérations indépendantes A1 = B1 + C1 A2 = B2 + C2 A3 = B3 + C3 Master IM2P2 - Calcul Scientifique 23/10/09 Page 44 Architecture Processeurs HPC Objectif Pipeline ⇒ 1 cycle = 1 résultat A1 = B1 + C1 A2 = B2 + C2 A3 = B3 + C3 •Opérations indépendantes load Cycle 1 exec Load B1,C1 Cycle 2 Add B1,C1 Store in A1 Cycle 3 Cycle 4 write Load B2,C2 Add B2,C2 Résultats des 3 opérations : 9 cycles Store in A2 Load B3,C3 Cycle 8 Cycle 9 Cycles (Time) Add B3,C3 Store in A3 •Ressources « idle » Master IM2P2 - Calcul Scientifique 23/10/09 Page 45 Architecture Processeurs HPC Objectif Pipeline ⇒ 1 cycle = 1 résultat A1 = B1 + C1 A2 = B2 + C2 A3 = B3 + C3 •Opérations indépendantes Résultats des 3 opérations : 9 cycles exec load Pipelining : Latence : 3 cycles 1 res/cycle write Cycle 1 Load B1,C1 Cycle 2 Load B2,C2 Add B1,C1 Cycle 3 Load B3,C3 Add B2,C2 Store in A1 Add B3,C3 Store in A2 Cycle 4 Store in A3 Cycle 5 Cycles (Time) Opérations indépendantes Exhiber le maximum d’opérations indépendantes ⇒ alimenter Pipiline Master IM2P2 - Calcul Scientifique 23/10/09 Page 46 Architecture Processeurs HPC Plusieurs niveaux de pipeline : •Beaucoup d’opération atomiques (dépend micor-architecture, jeu instruction) : A1 = B1 + C1 load instruc. fetch decode instruc. exec exec write Mem Store ou load Write back Master IM2P2 - Calcul Scientifique 23/10/09 Page 47 Architecture Processeurs HPC longueur pipeline : Master IM2P2 - Calcul Scientifique 23/10/09 Page 48 Architecture Processeurs HPC Alimenter le processeur : Mémoire Hiérarchique Temps •Unité de Calcul « travaille » sur données dans les registres Mo Master IM2P2 - Calcul Scientifique 23/10/09 Page 49 Architecture Processeurs HPC Alimenter le processeur : Mémoire Hiérarchique Temps •Unité de Calcul « travaille » sur données dans les registres •Registre : taille très petite Mo Hit ? load B1 A1 = B1 + C1 yes no = miss •Cache ? load C1 •Coût n cycles Unité de Calcul « attend » n cycles Master IM2P2 - Calcul Scientifique 23/10/09 Page 50 Architecture Processeurs Plusieurs Niveaux de Cache : exemple processeur Itanium2 ® d ’INTEL ® Débits et Latences 1,5 Ghz => 1 cycle = 0,6 ns 2 cycles 256 ko 1.5-6 Mo-9 Mo 6.4 Go/s 32 Go/s L3U cache 16 Go/s 32 Go/s 12 cycles L2U cache 128 Integer Registers 128 FP Registers 16 Go/s L1D cache 16 ko 1 ko 1 ko 5 cycles 16Rd / 6Wr 32 Go/s 16 Go/s 5+1 cycles 12+1cycles Master IM2P2 - Calcul Scientifique Altix™: 145+ ns 23/10/09 Page 51 Architecture Processeurs Effet taille de cache : Master IM2P2 - Calcul Scientifique 23/10/09 Page 52 Architecture Processeurs HPC Exécution Spéculative : Alimenter le Pipeline If (cond1) then a1 = b1 + c1 … else a1 = b1 * c1 … End if « Casser » dépendances •Dépendances : Cond1 → a1 = b1 + c1,… •Branch prediction •On « parie » Cond1 vraie •On calcule a1 = b1 + c1,.… •On vérifie plus tard …. Master IM2P2 - Calcul Scientifique 23/10/09 Page 53 Architecture Processeurs HPC Exécution Spéculative : Alimenter le Pipeline •Prefetching •Charger 1 instruction ET voisins mémoire • On remplit les registres Master IM2P2 - Calcul Scientifique 23/10/09 Page 54 Architecture Processeurs HPC Concepts : ILP, Pipeline, speculation : Mie en œuvre pour différentes micro-architectures (jeux d’instructions machine scalaire) x86 32 bit : Pentium (IA_32), Athlon AMD CISC : Complex instruction Set Computer Prix, mais 32 bit x86 : Xeon, Opteron (AMD) 32 et/ou 64 bit Pour le HPC bon rapport prix/performance RISC : Power6 Reduce Instruction Set Computer VLIW : Itanium Intel (co-dev. HP ex. Alpha) Puissance In-order Very Long Instruction Word Bande passante mémoire Master IM2P2 - Calcul Scientifique 23/10/09 Page 55 Architecture Processeurs HPC Différentes approches : x86 vs. EPIC (Explicit Parallel Instruction Computing) Master IM2P2 - Calcul Scientifique 23/10/09 Page 56 Architecture Processeurs HPC Le core c’est quoi ? Master IM2P2 - Calcul Scientifique 23/10/09 Page 57 Architecture Processeurs HPC Tendance Actuelle : processeurs multi-cœur (core) •Fondeurs : Intel, AMD, IBM, SUN(Sparc) Cache Cache core core core Cache Cache core core Réduction taille gravure (45 nm) 1 processeurs mono-core 1 processeurs ( ou socket) multi-core (multi = 2, 4, 6, 8 ) Plus de puissance BRUTE (×2, 4, 6, 8 ) Plus de mémoire Cache / core Meilleur ratio flop/watt, flop/m2 Même niveau fréquence, même concept architectural Adaptation carte mère ⇒ débit vers la RAM Master IM2P2 - Calcul Scientifique 23/10/09 Page 58 Architecture Processeurs HPC TOP 500 Master IM2P2 - Calcul Scientifique 23/10/09 Page 59 TOP 500 : evolution processeurs Master IM2P2 - Calcul Scientifique 23/10/09 Page 60 Architecture Processeurs : Vectoriel Processeur Vectoriel opération sur vecteurs (non plus sur scalaire) : Single instruction multiple data (SIMD) Potentiellement très très puissant adaptation du code : meteo, Onera,etc… très très très cher NEC Peak Gflop Debit mémoire 100 Gflop/s 4TB/s Master IM2P2 - Calcul Scientifique 23/10/09 Page 61 Architecture Processeurs : Vectoriel Processeur Vectoriel NEC Peak Gflop Debit mémoire 100 Gflop/s 4TB/s TOP 500 Approche/ principe(SIMD) utilisé dans les architecture scalaire : X86 (32bit) SSE : Streaming SIMD Extension Altivec Superscalaire (2 FPU) Master IM2P2 - Calcul Scientifique 23/10/09 Page 62 Accélérer les processeurs Accélérateurs GP-GPU : General Purpose Graphic process Unit Adaptation des cartes graphiques Précision, compilateurs, langages (CUDA), etc… Stream processing (data centric process) Flop intensif (Double Precision ?) parallèlisme de données localité des données Futur : Intégration dans les processeurs GP-GPU Peak Gflop Debit mémoire Tesla (Nvidia) 500 Gflop/s 80GB/s Accélérateurs FPGA : Processeur reconfigurables (CRAY, SGI) CELL : 9 cores : 1 cpu + 8 SPE IBM Roadrunner Master IM2P2 - Calcul Scientifique 23/10/09 Page 63 Architecture Processeurs HPC • Comment on calcule le peak de perf. : – – Peak = Freq. * (Nbre opération par cycle) Nbre Opération par cycle : • • – Multicore : • – Combien de FPU ?(scalaire, super scalaire) Vectoriel Somme puissance core Exemple (itanium) • Fréquence : 1.5 Ghz, • Puissance crête : 6 Gflops/s : 1500 MHz * 2 madd/cycle → 6 GFLOP/s Fréquence Processeurs Vectoriels (NEC) Peak Gflop Debit mémoire Byte/flop 100 Gflop/s 4TB/s 40 GP-GPU (Nvidia) 600 Mhz 500 Gflop/s 80 Gb/s 0,16 Itanium mono-core 1,5 Ghz 6 Gflop/s 6,4 Gb/s 1,06 Xeon Quad-Core 3 Ghz 40 Gflop 9,7 Gb/s 0,24 Xeon « NHM » 2,8Ghz 38Gflop 32 Gb/s 0,84 Power6 Bi-core 4,7 Ghz 36 Gflop ? Master IM2P2 - Calcul Scientifique 23/10/09 Page 64 Calcul Haute Performance : TOP 500 List Les plus grands systèmes de calcul actuellement : classement TOP 500 Juin 2009 Benchmark : Linpack (kw) Puissance Centrale nucléaire de 40 MW à 1450 MW Master IM2P2 - Calcul Scientifique 23/10/09 Page 65