Informatique parallèle hautes performances

Slides:



Advertisements
Présentations similaires
L’INFORMATIQUE Mihalcea Cezar.
Advertisements

Architecture de machines Le microprocesseur
© Copyright 2007 Arumtec. All rights reserved. Présentation Etude déligibilité
Matériels Composants physiques de l’ordinateur.
Présentation de la société, des logiciels et des services
Systèmes, algorithmes et applications: Efficacité du parallélisme. Gaétan Hains LIFO, Université d'Orléans Janvier 2001.
A NETWORK-AWARE DISTRIBUTED STORAGE CACHE FOR DATA INTENSIVE ENVIRONMENTS Brian L. TIERNEY, Jason LEE, Brian CROWLEY, Mason HOLDING Computing Sciences.
Architecture des ordinateurs
Master de recherche informatique Université de Montpellier 2
LIRMM 1 Journée Deuxièmes années Département Microélectronique LIRMM.
Apprentissage de représentation et auto-organisation modulaire pour un agent autonome Bruno Scherrer 6 janvier 2003 Directeurs : F. Alexandre, F. Charpillet.
Reverse engineering materiel SSTIC 2004 Rump sessions
Objectif de l’exposé.
Base de données procédés Bibliothèque d’éléments paramétrés
2.Les différentes architectures (Louis)
L’optimisation par essaims De particules
Sélection automatique d’index et de vues matérialisées
ISAT IS FORMATION EN AUTOMATION 1 / 13 SECTION AUTOMATIQUE 1 / 6.
ARCHITECTURE DES ORDINATEURS
Architecture d’un ordinateur
Département informatique Automne 2013
Architecture de grille générique, multi-
Architectures et systèmes à microprocesseurs – ELEC288
Chaire UNESCO - Calcul numérique intensif
Architecture des Ordinateurs
Introduction Objectifs du cours Évaluation Références
1 Grille de calcul et physique des particules Vincent Garonne CPPM, Marseille Novembre 2003 Contenu de la présentation Etat de lart : Grille de calcul.
Introduction IFT6800 Jian-Yun Nie.
1 IFT 6800 Atelier en Technologies dinformation Chapitre 1 Introduction.
Module 3 : Analyse des performances du serveur
Chap. 2 - Structure d’un ordinateur
Initiation aux bases de données et à la programmation événementielle
Introduction IFT6800 – E2008 Pierre Poulin.
L’adaptativité pour un solveur de l’équation de Vlasov
Plate-forme MIRAGE Méso-Informatique Répartie pour des Applications en Géophysique et Environnement.
Cours de Systèmes d’exploitations
Les ouvertures au CC Pascal Calvat. Plan 2 Présentation des ouvertures Les besoins des utilisateurs Les solutions apportées par le CCIN2P3 Les ouvertures.
 Dispositifs d’Entrée - Input - Enter Data  Dispositifs de Traitement - Process – Manipulate Data  Dispositifs de Stockage - Storage – Store Data 
D. E ZEGOUR Institut National d ’Informatique
PROJET CAPS Compilation, Architecture, Parallélisme et Système.
INFOR 101 Chapitre 5 Marianne Morris.
Architecture matérielle Qu’est ce qu’un ordinateur ?
Introduction aux solutions Microsoft pour le HPC.
L'unité centrale est composé en générale de :
1 Initiation aux bases de données et à la programmation événementielle Responsable : Souheib BAARIR. (le sujet de votre .
Réalisé par : Ouersighni Marouen
PROJET CAPS Compilation, Architecture, Processeurs Superscalaires et Spécialisées.
Equipe HomECOntrol.  Documents de référence  Mission du produit  Exigences fonctionnelles  Hardware  Software  Exigences opérationnelles  Interfaces.
PROJET CAPS Compilation, Architecture, Processeurs Superscalaires et Spécialisées.
PROJET CAPS Compilation, Architecture, Parallélisme et Système.
Simulateur de microcontrôleur Intel 80C51
Architecture et technologie des ordinateurs II
Solution Virtualisation Full 12Go Vous avez un projet de migration de serveurs physiques vers des machines virtuelles Cyceo Informatique vous propose une.
Intégration des Tableaux Multidimensionnels en Pig pour
Les fermes de PCs au Centre de Calcul de l’IN2P3 Journée « ferme de PCs » 27 juin 2000 Benoit Delaunay
Journées Monitoring Grille
Développement d’un application: Suivi de flux RSS SLAKMON Benjamin.
Architecture et technologie des ordinateurs II
1.1: notions de bases de l’informatique
Raison d'être de la structure de fichiers : Les premiers travaux : Début des années 1960 : En 1963 : Près de 10 ans plus tard... (à peu près 1973) : Durant.
la reconnaissance de visages
Eléments d'architecture d’un ordinateur
Les mémoires la préparation de: chaimaa hamdou.
PetaSky: Expérimentations avec HadoopDB et Hive 1 Amin Mesmoudi.
Journées informatique IN2P3/Dapnia, Lyon Septembre 2006 Consolidation des serveurs par virtualisation Retour d’expérience sur l’utilisation de VMware.
GdR MoMaS Novembre 2003 Conditions d’interface optimales algébriques pour la vibro-élasticité. François-Xavier Roux (ONERA) Laurent Sériès (ONERA) Yacine.
Entretiens Louis le Grand 29 et 30 août Entretiens Louis le Grand – 29 et 30 Août 2005 Étude de cas CS  Jacques DUYSENS (CS Communication & Systèmes)
BABAR Georges Vasseur CEA Saclay, DSM/IRFU/SPP Workshop sur l’analyse des données au centre de calcul de Lyon 17 avril 2008.
Visual Information Solutions Multithreading. Visual Information Solutions Qu’est-ce que le multithreading ? Un thread est une partie des instructions.
Systèmes à microprocesseur Les mémoires
Transcription de la présentation:

Informatique parallèle hautes performances Présentation à l’université de Franche-Comté 19 novembre 2003

Plan de la présentation bruno.richard@computer.org Introduction Le matériel Programmation parallèle Expérience TOP500 L’architecture I-Cluster

Les segments de marché Conception mécanique Science des matériaux bruno.richard@computer.org Conception mécanique Science des matériaux Défense et sécurité Conception microélectronique Géo-sciences Sciences de la vie Visualisation

Besoins du calcul parallèle bruno.richard@computer.org 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

Différents domaines applicatifs bruno.richard@computer.org 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é

Plan de la présentation bruno.richard@computer.org Introduction Le matériel Programmation parallèle Expérience TOP500 L’architecture I-Cluster

Composants Matériel Temps d’accès différents Logiciel RAM CPU Cache IO bruno.richard@computer.org Matériel RAM CPU ALU Registres Pipeline, VLIW, out-of-order Cache IO Réseau Cartes faible latence Routage Stockage Temps d’accès différents registre << cache << ram << réseau << disque Coût inversement proportionnel au temps d’accès Logiciel Middleware Système d’exploitation Coordination Ordonnancement de travaux Librairies Passage de messages Algèbre linéaire Compilateurs Hints

Architectures Vectoriel SMP Cluster de calcul Constellation Grille bruno.richard@computer.org Vectoriel SMP Cluster de calcul Constellation Grille Métaordinateurs Retour vers le futur Les infrastructures du passé reviennent Ex.: Web, LDAP

Types d’architectures selon Flynn bruno.richard@computer.org Flot de données Unique Multiple Flot d’instructions SISD (Von Neumann) SIMD (Vectoriel) MISD (Systolic) MIMD Classification de Flynn Un peu désuète (sixties) Ne reflète pas l’architecture mémoire MIMD-SM (Shared Memory) MIMD-DM (Distributed Memory) SPMD (Single Program Multiple Data) est un cas courant (cf. MPI)

Symmetric Multiprocessing (SMP) bruno.richard@computer.org 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 Cache Mémoire CPU 1 CPU 2

SMP avec Crossbar p1 p2 p3 p4 m1 m2 m3 m4 p5 p6 p7 p8 m5 m6 m7 m8 bruno.richard@computer.org 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ù n=p) Composé de multiplexeurs 2x2 p1 p2 p3 p4 m1 m2 m3 m4 p5 p6 p7 p8 m5 m6 m7 m8

Cluster Définition : Mémoire distribuée Coût faible bruno.richard@computer.org 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 Réseau Proc 1 Proc 2 Proc 3 Mem. 1 Mem. 2 Mem. 3

Réseaux faible latence bruno.richard@computer.org 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é 1 2 3 4 1 2 3 4

Technologies d’interconnexion bruno.richard@computer.org Technologie Débit [Mo/s] Latence [us] Remarques Gigabit Ethernet 125 60 à 90 Lenteur de la pile TCP-IP Myrinet 2000 250 3 à 10 PCI 64 bits 66 MHz SCI D330 666 1,5 Topologie en anneau

Grilles (GRID) bruno.richard@computer.org 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 d’un fichier vers 5000 machines = gros problèmes en vue… Problèmes algorithmiques Couplage de Composants

Stockage hautes performances bruno.richard@computer.org 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

Parlons d’argent… bruno.richard@computer.org La vitesse des processeurs dépend du carré de leur coût Speed = Cost2 L’accé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 d’infrastructure La tentation des clusters est grande Le choix n’est 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é

Plan de la présentation bruno.richard@computer.org Introduction Le matériel Programmation parallèle Expérience TOP500 L’architecture I-Cluster

Complexité Il faut caractériser les algorithmes Complexité bruno.richard@computer.org Il faut caractériser les algorithmes Complexité En nombre d’instructions En nombre d’emplacements mémoire En nombre de messages à échanger Ordre des algorithmes Fonctions O (coût réel), Ω (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

Taille de grain Tâche i-l Tâche i Tâche i+l + x Grain Gros Grain moyen (niveau d’une tâche) Programme Grain moyen (niveau contrôle) Fonction Grain fin (niveau données) Boucle Grain très fin (multiples niveaux) Hardware bruno.richard@computer.org Tâche i-l Tâche i Tâche i+l func1 ( ) { .... } func2 ( ) { .... } func3 ( ) { .... } a (0) = .. b (0) = .. a (1) = .. b (1) = .. a (2) = .. b (2) = .. + x Load

Exemple : Multiplication de matrices carrées (séquentielle) bruno.richard@computer.org Soient A=[aij], B=[bij], C=[cij] , 1≤i≤n, 1≤j≤n On veut calculer C = A x B cik=Σj=1..naij.bjk, 1≤i≤n, 1≤k≤n Complexité de calcul Ceci nécessite, pour chaque cik : n multiplications n additions n.n cik , donc n2 éléments, d’où 2n3 opérations L’ordre 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)

Multiplication plus efficace bruno.richard@computer.org 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 cik=Σj=1..naij.bjk m≤i≤m+I, p≤k≤p+J Mémoire nécessaire par bloc : I.n + J.n + I.J Au lieu de 3.162=768, on a 2.16 + 2.16 + 2.2 = 68 seulement Problème identique : Out of core B A C Ex.: n=16, I=J=2

Multiplication parallèle bruno.richard@computer.org p processeurs pour calculer Calcul par sous-blocs n/p sous-blocs calculés par processeur Mais : Chacun doit d’abord 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() ?

OpenMP Open Multi Processing Standard industriel de 1997 bruno.richard@computer.org 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-nœuds Parallélisme de données ou de processus

Le passage de messages MPI (Message Passing Interface) bruno.richard@computer.org 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

Recouvrement calcul-communication bruno.richard@computer.org Objectif : efficacité Lors d’une 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)

Problèmes liés au parallélisme bruno.richard@computer.org 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 d’un coordinateur (leader) Réplication Cohérence Mise au point répartie Bugs Performance Connaissance du métier de l’application

Précédence causale Relation happens-before (précède) bruno.richard@computer.org Relation happens-before (précède) Élément essentiel en informatique distribuée Asynchronisme du monde réel => race conditions Illustre bien qu’en informatique distribuée, les choses simples deviennent plus complexes… ei précède ej (ei < 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 d’un message tandis que ej est la réception de ce même message Il existe k tel que ei < ek et ek < ej Exemples…

Horloges logiques bruno.richard@computer.org Horloge logique : e < e’ => LC(e) < LC (e’) quels que soient e et e’ Horloge logique de Lamport Chaque nœud Pi détient un compteur Ti Lors d’un évènement local Ti est incrémenté Lors d’un envoi par Pi, Ti est incrémenté et transmis avec le message Lors d’une 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) < LC (e’) => e < e’ Exemple : 1 2 P1 1 3 4 P2 1 9 P3 1 2 3 4 5 6 7 8 P4

Ordonnancement Objectif : Optimisation des ressources bruno.richard@computer.org Objectif : Optimisation des ressources Lancer n tâches sur p processeurs Notion de graphe de flot d’exécution (ex.: POVray) Comment utiliser les processeurs inactifs ? Différentes politiques Temps global d’exécution (makespan) Charge de calcul Tâches prioritaires Allocation dynamique (online) ou statique (off-line) L’allocation statique nécessite un graphe de flot connu Problème NP-complet On a recours à des heuristiques Beaucoup de recherche

Plan de la présentation bruno.richard@computer.org Introduction Le matériel Programmation parallèle Expérience TOP500 L’architecture I-Cluster

Les 500 ordinateurs les plus puissants bruno.richard@computer.org Classement ouvert à tous Publication tous les 6 mois Objectif : le plus grand nombre possible d’instructions par seconde Inversion d’une 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

Infrastructure d’évaluation bruno.richard@computer.org Partenariat HP Labs, IMAG-ID, INRIA 225 HP e-Vectra: Pentium® III 733 MHz 256 MB Standard Ethernet (100 MBps)

Mise en place du programme bruno.richard@computer.org Coordination entre 225 machines Pas facile Il ne faut pas ralentir par excès de communication Chaque élément n’est 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

Résultats Premier cluster de grande consommation au TOP500 bruno.richard@computer.org Premier cluster de grande consommation au TOP500 385ème Superordinateur au monde, 15ème en France 81,6 Gflop/s en mai 2001

Leçons clés La latence réseau est critique Homogénéité des machines bruno.richard@computer.org La latence réseau est critique On attend autant qu’on calcule Homogénéité des machines Sinon l’algorithmique est trop difficile

Questions ?

Problème : Comment programmer le fonctionnement des pompiers ? Exemple didactique bruno.richard@computer.org Un incendie Un robinet Des robots-pompiers R[i], 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 R[j] Déverser pour verser le seau sur l’incendie 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 ?

Quel algorithme Solution 1 : Robots autonomes (SIMD) bruno.richard@computer.org 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