Master EGOIST - Rouen
Plan 1 Introduction Parallélisme? Open MPI 2 Historique 3 Pour qui? Pour quoi?
Parallélisme?
C est quoi le parallélisme? Principe regrouper (physiquement ou logiquement) un ensemble de ressources (calcul/stockage) et les faire collaborer/travailler de concert, pour traiter des données
Pourquoi faire? Objectif : calculer, traiter les données... plus vite, plus gros et différemment Modéliser et simuler. Effectuer de gros calculs numériques. Vérifier/valider des modèles. Traiter d énormes quantités de données.
Comment s y prendre? Principe analyser le travail à effectuer, connaître et analyser les ressources disponibles et les données nécessaires, diviser le travail en tâches, répartir les tâches entre les ressources de manière adéquate en fonction des dépendances entre les tâches et des données. nous y reviendrons plus tard...
Anatomie d une architecture parallèle des ressources de stockages des ressources de calcul un réseau d interconnexion = outils de communication par le réseau
En pratique Exécution distante ssh configuration de l environnement test d une exécution distante ssh-keygen -t rsa (pas de passphrase) clef publique authorized_keys connexion sur chaque machine du LAN test d une exécution distante (édition d un programme C, compilation et exécution distante)
Collaboration? l exécution à distance ne permet pas directement la collaboration collaboration communication entre processus Communications inter-processus par la mémoire (segments de mémoire partagé sur une seule machine) par échange de messages (socket entre machines distantes) n processus au moins n(n 1)/2 sockets!! outils logiciels pour faciliter cette tâche PVM puis MPI
Open MPI
Open MPI Installation récupération de l archive sur litis.univ-lehavre.fr/ guinand/enseignement/bioinformatiqueparallele ouverture installation :./configure prefix /vers/repertoire/installation (dans votre ${HOME} c est bien) make all (sudo) make install (en fonction du répertoire d installation) modification des variables d environnement (modification.bashrc pour $PATH et $LD_LIBRARY_PATH) vérification : mpicc et mpirun
Open MPI Test exécution en local édition + compilation + exécution premier programme en C #include<stdio.h> #include<mpi.h> int main(int argc,char **argv) { MPI_Init(NULL,NULL) printf( bonjour la compagnie!! \n ) ; MPI_Finalize() }
Open MPI Compilation + exécution en local mpicc monprog.c -o monprog mpirun monprog mpirun -np 4 monprog comment identifier les différents processus?
Open MPI Rang de processus... Pour que chaque processus connaisse son environnement d exécution, il lui faut son identifiant et le nombre de processus qui exécutent le même programme que lui. Les primitives MPI_Comm_rank() et MPI_Comm_size() jouent ce rôle. int moi,lesautres ; MPI_Init(NULL,NULL) MPI_Comm_rank(MPI_COMM_WORLD,&moi) ; MPI_Comm_size(MPI_COMM_WORLD,&lesautres) ; printf( Salut, je suis %d et il y a %d processus impliqués!!,moi,les MPI_Finalize()
Open MPI Où en sommes-nous? Exécution en local de plusieurs processus qui exécutent le même code. Toujours pas de communication entre les processus.
Open MPI Exécution sur plusieurs machines Environnement est prêt (ssh...) Il faut indiquer à mpirun les machines qui font partie de l architecture parallèle : fichier qui contient les noms des machines exécution par mpirun -hostfile lesmachines -np 10 monprog format complet moi@193.56.23.187 :10 edgar@morin :30 cloporte :2 pc-de-louise.fr :4 format simple fourmi araignee mouche abeille
Open MPI Exécution sur plusieurs machines Comment identifier les machines? int lgnom; char nommachine[mpi_max_processor_name]; MPI_Get_processor_name(nomMachine,&lgNom);
Open MPI Exécution sur plusieurs machines Attention!! Lorsque les environnements sont différents (login, chemins vers les exécutables, etc.) l environnement doit être correctement paramétré sinon Open MPI ne trouve pas les exécutables. C est l une des principales sources de dysfonctionnement.
Open MPI Où en sommes-nous? Exécution en local de plusieurs processus qui exécutent le même code Ok! Toujours pas de communication entre les processus.
Open MPI Communications entre processus Pour que chaque processus puisse communiquer avec les autres il faut qu il puisse à la fois envoyer et recevoir des messages. Les primitives MPI_Send(), MPI_Recv() et MPI_Bcast() jouent ce rôle. MPI_Send() et MPI_Recv() permettent des communications deux-à-deux. MPI_Bcast() permet de communiquer une information globalement à l ensemble des processus.
Open MPI MPI_Send(arg1,arg2,arg3,arg4,arg5,arg6) MPI_Recv(arg1,arg2,arg3,arg4,arg5,arg6,arg7) arg1 : pointeur vers le buffer d envoi ou de reception selon la primitive arg2 : nombre d éléments dans le buffer arg3 : type des éléments dans le buffer arg4 : le destinataire pour un envoi et l émetteur pour une réception. arg5 : étiquette du message. Cette étiquette permet de différentier deux envois de messages ayant le même émetteur et le même recepteur. arg6 : communicator (groupe de tâches avec leur contexte). Par défaut nous utiliserons MPI_COMM_WORLD (i.e. tous les processus). arg7 : permet de connaître divers détails concernant le message : tag, source. Utile si la primitive est réglée pour recevoir tous les messages depuis toutes les sources (MPI_ANY_TAG, MPI_ANY_SOURCE) on peut alors connaître l émetteur et l étiquette après reception, sans bloquer au moment de la reception.
Open MPI Un petit exemple envoi d un entier (data) depuis le processus courant vers le processus de rang k : MPI_Send(&data,1,MPI_INT,k,1,MPI_COMM_WORLD); reception de ce message : MPI_Recv(&datareception,1,MPI_INT,MPI_ANY_SOURCE, 1,MPI_COMM_WORLD,MPI_STATUS_IGNORE);
Open MPI Attention Les communications sont une source importante de problèmes d interblocage processus p processus k...... MPI_Recv(&data,1,MPI_INT,k,...) MPI_Recv(&truc,1,MPI_CHAR,p,...)...... MPI_Send(&machin,1,MPI_CHAR,k,...) MPI_Send(&chose,1,MPI_INT,p,...)......
Open MPI Anneau On souhaite organiser un ensemble de processus de telle sorte qu ils forment un anneau logique. Faites générer un entier aléatoire par chaque processus et faites circuler ces entiers selon la topologie de l anneau. Traitement pipeline On souhaite organiser un ensemble de 4 processus de telle sorte qu ils forment une chaîne de traitement pipeline. Faites générer un entier aléatoire par chaque processus et faites lui subir 4 traitements différens par les 4 processus (on différencie les processus par leur rang).
Open MPI La diffusion MPI_Bcast(arg1,arg2,arg3,arg4,arg5) Un processus envoie la donnée et tous les autres la receptionne. arg1 : pointeur vers le buffer d envoi ou de reception selon le processus arg2 : nombre d éléments dans le buffer arg3 : type des éléments dans le buffer arg4 : émetteur de la diffusion. arg5 : communicator (groupe de tâches avec leur contexte). Par défaut nous utiliserons MPI_COMM_WORLD (i.e. tous les processus).
Open MPI Un petit exemple diffusion d un entier (data) depuis le processus de rang 0 : MPI_Bcast(&data,1,MPI_INT,0,MPI_COMM_WORLD); tous les processus doivent exécuter MPI_Bcast() pour que le broadcast fonctionne.
Open MPI Optimisation parallèle On souhaite faire collaborer k processus pour déterminer un meilleur résultat (par exemple pour un problème d optimisation). Chaque processus effectue 10 tentatives de résolution, puis envoie aux autres son meilleur résultat. Fonction à optimiser : trouver le plus grand entier, fonction à disposition : générateur aléatoire d entiers.
Historique
Historique 1950 1970 : les pionniers 1970 1990 : explosion des architectures 1990 2000 : extinction massive 2000 2010 : l ère des géants 2010 : les hybrides
Les pionniers (1950s-70s) Difficulté première, la mise en oeuvre du matériel. Challenge : augmenter le ratio fonctionnement/maintenance. ILLIAC IV : quelques heures de calcul/quelques semaines de maintenance. Les premiers grands noms du parallélisme apparaissent et avec eux, les premiers grands principes : vectorisation, techniques de pipeline, temps partagé, multiprogrammation... Amdahl : IBM 701, 704, 709. Seymour Cray : Control Data Corporation.
Les machines CDC6600 (1964) : unités de calcul en parallèle, 10MHz, 2Mo, 9 MFlops CDC7600 (1969) : équivalent à 10 CDC6600 : 40 MFlops
Ces années-là transistor sur base de silicium (Texas Instrument - 1955) premier disque dur (1957) premier compilateur fortran (1957) algol (1958-60 - 68). Algorithmic language - récursivité. Voici un langage très en avance de son temps, il n a pas seulement été une amélioration de ses prédécesseurs mais aussi une amélioration de presque tous ses successeurs. Bull : Gamma 60. Première machine multiprocesseurs française. interface RS-232 (1966) technologie CMOS (Texas Instrument - 1967) ARPANET (ancêtre d Internet - 1969) Unix (1970)
Le temps de l exubérance (1970s-80s) Premiers succès commerciaux. Apparition de multiples constructeurs : Thinking Machine Corporation ( ), Sequent ( ), Telmat ( ), Archipel ( ), Parsytec ( ), Kendall Square Research ( ), Meiko ( ), BBN ( ), Digital ( ), IBM, Intel, CRAY ( ), MasPar ( ), Silicon Graphics ( ), Sun, Fujitsu, Nec. Offre importante et exotique : Connection Machine 1 : hypercube de 65535 processeurs. Problèmes majeurs : l offre logicielle et le prix. étape suivante : machines abordables et utilisables.
Les machines Cray-1 (1975), Cray X-MP (1982) : 2 à 4 processeurs, Cray-2 (1983) : 8 processeurs, Cray Y-MP (1989). Hitachi S-810/820. Fujitsu VP200/VP400. Convex C-1. Nec SX-1/2. Connection Machine 1. 65536 processeurs. Topologie : hypercube. Intel ipsc/1 128 processeurs. Topologie : grille.
Les machines Illiac IV (Burrough - 1973 CRAY-1. 1975. 80 MHz, 8 Mo, 160 MFlops
Les machines
Ces années-là Langage pascal (Wirth - 1972) Ray-Tomlinson : premier email (1972) 10000 composants sur 1 cm 2 (1975). premier réseau local : Datapoint système ARC (1976). fibre optique (1977). Support d Ethernet par les principaux constructeurs (1979). Paterson - Hennessy : concept des processeurs RISC (1980) Tim Berners-Lee : projet World Wide Web au CERN (1989).
Environnements (1990s) Difficultés bien identifiées : routage, ordonnancement... parallélisme automatique très limité conception d outils d aide à la parallélisation : Hypertool, Pyrros, ParaRex, Adam, Apache... Autre problème : ratio prix/durée de vie d une machine parallèle extrêmement élevé. solution apportée par PVM : utiliser des réseaux locaux de stations de travail pour faire du calcul parallèle. Constructeurs machines parallèles réseaux de stations de travail intégrés.
Les machines Nec SX-3 (1991). Fujitsu VP-2600 (1991). CM-5 (1992). Topologie : fat-tree. Cray T3D (1993). Jusqu à 512 processeurs. Topologie : tore 3D. ASCI Red, et Blue (1997-1999).
Les machines
Ces années-là Microsoft Windows 3.0 (1990), Windows 95, Windows 98 PVM (1991). premier site web au CERN (1991) Altavista (premier moteur de recherche) 15 millions de pages web (1995) création de Linux par Linus Torvald création de Yahoo! (1995) annonce officielle de java (1995) Netscape à partir de NCSA Mosaic (1994). IBM Deep Blue bat Gary Kasparov (1997) mise en ligne du moteur google (1997) premier GPU (Nvidia GeForce 256) (1999) passage à l euro
L ère des Géants : les Grilles Depuis les milieu des années 90. Constat : les matériels sont la plupart du temps peu et sous-utilisés. Idée : utiliser ces matériels dont le nombre est énorme, Principe : des milliards de calculs indépendants effectués sur les PCs de volontaires. Précurseur : le projet Seti@Home
L ère des Géants : les Grilles Grilles de calcul. meta-computing. Principe de base : offrir un service tel qu il est offert par les producteurs d énergie : Electric Power Grid Computational Grid Objectif : brancher le cable réseau du PC pour utiliser de la puissance de calcul comme on branche une prise de courant pour utiliser de l électricité. Grille de calcul = capacités de calcul + capacités de stockage + disponibilité + interactions
L ère des Géants : les Grilles Eléments fondamentaux : partage de ressources (calcul + stockage) existence d un réseau d interconnexion mondial (Internet) calcul distribué/parallèle Contraintes : confidentialité : accès sécurisé gestion : partage de ressources performance : équilibrage de charge
L ère des Géants : les Grilles Grille Ressources de calcul et de stockage Réseaux Applications Intergiciel : coordination de l ensemble : authentification et confidentialité, stockage, répartition de charge, maintenance, etc. Cloud Computing évolution du grid computing portail unique Google, Amazon, IBM Blue Cloud, Intel+HP+Yahoo, etc.
L ère des Géants : les Grappes Depuis les milieu des années 90. Idée des grilles de calcul intéressante mais... Constat : les communications pénalisent une bonne utilisation. Remède : construire des réseaux locaux de grandes dimensions. Grappes de machines (clusters of machines).
L ère des Géants : les machines 1 BlueGene/L. IBM. US. 280 TFlops. 131072 processeurs. 2 Red Storm. Cray Inc. US. 101 TFlops. 26544 processeurs. 3 Blue Gene. IBM. US. 91 TFlops. 40960 processeurs. 4 ASC Purple. IBM. US. 91 TFlops. 75 TFlops. 12208 processeurs. 5 BladeCenter. IBM. Espagne. 62 TFlops. 10240 processeurs. 6 Thunderbird. Dell. US. 53 TFlops. 9024 processeurs. 7 Tera-10. Bull SA. CEA France. 52 TFlops. 9952 processeurs.
L ère des Géants : les machines
Les hybrides Depuis le milieu des années 2000. Constat : le parallélisme a été bien maîtrisé, passons à l intégration à grande échelle Idée : intégré le parallélisme au sein des unités de calcul (processeurs multicores) et graphiques (GPU et GPGPU) Extension : construisons des environnements parallèles qui utilisent ces technologies
Les machines
Puissance 2007 1 BlueGene/L. IBM. US. 280 TFlops. 131072 processeurs. 2 Red Storm. Cray Inc. US. 101 TFlops. 26544 processeurs. 3 Blue Gene. IBM. US. 91 TFlops. 40960 processeurs. 4 ASC Purple. IBM. US. 91 TFlops. 75 TFlops. 12208 processeurs. 5 BladeCenter. IBM. Espagne. 62 TFlops. 10240 processeurs. 6 Thunderbird. Dell. US. 53 TFlops. 9024 processeurs. 7 Tera-10. Bull SA. CEA France. 52 TFlops. 9952 processeurs.
Puissance 2008 1 Roadrunner IBM. Los Alamos DOE US. 1105 TFlops. 129600 processeurs. Nucléaire, armement, sécurité. 2 Jaguar Cray Inc. DOE US. 1059 TFlops. 150152 processeurs. 3 Pléïades SGI. NASA US. 487 TFlops. 51200 processeurs. 4 BlueGene/L. IBM. US. 478 TFlops. 212992 processeurs. 5 (9) Red Storm. Cray Inc. US. 204 TFlops. 38208 processeurs. 6 (14) Jade SGI CINES FRANCE 128 TFlops. 12288 processeurs. 7 (54) Tera-10. Bull SA. CEA France. 52 TFlops. 9952 processeurs.
Puissance 2012 1 K Computer Fujitsu (Japon). 10.5 PFlops. Sparc64. 705024 cores. Linux 2 Tianhe 1A NUDT (Chine). 2.5 PFlops. Xeon+NVidia. 186368 cores. Linux 3 Jaguar CRAY XT5 (USA). 1.75 PFlops. AMD Opteron. 224161 cores. Linux 4 Nebulae Dawning TC3600 (Chine). 1.27 PFlops. Xeon+NVidia. 120640 cores. Linux 5 Tsubame (NEC/HP). 1.2 PFlops. Xeon+NVidia. 73278 cores. Linux
Les systèmes Système % (2007) % (2011) Linux 75 91.4 Unix 15 6 Mixed 6.40 2.2 BSD Based 3 0.2 Mac OS 0.60 0 Windows 0 0.2
Bilan? Toujours plus l augmentation de puissance ne connait pas de répit machines parallèles processeurs et GPU machines parallèles nombre de coeurs explose mobilité augmente : le terminal devient une interface mais... consommation électrique de plus en plus importante confidentialité/données personnelles : enjeu critique
Pour qui? Pour quoi?
informatique : outils de traitement de l information + science des modèles computables
Qui utilise le parallélisme? milieux de la recherche académique et industrielle milieux économiques et industriels, industrie pharmaceutique, automobile, bâtiment et habitat, transport et logistique, banque et marchés financiers, assurance, aéronautique, secteur agroalimentaire, secteur médical, cinéma, etc. société civile, services publics vous!
Milieux de la recherche et du développement Infrastructure à plusieurs niveaux : internationale : Globus, BOINC (Berkeley Open Infrastructure for Network Computing), etc. nationale : centre de calcul CINES, IDRIS, CEA, etc. régionale : CALMIP, CICG, CRIHAN, etc. locale : laboratoires, réseaux de stations, grappes de PCs (clusters) Applications : physique nucléaire, mécanique céleste, biologie moléculaire, chimie de synthèse, mathématiques, informatique, télécommunications, histoire, géographie, sociologie...
Physique des particules Large Hadron Collider principe : générer des collisions entre particules (événements) enregistrer puis traiter ces informations, volumes extraordinaires : 15 Petaoctets par an, utilisation de 10000 machines réparties dans la monde entier
Industrie aéronautique et spatiale vérification des procédures de fonctionnement (Ariane), étude des turbulences, calculs de profils d ailes, modélisation du bruit, etc. Onera : image des interactions entre les tourbillons en bout d aile et les turbulences résultant de la propulsion. NEC SX5 et SX6. LLNL (Lawrence Livermore) : modélisation du bruit généré par les moteurs d un avion à réaction. 1 000 000 de coeurs.
Industrie aéronautique et spatiale Airbus (POD 300 TFlops) NASA Earth Exchange (Global Earth Science) données satellite LandSat
Industrie automobile crash-tests virtuels chez un constructeur automobile :
Industrie automobile Principe : définition des caractéristiques mécaniques du véhicule modélisation en 3D (maillage) modélisation mathématique/mécanique des processus de déformation simulation de la dynamique de déformation des éléments
Industrie automobile
Industrie pétrolière conception d outils de forage pour l industrie pétrolière et minière : l outil (trépan carottier) doit répondre au mieux aux exigences des compagnies pétrolières. code de simulation hydraulique parallèle réduit la durée de simulation de 20 à 7 jours et augmente la vitesse d avancement des outils étudiés (d environ 40 %).
Industrie pétrolière Identification des réserves souterraines de pétrole et de gaz. Modèles analytiques et numériques permettant la visualisation 3D de formations géologiques souterraines. Résolution visuelle augmentée d un facteur 10 par rapport à l existant. 110 592 coeurs (Intel Xeon E5-2670), Pangea affiche 2.3 PFlops vidéo
Secteur du bâtiment, de l habitat vente par internet : conception/aménagement en ligne et visualisation de décors 3D principe : le calcul est déporté sur un environnement parallèle et le résultat sous forme d image est renvoyé au client
Industrie du jeu et secteur des loisirs Production d images de synthèse pour films et jeux vidéos. 1993 : premières images de synthèse intégrées dans des vues réelles (Jurassic Park) 1995 : Toy Story premier film entièrement en images de synthèse.
Industrie du jeu et secteur des loisirs District 9 Imagine Engine Design Inc. de Vancouver, Canada, a géré les effets spéciaux de District 9, qui intègre une course d extraterrestres dans un documentaire naturaliste qui se déroule à Johannesbourg, en Afrique du Sud. La société a déployé près de 100 cartes graphiques professionnelles NVIDIA Quadro dans ses stations Linux pour produire chaque plan d extraterrestre du film. [www.nvidia.com]
Services publics : énergies gestion et production d énergie : EDF : gestion du réseau, fonctionnement de certains éléments des centrales nucléaires... prévisions météorologiques :
Services publics : Météo France Modèle opérationnel Arpège (1998), nombre de variables à traiter est Nv = 2,3.10 7 quatre variables à trois dimensions x 31 niveaux x 600 x 300 points sur l horizontale et une variable à deux dimensions x 600 x 300 points sur l horizontale, le nombre de calculs à effectuer pour une variable est Nc = 7.103 le nombre de pas de temps pour réaliser une prévision à 24 heures d échéance est Nt = 96 (pas de temps de 15 minutes).
Météo France Les calculs étant effectués sur l ordinateur Fujitsu VPP700 crédité d une vitesse de calcul R atteignant 20 gigaflops (20 milliards d opérations flottantes par seconde) le temps T nécessaire pour obtenir une prévision à 24 heures d échéance est un peu inférieur à un quart d heure.
Météo France Météo-France a acheté en 2008 un NEC SX-8R qui délivre une puissance crête de 35.2 Tflops.
Météo France Calculer plus vite : en théorie, le même calcul : 1 seconde Calculer plus gros : nouveau modèle Arome passage d une maille de 10km à une maille de 2.5 km Calculer différemment : possibilité de calculer des événements plus localisés et ponctuels : pluies torrentielles, orages violents, brouillard, etc. [http ://www.generation-nt.com/supercalculateur-meteo-france-actualite-41587.html]
Météo/Climat Modéliser l intersection climat/météo (6= échelles de temps) Intégrer les phénomènes El Niño, MJO. Katrina Humidité atmosphérique
Météo/Climat NCAR Yellowstone IBM idataplex 72288 NOAA/ORNL Gaea C2 Cray XE6 77824 NOAA Zeus SGI Altix 27600 NOAA/ORNL Gaea C1 Cray XE6 41984 UKMO Power 775 IBM 18432 UKMO Power 775 IBM 15360 KMA Haeon Cray XE6 45120 KMA Haedam Cray XE6 45120 NCAR : National Center for Atmospheric Research NOAA : National Oceanic and Atmospheric Administration UKMO : United Kingdom Meteorological Office KMA : Korea Meteorological Administration
Société civile : aménagement du territoire simulation pour réaménagement d un centre ville, construction d une ligne de tramway
Vous? Au coeur de vos ordinateurs : pour le calcul : utilisation de processeurs dits multi-coeurs : multicore (x10) pour la visuation : en plus du CPU, les ordinateurs sont équipés de GPU Graphics Processing Unit : manycores (x100), de véritables machines parallèles sur un circuit
à suivre... le parallélisme au service de la biologie méthode de parallélisation d applications métriques et mesures de performances