Équipe SATANAS Supports et algorithmes pour les applications numériques haute performance. Alexandre DENIS

Documents pareils
Initiation au HPC - Généralités

Génération de code binaire pour application multimedia : une approche au vol

Rapport 2014 et demande pour Portage de Méso-NH sur Machines Massivement Parallèles du GENCI Projet 2015 : GENCI GEN1605 & CALMIP-P0121

Rapport d activité. Mathieu Souchaud Juin 2007

Systèmes et traitement parallèles

Infrastructures Parallèles de Calcul

THÈSE. Pour obtenir le grade de. Spécialité : Informatique. Arrêté ministériel : 7 août Présentée et soutenue publiquement par.

Info0804. Cours 6. Optimisation combinatoire : Applications et compléments

Les environnements de calcul distribué

Parallélisme et Répartition

Architecture des ordinateurs

Architecture des calculateurs

Quantification d incertitude et Tendances en HPC

Une bibliothèque de templates pour CUDA

MODULE I1. Plan. Introduction. Introduction. Historique. Historique avant R&T 1ère année. Sylvain MERCHEZ

Eléments d architecture des machines parallèles et distribuées

Contexte et motivations Les techniques envisagées Evolution des processus Conclusion

Retour d expérience, portage de code Promes dans le cadre de l appel à projets CAPS-GENCI

Exécution des instructions machine

Contrôle Non Destructif : Implantation d'algorithmes sur GPU et multi-coeurs. Gilles Rougeron CEA/LIST Département Imagerie Simulation et Contrôle

Limitations of the Playstation 3 for High Performance Cluster Computing

Sanity Check. bgcolor mgcolor fgcolor

Évaluation et implémentation des langages

La Forge INRIA : bilan et perspectives. Hervé MATHIEU - 11 mai 2010

Tout savoir sur le matériel informatique

INF6500 : Structures des ordinateurs. Sylvain Martel - INF6500 1

Chapitre 1. Infrastructures distribuées : cluster, grilles et cloud. Grid and Cloud Computing

Programmation C. Apprendre à développer des programmes simples dans le langage C

Concept de machine virtuelle

Evaluation des performances de programmes parallèles haut niveau à base de squelettes algorithmiques

Programmation parallèle et ordonnancement de tâches par vol de travail. Thierry Gautier MOAIS, INRIA, Grenoble

Équilibrage Dynamique de Charge pour des Calculs Parallèles sur Cluster Linux - Une Évaluation de l Environnement AMPI.

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Rencontre sur la thématique du Calcul Haute Performance - 13 juin Better Match, Faster Innovation

Chapitre 4 : Les mémoires

La technologie Java Card TM

Chapitre I Notions de base et outils de travail

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants :

Contribution à la conception à base de composants logiciels d applications scientifiques parallèles.

Une méthode de conception de systèmes sur puce

Architecture des Ordinateurs. Partie II:

Introduction à la Programmation Parallèle: MPI

Grid Technology. ActiveMQ pour le grand collisionneur de hadrons (LHC) Lionel Cons Grid Technology Group Information Technology Department

Multiprogrammation parallèle générique des méthodes de décomposition de domaine

WEA Un Gérant d'objets Persistants pour des environnements distribués

M2-Images. Rendu Temps Réel - OpenGL 4 et compute shaders. J.C. Iehl. December 18, 2013

Fonctionnement et performance des processeurs

Machines virtuelles Cours 1 : Introduction

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Matériel & Logiciels (Hardware & Software)

Processus! programme. DIMA, Systèmes Centralisés (Ph. Mauran) " Processus = suite d'actions = suite d'états obtenus = trace

Visite de presse. Le supercalculateur Tera - 10

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Chapitre 2 : Abstraction et Virtualisation

Séminaire Partenaires Esri France 6 et 7 juin 2012 Paris. ArcGIS et le Cloud. Gaëtan LAVENU

ELP 304 : Électronique Numérique. Cours 1 Introduction

Architectures informatiques dans les nuages

T. Gasc 1,2,3, F. De Vuyst 1, R. Motte 3, M. Peybernes 4, R. Poncet 5

Tests de performance du matériel

Pour obtenir le grade de. Arrêté ministériel : 7 août Sylvain Genevès

Mesure de performances. [Architecture des ordinateurs, Hennessy & Patterson, 1996]

Cours 1 : La compilation

Big Data. Cyril Amsellem Consultant avant-vente. 16 juin Talend

THEME 1 : L ORDINATEUR ET SON ENVIRONNEMENT. Objectifs

Intel Corporation Nicolas Biguet Business Development Manager Intel France

Plan du cours. Historique du langage Nouveautés de Java 7

Protection de l Investissement Virtualisation, Efficacité énergétique

Runtime. Gestion de la réactivité des communications réseau. François Trahay Runtime, LaBRI sous la direction d'alexandre Denis Université Bordeaux I

PROGRAMME DU CONCOURS DE RÉDACTEUR INFORMATICIEN

Un ordinateur, c est quoi?

Programmation parallèle et distribuée

Système de stockage IBM XIV Storage System Description technique

Métriques de performance pour les algorithmes et programmes parallèles

Architecture des ordinateurs

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Projet IGGI. Infrastructure pour Grappe, Grille et Intranet. Fabrice Dupros. CASCIMODOT - Novembre Systèmes et Technologies de l Information

1 Description générale de VISFIELD

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

PLATE-FORME DE CLOUD COMPUTING SLAPOS. Intégration d applications

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Introduction à CUDA.

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

DG-ADAJ: Une plateforme Desktop Grid

UNIVERSITÉ D ORLÉANS ÉCOLE DOCTORALE MIPTIS MATHÉMATIQUES, INFORMATIQUE, PHYSIQUE THÉORIQUE ET INGÉNIEURIE DES SYSTÈMES. THÈSE présentée par :

DOSSIER SOLUTION CA ERwin Modeling. Comment gérer la complexité des données et améliorer l agilité métier?

Chapitre 1 - Langages de description d architectures matérielles hybrides

Hétérogénéité pour atteindre une consommation énergétique proportionnelle dans les clouds

Éléments de programmation et introduction à Java

Cours d Algorithmique et de Langage C v 3.0

IV- Comment fonctionne un ordinateur?

CORBA haute performance

Logiciel Libre Cours 3 Fondements: Génie Logiciel

VMware vsphere 5 Préparation à la certification VMware Certified Professional 5 Data Center Virtualization (VCP5-DCV) - Examen VCP510

Tivoli Endpoint Manager Introduction IBM Corporation

Conception des systèmes répartis

Enseignant: Lamouchi Bassem Cours : Système à large échelle et Cloud Computing

Ecole des Hautes Etudes Commerciales HEC Alger. par Amina GACEM. Module Informatique 1ière Année Master Sciences Commerciales

TRANSFORM IT + BUSINESS + YOURSELF

Performances de la programmation multi-thread

Gestion de clusters de calcul avec Rocks

Transcription:

Équipe SATANAS Supports et algorithmes pour les applications numériques haute performance Alexandre DENIS

L équipe Satanas Deux équipes-projets INRIA RUNTIME Supports exécutifs performants pour architectures parallèles ScAlApplix Schémas et algorithmes hautes performances pour les applications scientifiques complexes

À propos des préoccupations quotidiennes de l équipe Satanas «Conception de supports d exécution pour machines parallèles» Outils pour faciliter le développement et accélérer l exécution des programmes sur des machines compliquées Domaine d application = Calcul intensif et simulation Sismologie, Nucléaire, Dynamique moléculaire, Météo, Combustion, Partenaires : CEA, EDF, IFP, Total,

Dassault Falcon 7X Entièrement conçu et dessiné par ordinateur

Simulation d un séisme dans les environs de Nice

Autres domaines applicatifs ayant donné lieu à des simulations de grande taille Simulation des instabilités d un plasma dans un tokamak (dans ITER avec le CEA Cadarache) Utilisation du solveur direct PaStiX Simultation de flux neutroniques dans un cœur de réacteur nucléaire (avec EDF) Méthodes de décomposition de domaines

Les ordinateurs «parallèles» Motivation La durée des calculs requis par une simulation serait énorme sur une station de travail La quantité de mémoire est également est insuffisante Machines parallèles «plusieurs processeurs utilisés conjointement» Idée : plus on est nombreux, plus le travail avance vite! Cela peut prendre plusieurs formes : Un PC contenant quelques processeurs Une machine spécialisée contenant beaucoup de processeurs Une grappe de PC Une grille de calcul

Machines parallèles contemporaines Quelle est la tendance?

Machines spécialisées Désormais appelée machines «massivement parallèles» Plusieurs centaines de milliers de processeurs Coût exorbitant, architecture spécifique peu évolutive

Grappes de PC (Clusters) Ensemble de PC reliés par un réseau rapide Les PC sont «normaux», juste un peu survitaminés Rapport performance/prix imbattable!

Grappes de PC (Clusters) Ensemble de PC reliés par un réseau rapide Les PC sont «normaux», juste un peu survitaminés Rapport performance/prix imbattable!

Grappes de PC (Clusters) Ensemble de PC reliés par un réseau rapide Les PC sont «normaux», juste un peu survitaminés Rapport performance/prix imbattable!

Les grilles de calcul Interconnexion de machines à l échelle d un pays d un continent de la planète Exemple Plate-forme expérimentale Grid 5000 9 sites Plusieurs grappes par site Plus de 5000 processeurs

Évolution des architectures parallèles Grappes de machines multiprocesseur Réseaux rapides Processeurs «banalisés» Programmation distribuées «à plat» Parallélisme à gros grain Modèle à mémoire distribuée

Pourquoi une telle percée des grappes? Bla-bla habituel Architecture évolutive Facile à programmer Extension de la mémoire des PC, ajout de nouveaux PC, etc. Matériel familier Vraie raison : rapport performance/prix excellent Les grappes bénéficient de l évolution des processeurs «banalisés» Intel, AMD, IBM, Sun On retrouve ces processeurs dans les stations de travail et les consoles de jeux! C est dans ce domaine que les évolutions sont les plus spectaculaires

Gordon Moore a toujours raison

Les vertus de la finesse de gravure La fréquence augmente En tout cas, c était vrai jusqu à il y a peu La dissipation thermique et la consommation deviennent problématiques Mais surtout, il y a de la place pour de nouveaux circuits Caches Exécution dans le désordre Prédicteurs en tous genres Analyse de dépendances (renommage des registres) Exécution spéculative (branchements, préchargements) Unités de calcul supplémentaires?

Les limites de l «ILP» ILP = Instruction Level Parallelism Mais un flot séquentiel reste une suite d instructions souvent désespérément séquentielles! Pas assez de parallélisme détectable «localement» Les pipelines demeurent sous-utilisés Il serait vain d ajouter encore des pipelines parallèles à moins que?

Les processeurs multicœurs = plusieurs processeurs gravés sur une même puce Puce bi-cœurs avec 4 voies Caches externes parfois partagés Tendance nette chez les constructeurs Intel core 2 Duo, Itanium 2 Montecito, Intel Terascale à 80 cœurs! AMD dual-core Opteron IBM Power5 SUN Niagara

Impact de l évolution des processeurs Puces multicœurs Architecture hiérarchique Topologie complexe Accès non uniformes Retour à l ère des machines CC-NUMA? Grappes de machines multicœurs Pas juste un niveau hiérarchique de plus

Et les machines multiprocesseurs? Elles sont majoritairement «à mémoire commune» Il suffit donc de relier plusieurs processeurs à (au moins) un banc mémoire proc proc proc proc mémoire Architecture à accès mémoire uniforme

Avec des processeurs multicœurs Les échanges entre processus deviennent non uniformes Données, synchronisations mémoire

On peut hiérarchiser davantage Mémoire directement attachée aux puces AMD HyperTransport, Intel QuickPath Interconnect mémoire mémoire mémoire mémoire Architecture à accès mémoire non uniforme (NUMA)

Vers des architectures hiérarchiques complexes Vers des machines de plusieurs centaines de processeurs Tout le monde n est pas directement connecté à tout le monde mémoire mémoire Ex: machine Tera10 du CEA/DAM réseau

Programmation parallèle contemporaine Les machines sont difficile à exploiter Pendant longtemps, l évolution des microprocesseurs a permis d accélérer les calculs sans effort de la part des programmeurs Aujourd hui, le matériel demande des efforts énormes aux programmeurs Qui n y sont pas habitués :-)

Comment exploiter efficacement de telles architectures de manière portable?

Algorithmes, méthodes et environnements pour le calcul intensif ScAlApplix High Performance Computing Applications Algorithms, Specific Libraries 1 2 Runtime System Operating System Hardware 1 : transmettre au support d exécution toutes les informations issues de la connaissance fine des algorithmes 2 : garantir la portabilité des performances en augmentant l expressivité des interfaces RUNTIME

Modélisation de l architecture

Modélisation de l architecture

Notion de bulle pour exprimer des affinités Réification de la structure des applications Partage de données Opérations collectives... 47

Notion de bulle pour exprimer des affinités Réification de la structure des applications Partage de données Opérations collectives... Certaines bulles peuvent être moins élastiques que d autres 48

Exemple d exécution réelle Génération de trace légère pendant l exécution Bibliothèque FxT (Fast User/Kernel Traces) co-développée avec UNH Conversion de la trace en animation flash

Le standard OpenMP Extension de langages permettant de paralléliser des programmes séquentiels Objectif = parallélisation incrémentale + portabilité Directives de compilation (C, C++, Fortran) + routines spécifiques http://www.openmp.org V1.0 en 1997-1998, V2.5 en mai 2005 Plusieurs propositions d extensions NUMA sont candidates pour la version 3.0 Modèle de programmation Type «Fork-Join», parallélisation des blocs et des boucles

Parallélisation des boucles int main() { int i; double m[n]; #pragma omp parallel for for(i=0; i<n; i++) m[i] = f(i); do_something(m); } Le nombre de threads générés par le compilateur est contrôlable En pratique, les utilisateurs le fixent systématiquement

À propos du modèle fork/join Thread maître Exécute le code séquentiel Fork : création de threads esclaves Thread maître Fork Threads esclaves Exécutent la portion parallèle Join : destruction des esclaves et retour du contrôle au maître Threads esclaves Join Le nombre d esclaves peut varier d une région parallèle à l autre Technique bien adaptée à la parallélisation incrémentale d un code Fork Join

Idée : modifier un compilateur OpenMP pour utiliser BubbleSched Supporter davantage de threads que de processeurs Meilleur contrôle du grain, effets de, équilibrage de charge

Mise en œuvre dans GOMP Portage de GNU OpenMP sur les threads Marcel/BubbleSched Compatibilité binaire avec les applications OpenMP existantes Code OpenMP Binaire GNU OpenMP Interface GOMP libgomp Threads GOMP pthreads BubbleSched

Évaluation à l aide d une application irrégulière Reconstruction de surface implicite Objectif : trouver une fonction mathématique approximant la surface d un objet défini par un nuage de points

Principe de l algorithme séquentiel Approximer la surface par des fonctions quadriques «locales»

Principe de l algorithme séquentiel Subdiviser l espace lorsque la précision est insuffisante (ici en 2D)

Parallélisation en OpenMP void Node::compute(){ computeapprox(); if(_error > _max_error){ splitcell(); #pragma omp parallel for for(int i=0; i<8; i++) _children[i]->compute(); } }

Accélération sur 16 cœurs 15 13 11 NPTL nested Marcel nested Affinity 9 7 5 3 1 2 4 8 16

Vers des architectures hétérogènes Utilisation d accélérateurs de type GPU Processeurs SIMD très puissants Nombreuses success stories Intégration on-chip IBM Cell/BE 1 PPU + 8 SPUs Intel Larrabee 48 cœurs avec unités SIMD

Vers des architectures vraiment hétérogènes Modèle de programmation Jeu d instruction spécialisé Modèle d exécution SIMD Mémoire Taille limitée Pas de cohérence par le matériel Transferts de données explicites Doit-on se réjouir? Mixed Large and Small Core

Exploitation des architectures hétérogènes L environnement StarPU CPU+GPU+SPU=*PU Scheduling vs offloading Ordonnancement dynamique de tâches Sur l ensemble des unités de calcul Minimisation des transferts de données A = A+B Mémoire virtuellement partagée hiérarchique Modèles de coûts CPU CPU GPU M. GPU M. B CPU CPU M. BM. CPU CPU CPU CPU SPU SPU SPU SPU SPU SPU A M. AM.

Exploitation des architectures hétérogènes Plateforme d ordonnancement ouverte Excellente efficacité Écart raisonnable avec des codes optimisés manuellement Pas de limitation sur la taille des données Diffusion Plateforme de base du projet européen PEPPHER 800 600 400 200 0 Speed (GFlops) Greed y task model pref etc h data model

Conclusion et perspectives Du pain sur la planche

Conclusion Les constructeurs de microprocesseurs nous donnent du fil à retordre! Gestion du parallélisme (bientôt massif!) reportée au niveau logiciel Puissance soutenue de plus en plus éloignée de la puissance théorique! Les supports exécutifs doivent suivre Gérer efficacement un grand nombre de flots d exécution simultanés Permettre le contrôle de l ordonnancement Inciter le programmeur à exhiber le plus de parallélisme possible Mais le chemin est encore long! Majorité de programmes écrits en Fortran+MPI Imposer un nouveau modèle de programmation, c est long! 62

Et demain? Améliorer l articulation entre compilateurs, supports d exécution et matériel Extraction d informations Collecte d informations Quantification des affinités, schémas de synchronisation Compteurs de performance, accès mémoire/ Maîtriser les évolutions matérielles Architectures multicœurs hétérogènes Architectures dépourvues de cohérence de Accélérateurs spécialisés

Supports d exécution pour les nouvelles générations de machines Évolution inquiétante des architectures Machines «embarrassingly parallel», architectures hétérogènes Importance du savoir-faire «de fond» Principaux défis CPU CPU GPU M. GPU M. CPU CPU M. M. Ordonnancement hiérarchique Directives, affinités, compteurs matériels Communications sur topologies complexes Granularité adaptative CPU CPU Modèles hybrides Compilation et Auto-tuning CPU CPU M. M. X 10 000

Merci! Davantage d information ici : http://runtime.bordeaux.inria.fr http://www.labri.fr/projet/scalapplix/scalapplix.html