Initiation au HPC - Généralités Éric Ramat et Julien Dehos Université du Littoral Côte d Opale M2 Informatique 2 septembre 2015 Éric Ramat et Julien Dehos Initiation au HPC - Généralités 1/49
Plan du cours 1 Présentation du module 2 Motivation du HPC 3 Architectures parallèles/distribuées 4 Critères de performances 5 Notions et problématiques de base 6 Programmation parallèle/concurrente Éric Ramat et Julien Dehos Initiation au HPC - Généralités 2/49
Plan du cours 1 Présentation du module 2 Motivation du HPC 3 Architectures parallèles/distribuées 4 Critères de performances 5 Notions et problématiques de base 6 Programmation parallèle/concurrente Éric Ramat et Julien Dehos Initiation au HPC - Généralités 2/49
Présentation du module Objectifs avoir un peu de culture générale sur les architectures parallèles/distribuées faire un peu de programmation parallèle/concurrente savoir aborder un problème de parallélisation/concurrence : identifier le problème, concevoir/implémenter/valider une solution Éric Ramat et Julien Dehos Initiation au HPC - Généralités 3/49
Présentation du module Volume horaire 12h sur la programmation parallèle 12h sur la programmation concurrente environ 1/4 CM et 3/4 TP Éric Ramat et Julien Dehos Initiation au HPC - Généralités 4/49
Présentation du module Évaluation programmation parallèle : examen sur feuille, 1h, sans document Éric Ramat et Julien Dehos Initiation au HPC - Généralités 5/49
Présentation du module Page web du module http://www-lisic.univ-littoral.fr/~dehos Éric Ramat et Julien Dehos Initiation au HPC - Généralités 6/49
Plan du cours 1 Présentation du module 2 Motivation du HPC 3 Architectures parallèles/distribuées 4 Critères de performances 5 Notions et problématiques de base 6 Programmation parallèle/concurrente Éric Ramat et Julien Dehos Initiation au HPC - Généralités 6/49
Motivation du HPC Définition du HPC High Performance Computing (calcul à haute performance) typiquement : gros calculs réalisés sur des supercalculateurs mais également : systèmes distribués ou à accès concurrents, applications nécessitant beaucoup de calculs sur des ordinateurs personnels ou des appareils mobiles... Tianhe-2 (2013) plantronicsgermany Éric Ramat et Julien Dehos Initiation au HPC - Généralités 7/49
Motivation du HPC Notion de puissance de calcul quelques unités de mesure : MIPS : Million Instructions Per Second FLOPS : FLoating-point Operations Per Second GFLOPS : 10 9 FLOPS PFLOPS : 10 15 FLOPS quelques exemples : CPU intel Core i7-3770 (2013) : 200 GFLOPS GPU AMD Radeon R9 290X (2013) : 5 632 GFLOPS Sony PS4 (2013) : 102 GFLOPS CPU + 1 843 GFLOPS GPU Apple iphone 6 (2014) : 166 GFLOPS GPU le Pentium 90 de quand j étais jeune (1994) : 0,09 GFLOPS Tianhe-2 (2013) : 33,86 PFLOPS 200K iphone 6 300M P90 Éric Ramat et Julien Dehos Initiation au HPC - Généralités 8/49
Motivation du HPC Besoin en puissance de calcul : prévisions Météo-France supercalculateur NEC SX9 (2009) : 40 TFLOPS en crête trois modèles de simulation couplés, différentes échelles réajustement toutes les 6 heures Éric Ramat et Julien Dehos Initiation au HPC - Généralités 9/49
Motivation du HPC Besoin en puissance de calcul : jeu d échecs nombre de feuilles estimé de l arbre de jeu : 10 123 en considérant qu un ordinateur à 100 PFLOPS peut calculer une feuille en 1 opération, il faudrait plus de 10 96 siècles pour tout calculer Éric Ramat et Julien Dehos Initiation au HPC - Généralités 10/49
Motivation du HPC Besoin en puissance de calcul : jeux vidéo calculer des images 1920 1080 en 17 ms 124M pixels/s à partir de scènes 3D de plusieurs millions de polygones et en gérant l éclairage, les physics... Crysis 3 (2013) Éric Ramat et Julien Dehos Initiation au HPC - Généralités 11/49
Motivation du HPC Évolution de la puissance de calcul la fréquence d horloge plafonne à 3 GHz depuis 2005 le nombre de transistors continue à doubler tous les 2 ans (loi de Moore, 1975) nouvelles contraintes : limites de miniaturisation, dissipation thermique, consommation électrique nécessité du parallélisme Éric Ramat et Julien Dehos Initiation au HPC - Généralités 12/49
Motivation du HPC Disponibilité de la puissance de calcul systèmes multi-processeurs processeurs multi-coeurs cartes graphiques interconnexion à base de réseaux rapides mais nécessité d adapter les logiciels Éric Ramat et Julien Dehos Initiation au HPC - Généralités 13/49
Plan du cours 1 Présentation du module 2 Motivation du HPC 3 Architectures parallèles/distribuées 4 Critères de performances 5 Notions et problématiques de base 6 Programmation parallèle/concurrente Éric Ramat et Julien Dehos Initiation au HPC - Généralités 13/49
Architectures parallèles/distribuées Systèmes distribués noeuds hétérogènes de calcul ou de stockage traitement de tâches hétérogènes exemple : services web (HTTP+BD+traitements) contraintes de fiabilité, capacité, charge, temps de réponse... Data center Facebook Éric Ramat et Julien Dehos Initiation au HPC - Généralités 14/49
Architectures parallèles/distribuées Calculateurs massivement parallèles supercalculateurs, grilles de calcul, ordinateurs en réseau, nombre de processeurs important calculs sur des gros volumes de données exemple : prévisions météo, synthèse d images, cryptanalyse... Éric Ramat et Julien Dehos Initiation au HPC - Généralités 15/49
Architectures parallèles/distribuées Systèmes multi-processeurs plusieurs processeurs dans une même machine CPU, GPU... intérêts : mémoire partagée, interconnexion haute performance mais nombre de processeurs faible CXT8000 (nvidia Tesla) Éric Ramat et Julien Dehos Initiation au HPC - Généralités 16/49
Architectures parallèles/distribuées Processeurs multi-coeurs plusieurs coeurs parallèles dans un même processeur spécifique par coeur : unités de contrôle/calcul + mémoire partagé : unités de contrôle communes + mémoire partagée Éric Ramat et Julien Dehos Initiation au HPC - Généralités 17/49
Architectures parallèles/distribuées Processeurs vectoriels calculer une instruction sur plusieurs données en même temps avec des registres 128 bits, on peut traiter 4 données 32 bits à la fois sur les processeurs x86 : SSE, AVX permet d accélérer les calculs mais nécessite une programmation particulière (minimiser les chargements et déchargements) Éric Ramat et Julien Dehos Initiation au HPC - Généralités 18/49
Architectures parallèles/distribuées Architecture pipeline réaliser un calcul nécessite plusieurs étapes sans pipeline : on effectue toutes les étapes d un calcul puis on passe au calcul suivant avec pipeline : lorsqu un calcul passe à l étape suivante, on remplit l étape libérée avec un nouveau calcul, sans attendre permet d accélérer les calculs mais nécessite une programmation particulière (garder le pipeline plein) Éric Ramat et Julien Dehos Initiation au HPC - Généralités 19/49
Architectures parallèles/distribuées Clock Cycle 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Waiting Instructions UNPIPELINED Stage 1: Fetch Stage 2: Decode Stage 3: Execute Stage 4: Write-back Completed Instructions Éric Ramat et Julien Dehos Initiation au HPC - Généralités 20/49
Architectures parallèles/distribuées Clock Cycle 0 1 2 3 4 5 6 7 8 Waiting Instructions PIPELINED Stage 1: Fetch Stage 2: Decode Stage 3: Execute Stage 4: Write-back Completed Instructions Éric Ramat et Julien Dehos Initiation au HPC - Généralités 21/49
Architectures parallèles/distribuées Ces architectures sont complémentaires calculateur à N 1 noeuds noeuds à N 2 processeurs processeurs à N 3 coeurs coeurs à N 4 unités de calcul (UC) = N 1 N 2 N 3 N 4 unités de calcul + de la mémoire spécifique à chaque niveau + des techniques de programmation spécifiques à chaque niveau une grande puissance de calcul et une bonne migraine pour programmer tout çà Éric Ramat et Julien Dehos Initiation au HPC - Généralités 22/49
Plan du cours 1 Présentation du module 2 Motivation du HPC 3 Architectures parallèles/distribuées 4 Critères de performances 5 Notions et problématiques de base 6 Programmation parallèle/concurrente Éric Ramat et Julien Dehos Initiation au HPC - Généralités 22/49
Critères de performances Mesures des performances temps de calculs : durée, MIPS, FLOPS, nombre de polygones rendus par seconde... se méfier des chiffres annoncés : FLOPS en simple ou double précision puissance moyenne ou en crête prise en compte des initialisations, transferts de données... comparaison d implémentations avec le même degré d optimisation... Éric Ramat et Julien Dehos Initiation au HPC - Généralités 23/49
Critères de performances Objectif de la parallélisation exécution séquentielle : 0 T(1) exécution parallèle (idéale) : 1 unité de calcul t P unités de calcul 0 T(P) t accélération (speed-up) : S(P) = T(1) T(P) objectif : S(P) = P c est-à-dire T(P) = T(1) P Éric Ramat et Julien Dehos Initiation au HPC - Généralités 24/49
Critères de performances Passage à l échelle (scalability) S(P) seuil d optimalité S(P) = P P évolution du speed-up en fonction du nombre d unités de calcul cas idéal : S(P) = P avec peu d UC, la parallélisation est souvent efficace à partir d un certain seuil, utiliser plus d UC n accélère pas le calcul, voire le ralentit (coût de gestion de la parallélisation, limite de parallélisation du calcul...) Éric Ramat et Julien Dehos Initiation au HPC - Généralités 25/49
Critères de performances Loi d Amdahl décrit le passage à l échelle théorique selon le calcul à réaliser le calcul peut être décomposé en : une partie parallélisable sur P unités de calcul (de proportion τ) une partie séquentielle résiduelle (de proportion 1 τ) calcul : 1 2... P τ 1 τ partie P-parallélisable partie séquentielle résiduelle on a : T(P) = τt(1) P + (1 τ)t(1) d où (loi d Amdahl) : S(P) = T(1) T(P) = 1 τ P +1 τ un calcul passe bien à l échelle uniquement si τ est très proche de 1 Éric Ramat et Julien Dehos Initiation au HPC - Généralités 26/49
Critères de performances 20.00 Amdahl s Law 18.00 16.00 14.00 12.00 Parallel Portion 95% 90% 75% 50% Speedup 10.00 8.00 6.00 4.00 2.00 0.00 1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768 65536 Number of Processors Éric Ramat et Julien Dehos Initiation au HPC - Généralités 27/49
Plan du cours 1 Présentation du module 2 Motivation du HPC 3 Architectures parallèles/distribuées 4 Critères de performances 5 Notions et problématiques de base 6 Programmation parallèle/concurrente Éric Ramat et Julien Dehos Initiation au HPC - Généralités 27/49
Notions et problématiques de base Parallélisme de tâches ou de données parallélisme de tâches : le système effectue en parallèle des tâches/calculs différents exemples : services web, ordinateur personnel multi-tâche programmation concurrente parallélisme de données : le système effectue le même calcul, sur des données différentes exemples : supercalculateurs, GPU programmation parallèle Éric Ramat et Julien Dehos Initiation au HPC - Généralités 28/49
Notions et problématiques de base Taxinomie de Flynn classification des architectures d ordinateurs (1966) : Single Data Multiple Data Single Instruction SISD SIMD Multiple Instruction MISD MIMD aujourd hui, on utilise plutôt les termes SPMD et MPMD (Program) Éric Ramat et Julien Dehos Initiation au HPC - Généralités 29/49
Notions et problématiques de base Taxinomie de Flynn : SISD SISD Instruction Pool Data Pool PU instruction unique sur donnée unique c est-à-dire pas de parallélisme exemple : architecture Von Neumann Éric Ramat et Julien Dehos Initiation au HPC - Généralités 30/49
Notions et problématiques de base Taxinomie de Flynn : SIMD SIMD Instruction Pool Data Pool PU PU PU instruction unique sur données multiples c est-à-dire parallélisme de données exemples : GPU, processeurs vectoriels PU Éric Ramat et Julien Dehos Initiation au HPC - Généralités 31/49
Notions et problématiques de base Taxinomie de Flynn : MISD MISD Instruction Pool instructions multiples sur donnée unique Data Pool PU PU peu utilisé en pratique exemple : systèmes critiques Éric Ramat et Julien Dehos Initiation au HPC - Généralités 32/49
Notions et problématiques de base Taxinomie de Flynn : MIMD MIMD Data Pool Instruction Pool PU PU PU PU PU PU PU PU instructions multiples sur données multiples c est-à-dire parallélisme de tâches et de données exemples : CPU multi-coeurs, architectures distribuées Éric Ramat et Julien Dehos Initiation au HPC - Généralités 33/49
Notions et problématiques de base Processus, thread processus : programme en cours d exécution espace mémoire réservé au processus communication entre processus par messages/signaux thread : duplication légère d un processus espace mémoire partagé par tous les threads du processus communication entre threads d un processus par appels systèmes Éric Ramat et Julien Dehos Initiation au HPC - Généralités 34/49
Notions et problématiques de base appels systèmes messages instructions thread 1 instructions thread 2 instructions mémoire processus 1 mémoire processus 2 Éric Ramat et Julien Dehos Initiation au HPC - Généralités 35/49
Notions et problématiques de base Équilibrage de charge paralléliser revient à décomposer en plusieurs processus/threads exécutés en parallèle, sur des unités de calculs différentes objectif : répartir la charge de calcul de façon équilibrée (pour réduire le temps de calcul global) charge équilibrée : S(P) = P charge non équilibrée : S(P) < P difficultés : temps de calcul différents, accès concurrents, communication entre processus/thread... Éric Ramat et Julien Dehos Initiation au HPC - Généralités 36/49
Notions et problématiques de base attente attente attente 0 T(P) t 0 T(P) t charge équilibrée S(P) = P charge non équilibrée S(P) < P Éric Ramat et Julien Dehos Initiation au HPC - Généralités 37/49
Notions et problématiques de base Synchrone/asynchrone opérations synchrones : les opérations sont coordonnées dans le temps (cycles d horloge, exécution séquentielle) exemples : instructions vectorielles opérations asynchrones : les opérations s exécutent indépendamment exemples : systèmes multi-tâches programmation parallèle/concurrente principalement asynchrone avec des mécanismes de synchronisation (barrière, mutex) Éric Ramat et Julien Dehos Initiation au HPC - Généralités 38/49
Notions et problématiques de base t t attente synchrone asynchrone asynchrone + barrière t Éric Ramat et Julien Dehos Initiation au HPC - Généralités 39/49
Notions et problématiques de base Accès concurrent (race condition) plusieurs processus/threads accèdent à une ressource (périphérique, mémoire partagée...) en même temps problèmes possibles : calculs incorrects (utilisation de données obsolètes) interblocages (attente mutuelle)... Éric Ramat et Julien Dehos Initiation au HPC - Généralités 40/49
Notions et problématiques de base #omp parallel for num_threads(2) for (int i=0; i<n; i++) { int x = rand(); // appel système bloquant et concurrent T[i] = f(x); } thread 1 attente réponse att. appel att. réponse système rand() rand() rand() thread 2 attente appel att. réponse att. appel Éric Ramat et Julien Dehos Initiation au HPC - Généralités 41/49
Notions et problématiques de base Section critique, mutex, sémaphore en temps normal : un processus doit pouvoir être mis en pause puis repris section critique : section de code qui doit s exécuter sans interruption (e.g. mise à jour d une ressource partagée) mutex, sémaphore : primitives de synchronisation (permet de vérouiller temporairement l accès à une donnée) Éric Ramat et Julien Dehos Initiation au HPC - Généralités 42/49
Plan du cours 1 Présentation du module 2 Motivation du HPC 3 Architectures parallèles/distribuées 4 Critères de performances 5 Notions et problématiques de base 6 Programmation parallèle/concurrente Éric Ramat et Julien Dehos Initiation au HPC - Généralités 42/49
Programmation parallèle/concurrente Architecture Von Neumann composition : UAL/UC + mémoires + entrées/sorties distinction implicite des instructions et des données bus de données central parallélisation : à quelle échelle (UAL, CPU...)? quelles mémoires? montée en charge du bus? Éric Ramat et Julien Dehos Initiation au HPC - Généralités 43/49
Programmation parallèle/concurrente Choix de conception des architectures parallèles synchronisation des unités de calculs : calculs synchrones (processeurs vectoriels) synchronisation par le système (appels systèmes, messages locaux ou réseaux) accès mémoire : différents types de mémoire : registres, caches distribués/partagés, RAM distribuée/partagée problème de gestion mémoire (cohérence de cache, accès concurrents) et de temps d accès Éric Ramat et Julien Dehos Initiation au HPC - Généralités 44/49
Programmation parallèle/concurrente Architecture à mémoire partagée toutes les unités de calcul accèdent à la même mémoire exemples : multi-cpu, CPU multi-coeurs, GPU également appelé SMP (Symmetric Multi-Processing) efficace et simple à utiliser mais peu évolutif accès mémoire pas forcément uniforme programmation : thread, OpenMP Éric Ramat et Julien Dehos Initiation au HPC - Généralités 45/49
Programmation parallèle/concurrente Architecture à mémoire distribuée chaque unité de calcul accède à sa propre mémoire exemples : systèmes distribués, grilles de calcul, supercalculateurs plus évolutif mais moins efficace et plus difficile à utiliser programmation : socket, MPI Éric Ramat et Julien Dehos Initiation au HPC - Généralités 46/49
Programmation parallèle/concurrente Méthode générale de programmation parallèle/concurrente caractériser le problème à paralléliser prévoir une solution (architecture, technologies, algorithme) conception et implémentation validation (correction, performances) Éric Ramat et Julien Dehos Initiation au HPC - Généralités 47/49
Programmation parallèle/concurrente Avant de paralléliser/distribuer/optimiser du code est-ce nécessaire (performances insuffisantes)? l algorithme déjà implémenté est-il optimal? gestion mémoire correcte (structures de données, allocation...)? options de compilation, assertions, logs...? profilage de code (où est consommé le temps)? efficacité des optimisations réalisées (mesurer)? Éric Ramat et Julien Dehos Initiation au HPC - Généralités 48/49
Fin Éric Ramat et Julien Dehos Initiation au HPC - Généralités 49/49