Couplage de Codes Cours IS 342
Transcription
Couplage de Codes Cours IS 342
Plan n Introduction n n Couplage de Codes Cours IS 342 n La problématique du couplage n Olivier Coulaud Motivation Quelques exemples n n Type de couplage Différentes stratégies Quelques problèmes [email protected] 11/12/2013 Plan n n n Simulation ? Approche Parallèle : PVM, MPI, PACX-MPI, PVMPI, PLUS Approche Grille : Globus, Legion, MPICH-G Approche Distribuée n n L'objectif est d'étudier un phénomène physique écoulement, propriétés des matériaux/ molécules, balistique, … Différentes étapes Objets Distribués : CORBA, PaCO++ Composants : CCM, CCA 1. 2. n n n n n 11/12/2013 2. Approche multi échelles n Modéliser le phénomène en équations Discrétiser les équations : nombre d'inconnues 1. Quelques exemples : n 2 Quelques rappels sur la simulation Aspects informatiques n IS342 - Couplage de Codes Grille, triangulation, points Schéma explicite ou implicite (résolution d'un système) Écrire un schéma/algorithme pour résoudre le système discret Écrire le programme (mpi, openmp, threads, …) 5. Valider le programme, puis le modèle physique 3. PUPIL Libmultiscale SIMBIO 4. EPSN Climatologie IS342 - Couplage de Codes 3 11/12/2013 IS342 - Couplage de Codes 4 1 Motivation Pourquoi faut-il coupler des codes ? M1 M1 …. MN n M3 Interaction entre composants n Simulations de plus en plus complexes : n n n 3d avec une physique de plus en plus complète, haut degré de fidélité, massivement parallèle, développement rapide 11/12/2013 IS342 - Couplage de Codes 5 11/12/2013 IS342 - Couplage de Codes 6 Quelques exemples (1) Pourquoi faut-il coupler des codes ? n Réutiliser les codes existants pour réaliser une application complexe n n Multiéchelles : interaction entre les échelles (loi physique non valable, …) n Prédiction du temps, biologie, physique des matériaux, …. On parle de modèles couplés Motivation n Modèle climatique, fluide structure, fusion thermonucléaire contrôlée, hydrologie souterraine, M2 Composants indépendants n Deux types d'applications : n Multiphysiques : le modèle va réagir avec l'extérieur Systèmes complexes Systèmes isolés Aéroélasticité : couplage Mécanique de fluides, mécanique des solides Aéronautique, biomédical, …. Pas d'expertise dans tous les domaines. Difficile de gérer un code monolithique n Beaucoup de paramètres pas utiles. n Maintenance, nouveau développement. n Difficile de recherche une erreur. Couplage frontière : Gestion du déplacement des deux maillages. Interpolation des données du modèle 1 pour le modèle 2. 11/12/2013 IS342 - Couplage de Codes 7 11/12/2013 IS342 - Couplage de Codes 8 2 Quelques exemples (2) n Quelques exemples (3) Couplage multi échelles : propagation d'une fissure n Impossible d'étudier le phénomène : (5 µm)3 ~ 1013 atomes Météo, climatologie, … n Modèles : élasticité, atomique, quantique n Beaucoup de physiques différentes (multi physiques) Modèles n Élasticité linéaire, éléments finis. n Océan Atmosphérique n Dynamique moléculaire. Équations de Newton, corps. n n Équation de Schrödinger R3N. Problème aux Valeurs propres non linéaire. Oxydation, Casser des liaisons e. n n n 11/12/2013 9 IS342 - Couplage de Codes Végétation Glace Assimilation de données 11/12/2013 Quelques exemples (3) n Chimie Evaporation / précipitation Nuages 10 IS342 - Couplage de Codes Les applications du 21ième siècle Partager les expertises sans donner les codes Code = capital, savoir faire d'une entreprise Physiques Modules Société B Optimisation Mécanique des structures Code B Optique Société A Dérivation numérique Réseau partagé Grilles Solution Adaptive Diagnostics Discrétisation Pilotage Solveurs Algébriques Visualisation Échanger des informations Thermique Dynamique Construction d'un satellite 11/12/2013 Data Réduction Code A Problèmes : • Interfaces des codes • Sécurité • Identification • Intégrité, confidentialité des données - cryptage Problème de type calcul distribué, Grid computing IS342 - Couplage de Codes Collaboration Parallèle I/O Les Logiciels de simulations Numériques deviennent de plus en plus complexes et interdisciplinaires 11 11/12/2013 IS342 - Couplage de Codes 12 3 n Cela demande d'intégrer des bibliothèques développées par d'autres équipes Ressources locales sont limitées et l'expertise peut ne pas exister Pas de contrôle des décisions pour développer les fonctionnalités de la bibliothèque. Problème d'interopérabilité des langages (f77, C, C++, Python, Java, f90) n n n n Les techniques pour les petits codes ne passent pas à l'échelle 500K lignes Deux approches logicielles Simulation numérique avancée MA2819KA - Jacques Hervé Saiac 11/12/2013 IS342 - Couplage de Codes 13 n Spécifique/ ad-hoc n Générique 11/12/2013 IS342 - Couplage de Codes 14 Type de couplage n Les types de couplage physique n n n n La problématique du couplage n Mono physique mais multi domaines (couplage par les C.L.) Multi physiques, mono domaine (couplage par les termes sources) Multi physiques, multi domaines (climatologie, prédiction du temps, …) Système multi échelles L'algorithmique du couplage est important n n Consistant, conserver les propriétés Le revisiter pour avoir plus de parallélisme n n 11/12/2013 Séquentiel (algorithme de Gauss Seidel) Parallèle IS342 - Couplage de Codes 16 4 Type de couplage La problématique du couplage (3) Séquentiel Parallélisme n A Synchronisation forte B Standardiser les interfaces des codes Réutilisation, Structure de données A B C n Synchronisation faible Les différents paradigmes de parallélisme SPMD - MPI C A B SPMD - OpenMP SPMD - Hybride C Deux itérations Une itération Exemple : Algorithme de Schwarz additif versus multiplicatif Compatibilité, interopérabilité Compromis entre la vitesse de convergence de l'algorithme et la vitesse d'exécution du code 11/12/2013 IS342 - Couplage de Codes 17 11/12/2013 Différentes stratégies (1) 2. Fusion de codes : 1. Implanter ex nihilo le phénomène couplé : n n 11/12/2013 Complexe du point de vue physique, numérique, informatique : risque d'échec élevé. Simplification potentielle de certains effets intervenants dans le système couplé. On ne réutilise pas le patrimoine de codes développés depuis 30 à 40 ans. IS342 - Couplage de Codes 18 Différentes stratégies (2) Plusieurs approches possibles : n IS342 - Couplage de Codes 19 11/12/2013 • Difficile : chaque code a sa propre logique de développement, de maintenance corrective/évolutive. • Perte d'indépendance des codes. • Multiplication potentielle des versions des codes intervenant dans plusieurs systèmes couplés. IS342 - Couplage de Codes 20 5 Différentes stratégies (3) Différentes stratégies (4) 3. Couplage « à la main » • • • n Problème : Utilisation de codes existants ou développement de codes mono physique (moins lourds). Développement de « filtres » (convertisseurs) souvent très spécialisés. Difficulté de gérer le processus global. n n n n n Code A fichiers Data Data fichiers 11/12/2013 fichiers Da ta Filtre 1 ta Da fichiers Filtre 2 Code B 21 IS342 - Couplage de Codes Solution : utiliser un outil intermédiaire appelé coupleur de codes qui prend en charge les échanges de données et les synchronisations n adapté aux types de simulations envisagées, n adapté aux codes écrits en FORTRAN, C, C++, …, n portable sur de nombreuses plates-formes matérielles, n permettant les couplages distribués en réseau, n exploitant le parallélisme éventuel du couplage . 11/12/2013 Complexité et souplesse (1) 22 IS342 - Couplage de Codes Complexité et souplesse (2) Réalisation d'un code monolithique : Codes séparés avec boucles de calcul internes : Code 1 Programme principal Fonction de calcul Pour t = t0,… Publication de données Consommation Fonction de calcul Fonctions éventuellement récupérées de codes existants Code 3 Pour t = t0,2, … Publication de données Consommation Pour t = t0,3, … Publication de données Consommation • Intrusion minimale dans les codes : il faut repérer les données à exporter/ importer, et les boucles de calculs ou réaliser les opérations La boucle de calcul (schéma de calcul) est figée dans le code. Peu ou pas de souplesse. IS342 - Couplage de Codes Code 2 Pour t = t0,1, … Fonction de calcul Appel des fonctions … 11/12/2013 Maîtriser la complexité de la mise en œuvre du couplage. Réutiliser les codes existants pour les coupler à l'image des processus physiques. Intervenir le moins possible dans les codes. Préserver l'indépendance des équipes de développement. • Boucles de calcul interne => certaines simulations ne seront pas possible 23 11/12/2013 IS342 - Couplage de Codes Couplage gros grains 24 6 Taxinomie du couplage Complexité et souplesse (3) 4 notions : Codes découpés en « composants » et boucle de calcul externe : Nécessite de découper en composants composant = objet ou composant Externaliser la boucle Utiliser un environnement dédié (CCA, Salomé, CCM,…) Pour t = t0,… 11/12/2013 Ordonnancement : un model exécution Independent; Comp. 5 La sortie d'un code devient les entrés d'un autre « Code 2 » Basé communication : appels send/receive Outil de couplage Appel de Comp. 1 Appel de Comp. 3 Appel de Comp. 4 … Monolithique : force brute, fusion manuel des codes Comp. 4 Point de couplage dans le code Comp. 1 Comp. 2 Basé Composant : modèle de code modulaire constitué de composants avec des interfaces standardisées Comp. 3 « Code 1 » 25 IS342 - Couplage de Codes 11/12/2013 Taxinomie Taxinomie Ordonnancé Monolithique for i=1,nx for j=1,ny call dyn() call update() end for end for for k=1,z call phys1(k) call phys2(k) end for 11/12/2013 26 IS342 - Couplage de Codes for i=1,nx for j=1,ny call dyn() for k=1,z call dyn() call phys1(k) call phys2(k) call update() end for end for end for Model A Basé communication Model B Model C for i=1,nx for j=1,ny call dyn() call send (X) call update() end for end for for k=1,z call phys1(k) call receive(X) call phys2(k) end for Basé composant Model D IS342 - Couplage de Codes 27 11/12/2013 IS342 - Couplage de Codes 28 7 Une grande variété de technologies : High performance coupling (MCT, OASIS, ESMF, CCA, HLA) Loose coupling / Interoperability (FRAMES, OpenMI) Object-oriented frameworks (OMS) GUI / Visualization (TIME) Scientific workflow engine (Kepler) Architectural standards (CCA, HLA, Salome) Community development initiatives (CHyMP) Quelques problèmes H. R. A. Jagers, "Linking Data, Models and Tools: An Overview," in International Congress on Environmental Modelling and Software Modelling for Environment's Sake, Ottawa, Canada, 2010. 11/12/2013 IS342 - Couplage de Codes 29 Les difficultés n Langage de « coordination » pour le couplage n Décrire les enchaînements des programmes n Décrire l'accès aux données n Redistribution des données entre deux codes parallèles n Vision informatique du couplage n n n Échanger entre code parallèle des données surfaciques, volumiques Code A n À plat : monde du parallélisme (MPI) Hiérarchique : mode des objets ou des composants n Lancement, batch, pare-feu, … IS342 - Couplage de Codes Code B Communications efficaces – éviter les goulots d'étranglement Prendre en compte les hiérarchies des réseaux Des solutions souvent ad hoc : n Tableaux, matrices denses n Distribution de type HPF : bloc cyclique Déploiement n 11/12/2013 La redistribution : MxN 31 11/12/2013 IS342 - Couplage de Codes 32 8 La redistribution Structuration des applications (1) Une approche généricité de la redistribution n n Distribution entre les processeurs, agencement mémoire dans un processeur n Construction de la matrice de communication n Ordonnancement des messages Approche parallèle n process process Code 1 process process middleware process Code 3 process 11/12/2013 process n Composant séquentiel n process Une grille de calcul est un calculateur parallèle virtuel, la programmation par échange de messages s'impose… Composant parallèle SAN process process process SAN process process n n 11/12/2013 Grappe de PC process <<< process SAN process Grappe de PC n process Code 1 Grappe de PC WAN Système de batch Pare-feu Visualisation Supercomputer WAN SAN process process Statique versus Dynamique Sécurité : Identification, cryptage, intégrité des données IS342 - Couplage de Codes LAN process LAN process n 34 Réutilisation des exécutifs conçus pour la programmation parallèle process processus processus processus processus process process Composant parallèle IS342 - Couplage de Codes Composant parallèle process processus processus processus processus process process Code 3 process processus processus processus processus Approche Parallèle du Couplage Composant séquentiel middleware Code 2 process processus processus processus processus process process Code 2 33 Placement de l'application sur les machines process Composant parallèle Composant séquentiel Composant séquentiel Déploiement de l'application process Interconnexion des objets /composants process Structuration des applications (2) process n process process IS342 - Couplage de Codes Code 1 Couplage de codes parallèles process Redistribution Symbolique Données parallèles process Structuration de l'application Encapsulation des codes process Exemple: bibliothèque RedGrid : RedSym + RedCorba n n n process Description des Objets n Objets distribués / composants n Matrice de communication Corba, MPI, …. 11/12/2013 n Ordonnancements des communications Ordonnancement La couche de communication Une approche plus moderne Utilisation des exécutifs conçus pour la programmation parallèle. Transferts des données en parallèle Redécoupage pour optimiser les débits, … n Structuration des applications/ hiérarchisation des communications Description des données process process Grappe de PC process Code 2 Supercomputer Visualisation Code 3 35 11/12/2013 IS342 - Couplage de Codes 36 9 Approche Objets Distribués du Couplage n Objets distribués / composants n Couplage de codes parallèles n n Structuration de l'application, encapsulation des codes Interconnexion des objets / composants Composant séquentiel Composant parallèle SAN process processus processus processus processus process Quelques solutions de couplages LAN Grappe de PC WAN SAN middleware process Composant séquentiel process processus processus processus processus Grappe de PC Supercalculateur Visualisation Composant parallèle 11/12/2013 IS342 - Couplage de Codes 37 11/12/2013 IS342 - Couplage de Codes 38 Le Couplage de Codes Technologies issues de deux mondes différents n Parallélisme n n n n Approche Parallèle Distribué / réparti n n n 11/12/2013 pour supporter des codes de simulations à haute performance message passing (MPI, PVM), Pthreads, OpenMP, HPF, DSM, etc. plusieurs projets visant à étendre MPI pour supporter le distribué (PACX, PLUS, MPI2, coupleur, ....) pour supporter l'exécution de codes de simulation sur des ressources de calcul variées technologies RPC, client/serveur, objets distribués (Java/RMI, CORBA) effort à faire pour que ses technologies supportent le calcul hauteperformance, nouveaux concepts à définir... IS342 - Couplage de Codes Utiliser le même protocole de communication que celui des applications 39 10 L’échange de Message n n Rappels sur MPI & PVM 11/12/2013 Le moyen le plus efficace de programmer les machines parallèles à mémoire distribuée L'utilisateur a la complète maîtrise de la parallélisation (équilibrage de la charge, distribution des calculs et des données) n Les meilleures performances, très bonne flexibilité n Portabilité n Mais c'est dur, « assembleur » du parallélisme !!! IS342 - Couplage de Codes 42 Problème d'Interopérabilité du monde MPI n Connecter différents MPI constructeurs n n n n n MPICH, MPICH-G, LAM – MPICH2, OpenMPI, … Mais l'interopérabilité ne fait pas partie du standard MPI Plusieurs difficultés n n n 11/12/2013 utiliser la meilleure implémentation sur chaque architecture Quelques implantations de MPI supportent des machines et des réseaux hétérogènes MPI 2 ASPECT DYNAMIQUE incompatibilité des différents MPIs constructeur communications entre machines hétérogènes (conversion de données durant le transfert) garder la même API du point de vue utilisateur IS342 - Couplage de Codes 51 11/12/2013 IS342 - Couplage de Codes 68 11 Process Creation and Management n n n n n Process Creation - API MPI-1 application is static MPI-2 : process creation after MPI application has started Motivation: - Task farming applications - serial applications executing parallel codes - To be friendly to the PVM users MPI_COMM_SPAWN(command, argv, maxprocs, info, root, comm, intercomm, array_of_errcodes) IN command IN argv IN maxprocs IN info - a set of key-value pairs telling the runtime system where and how to start the processes (handle, significant only at root) (MPI_INFO_NULL can be used) IN root - rank of process in which previous arguments are examined (integer) IN comm - intracommunicator containing group of spawning processes Communication between new processes and existing application Communication between 2 MPI applications OUT intercomm - intercommunicator between original group and the newly spawned group (handle) OUT array_of_errcodes 11/12/2013 IS342 - Couplage de Codes 69 11/12/2013 70 Spawn Example – Master/worker API /* master */ #include "mpi.h“ int main(int argc, char *argv[]) { MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &world_size); if (world_size != 1) error("Top heavy with management") MPI_COMM_GET_PARENT(parent) OUT parent - IS342 - Couplage de Codes the parent communicator MPI_COMM_SPAWN_MULTIPLE(count, array_of_commands, array_of_argv, array_of_maxprocs, array_of_info, root, comm, intercomm, array_of_errcodes) - for starting multiple binaries MPI_Comm_spawn(worker_program, MPI_ARGV_NULL, 1, MPI_INFO_NULL, 0, MPI_COMM_SELF, &everyone, MPI_ERRCODES_IGNORE); … … … MPI_Finalize(); return 0; } MPI_COMM_SELF : Predefined communicator containing only the calling process. 11/12/2013 IS342 - Couplage de Codes 71 11/12/2013 IS342 - Couplage de Codes 72 12 Communication between applications Example continued /* worker */ #include "mpi.h“ int main(int argc, char *argv[]) { n n MPI_Init(&argc, &argv) MPI_Comm_get_parent(&parent); if (parent == MPI_COMM_NULL) error("No parent!"); n n Communication between 2 independently started applications Follows client/server type of communication Collective operation Operates by means of port names and/or service names MPI_Comm_remote_size(parent, &size); if (size != 1) error("Something's wrong with the parent"); … … … MPI_Finalize(); return 0; } 11/12/2013 IS342 - Couplage de Codes 73 11/12/2013 API client/server n n IS342 - Couplage de Codes API – Service names MPI_OPEN_PORT(info, port_name) - server MPI_CLOSE_PORT(port_name) – server n n n n n 11/12/2013 74 MPI_COMM_ACCEPT(port_name, info, root, comm, newcomm) – server MPI_COMM_CONNECT(port_name, info, root, comm, newcomm) – client IS342 - Couplage de Codes MPI_PUBLISH_NAME(service_name, info, port_name) MPI_UNPUBLISH_NAME(service_name, info, port_name) MPI_LOOKUP_NAME(service_name, info, port_name) Has limited scope than port names Scope defined by implementation 75 11/12/2013 IS342 - Couplage de Codes 76 13 11/12/2013 Example 1 Example 2 – Publishing names Server: char myport[MPI_MAX_PORT_NAME]; MPI_Comm intercomm; /* ... */ MPI_Open_port(MPI_INFO_NULL, myport); printf("port name is: %s\n", myport); MPI_Comm_accept(myport, MPI_INFO_NULL, 0, MPI_COMM_SELF, &intercomm); /* do something with intercomm */ Server: MPI_Open_port(MPI_INFO_NULL, port_name); MPI_Publish_name("ocean", MPI_INFO_NULL, port_name); MPI_Comm_accept(port_name, MPI_INFO_NULL, 0, MPI_COMM_SELF, &intercomm); /* do something with intercomm */ Client: MPI_Comm intercomm; char name[MPI_MAX_PORT_NAME]; printf("enter port name: "); gets(name); MPI_Comm_connect(name, MPI_INFO_NULL, 0, MPI_COMM_SELF, &intercomm); MPI_Unpublish_name("ocean", MPI_INFO_NULL, port_name); IS342 - Couplage de Codes Client: MPI_Lookup_name("ocean", MPI_INFO_NULL, port_name); MPI_Comm_connect( port_name, MPI_INFO_NULL, 0, MPI_COMM_SELF, &intercomm); 77 11/12/2013 79 11/12/2013 IS342 - Couplage de Codes 78 Approche Client/Serveur MPI2 11/12/2013 IS342 - Couplage de Codes IS342 - Couplage de Codes 80 14 11/12/2013 11/12/2013 IS342 - Couplage de Codes IS342 - Couplage de Codes 81 11/12/2013 83 11/12/2013 IS342 - Couplage de Codes IS342 - Couplage de Codes 82 84 15 11/12/2013 11/12/2013 IS342 - Couplage de Codes IS342 - Couplage de Codes 85 11/12/2013 87 11/12/2013 IS342 - Couplage de Codes IS342 - Couplage de Codes 86 88 16 Résumé n n n n n n n Serveur ouvre un port Serveur publie un nom (publique) Client consulte le nom Client se connecte au port Serveur supprime le nom Serveur ferme le port Les deux cotés sont déconnectés Une autre possibilité MPI_SPAWN, pour lancer les applications. (Regarder l'aspect dynamique de la norme) 11/12/2013 89 IS342 - Couplage de Codes 11/12/2013 Limitations 90 IS342 - Couplage de Codes Couplage n Code A MPI_SP AW n N Lancement Établissement des connexions I_S MP n WN PA n n Connect/accept MPI_Intercomm_create bootcode A Communications via intercomm ? B Comment faire communiquer les deux codes ? inte rcom m C Code B universe 11/12/2013 IS342 - Couplage de Codes 91 11/12/2013 IS342 - Couplage de Codes 92 17 Solutions dédiées Coupleur de codes : Générique : MpCCI Climatologie : NGC, OASIS, PALM, … Recherche de voisins Solutions dédiées Interpolation Communication Coupleur MPI, PVM, … 11/12/2013 94 IS342 - Couplage de Codes Approche Grille Approche Grille Utiliser un super-calculateur virtuelle à l'échelle de la planète n n domaines administratifs différents, sécurité, déploiements… ex. GLOBUS, Legion, Unicore “10 GFlops, EOS data, 20 Mb/sec -- pour 20 minutes” “20 Mb/sec” “Quels ordinateurs ?” “Quelle vitesse ?” “Disponibilité ?” Courtier de ressource Allocateurs de ressources de GLOBUS GRAM GRAM GRAM Service d'information : localisation + sélection Metacomputing Directory Service “50 processeurs + stockage de 10:20 à 10:40 pm” GRAM Fork LSF EASYLL Condor etc. 11/12/2013 IS342 - Couplage de Codes 96 18 GLOBUS n MPICH-G2 GLOBUS n “Resource sharing & coordinated problem solving in dynamic, multiinstitutional virtual organizations.” n Un MPI pour la grille (GLOBUS) n n Implémentation complète de la Message Passing Interface (MPI) MPI est le standard de facto pour le passage de messages, et la programmation parallèle Les 4 protocoles clés au cœur n n n n Sécurité : Grid Security Infrastructure (GSI) Gestion de Ressource : Grid Ressource Allocation Management (GRAM) Service d'Informations : Grid Ressource Information Protocol (GRIP) Transfert de Données : Grid File Transfer Protocol (GridFTP) n n Permet aux programmes MPI existants de s'exécuter sur la grille sans changements. Documentation n http://www.globus.org/mpi http://www.globus.org 11/12/2013 IS342 - Couplage de Codes 97 11/12/2013 MPICH-G2 n Composants Globus en Action Déploiement avec mpirun n mpirun fichier machine à l 'échelle de la grille popc.ens-lyon.fr/jobmanager-fork 4 kubrick.labri.u-bordeaux.fr/jobmanager-poe 4 farot.ens-lyon.fr /jobmanager-fork 1 n globusrun DUROC Meilleures performances grâce à l'utilisation de plusieurs protocoles de communication n n GRAM GRAM GRAM fork LSF LoadLeveler TCP pour les communications inter-machines MPI locaux pour les communications intra-machines P1 n 11/12/2013 98 IS342 - Couplage de Codes Conversion automatique des données IS342 - Couplage de Codes P2 P1 P2 P1 P2 MPICH-G 99 11/12/2013 IS342 - Couplage de Codes 100 19 Approche Objets Distribués Approche Objets Distribués n Utilisation du concept d'objet distribué (CORBA, Java) n n n Avantages n n Programmation par objet à travers un réseau de façon transparente Vers une programmation par composants logiciels Réduire la complexité par une approche hiérarchique Inconvénients n n Performance des courtiers d'objets Nécessite des extensions pour supporter des objets parallèles 11/12/2013 102 IS342 - Couplage de Codes Calcul Réparti n Casser les structures existantes n insérer des appels de procédure/de méthode à distance Appelant Appelant Appelé Rappels sur CORBA Souche Squelette Appelé Network n Nouveaux problèmes n 11/12/2013 Nommage, localisation, transparence, interopérabilité IS342 - Couplage de Codes 104 20 CORBA n CORBA CORBA (Common Object Request Broker Architecture) n n n n n standard ouvert pour les applications réparties Hétérogénéité n indépendant des fournisseurs et des implantations n bus logiciel, orienté objet, interface IDL communication par appel de méthode à distance (RMI) n Portabilité n n n Object Management Group (OMG) n n n n 105 106 IS342 - Couplage de Codes Exemple CORBA Transparence vis-à-vis de la distribution et de l'hétérogénéité" Spécification interface tty { void print(in string msg); }; Implémentation de l'objet IDL IDL Compilateur IDL Adaptateur d'objet Object Request Broker (IIOP) client spécification IDL class tty_impl : virtual public tty_skel { public: tty_impl() {}; implémentation de l'objet ~tty_impl() {}; void print(const char* msg) { cout << msg << endl; }; }; Squelette 11/12/2013 sélection automatique du protocole de communication en fonction de la localisation de l'objet 11/12/2013 CORBA souche IDL Protocole réseau commun entre implantations CORBA (GIOP, IIOP) Vers d'autres modèles comme OLE, COM et EJB Transparence réseaux n IS342 - Couplage de Codes ADA, C, C++, COBOL, JAVA, LISP, Python, … mais pas Fortran ! Interopérabilité n n client Code applicatif indépendant des implantations CORBA Projections standardisées OMG IDL vers langages de programmation n Large consortium international responsable de la spécification de CORBA Technologie mature (plus de 12 ans de standardisation) 11/12/2013 Multi-langages, multi-OSs, multi-réseaux, multi-fournisseurs Interface des objets décrits dans un méta-langage (OMG IDL) serveur IS342 - Couplage de Codes 107 11/12/2013 IS342 - Couplage de Codes 108 21 Invocation de méthode à distance n Serveur n n n n n n init ORB + POA (1) créer l'objet (2) récupérer réf. service de nommage (3) nommer l'objet et l 'inscrire dans le service de nommage (4) activer l'objet puis attendre des invocations (5) Service de nommage n n n init ORB (1) récupérer réf. service de nommage (2) récupérer réf. objet auprès du service de nommage (3) invoquer une méthode à distance (4) 11/12/2013 4 4 3 1 2 Client n Couplage de Codes avec CORBA ORB 1. Approche séquentielle 1 2. Approche parallèle 3 2 Client 5 Serveur IS342 - Couplage de Codes n n Couplage avec Corba n Produits commerciaux, Open Source, ... Interopérabilité assurée entre les différentes implémentations Interfaçage avec Java (grâce au protocole IIOP) Avantages n n n n n CORBA permet de réduire le temps passé au développement des systèmes distribués n n Relativement simple à utiliser Spécification des interfaces – langage IDL n CORBA relativement performant n Conclusion n n 11/12/2013 Paco/Paco++ 109 De nombreuses implémentations de CORBA sont disponibles n ParDis • ref.print("hello") CORBA pour le couplage de codes ? n • n Inconvénients n n n latence > MPI n Modèle client/serveur – car peu utilisé dans le domaine du calcul scientifique. Pas de projection vers le Fortran : nécessite une glue Manque de support à la programmation parallèle ie pas d'objets parallèles Performance : n seul standard de programmation répartie possédant la performance acceptable pour le calcul scientifique !!! IS342 - Couplage de Codes Réduire la complexité du logiciel Évolutif Modèle client/serveur Coût de développement faible, il suffit de travailler sur l'implémentation des interfaces. n 111 11/12/2013 dépendant des ORB, pas de support autre que TCP/IP Utiliser les interfaces statiques pas dynamiques IS342 - Couplage de Codes 112 22 Couplage appliqué aux simulations n Couplage appliqué aux simulations Principes n n Encapsuler un code séquentiel au sein d'un objet CORBA n n n n Les données transmises doivent être décrites en IDL ! n Passer a un code a appel de procédures à un modèle client serveur Casser la structure du code En général l'interface se découpe en 3 parties Spécification au format IDL n n Il faut bien décrire les interfaces des méthodes Pas de standardisation – quelques efforts – CCA, Salomé Les interactions sont réalisées à l'aide d'appel de méthode Méthodes pour accéder aux variables du codes Méthodes pour la lecture des données, sauvegarde des résultats. Code métier Glue Méthodes de calculs : mailleur, solveur, intégration 11/12/2013 113 IS342 - Couplage de Codes 11/12/2013 Exemple IS342 - Couplage de Codes 114 Couplage Appliqué aux Simulations Parallèles Code : Boucle de calcul en temps X n +1 n n = X + Δt F ( X ) Comment passer à un code parallèle ? Code 1 n Mise à jour des inconnues Évaluation des forces de diffusion Pas de parallélisme dans corba n n Il faut étendre les objets ou refaire un intergiciel de couplage Il faut écrire ses routines de redistribution des données Évaluation des forces de convection Une solution : n n Serveur : Le calcul des forces, la mise à jour des inconnues Client : l'enchaînement des calculs Remarque Un enchaînement souvent séquentiel du calcul des forces 11/12/2013 IS342 - Couplage de Codes 115 11/12/2013 IS342 - Couplage de Codes 116 23 Encapsulation de Codes MPI dans un objet CORBA n n n Un des processus d'un code SPMD agit comme un maître alors que les autres processus sont des esclaves Le processus maître contrôle l'exécution des autres processus au travers de MPI Code MPI encapsulé n n Une approche pas très « scalable » Maître goulot d'étranglement Nécessite des modifications des codes à encapsuler n Couche de communication MPI n n SPMD code Client Inconvénient n Points clés Stub Skel. POA Code Code Code SPMD Code SPMD Code SPMD Code SPMD SPMD SPMD Maître CORBA+MPI (héberge un serveur CORBA) client communique via CORBA avec le maître communication du maître via MPI avec les esclaves (gather/ Encapsulated MPI Code scatter) MPI Communication layer Scheduler Processus MPI esclaves Client ORB Stub SPMD code SPMD code SPMD code SPMD code Skel. Disp. Disp. Disp. MPI Slave processes n MPI Master process Approche Maître/Esclave Processus MPI maître n Approche Maître/Esclave OA CORBA ORB 11/12/2013 117 IS342 - Couplage de Codes 11/12/2013 Modèle distribué IS342 - Couplage de Codes 118 Modèle distribué Inconvénients n Mélanger des requêtes MPI et Corba Des conflits si l'on qu'une interface réseau : comment reconnaître un message MPI d'un message CORBA Solution : projet PadicoTM = framework pour lancer des applications parallèles comme des composants logiciel (ddl). n n n n 11/12/2013 Solution : un serveur par nœud mais coté client comment appeler une méthode sur tous les objets problème de synchronisation (serveur indépendant) Récepteur Parallèle Émetteur Parallèle Sérialisation des communications Modifications des programmes parallèles Gestion à la main des distributions IS342 - Couplage de Codes Goulot d'étranglement sur le master comme dans l'approche parallèle Objet distribué Nécessiter des objets CORBA parallèles 119 11/12/2013 IS342 - Couplage de Codes 120 24 Couplage Parallèle / Parallèle Concept d'Objet CORBA Parallèle n Application MPI Application MPI Objet Parallèle CORBA n Objet CORBA parallèle Client CORBA Parallèle n Couche de communication MPI Couche de communication MPI Code SPMD Stub Code SPMD Stub Impl. Objet Impl. Objet Code SPMD Code SPMD Skel. . Skel. . POA POA Code SPMD Stub ... Impl. Objet n Code SPMD ... ... n n Skel. . Spécification de l'OMG en nov.2001 Data Parallel Corba n POA n n ORB n IS342 - Couplage de Codes 121 n n n n o->exemple(m); n Hérite de toutes les bonnes propriétés de CORBA n Assurer la « scalabilité » des interactions entre objets CORBA parallèles n n // Objet A portabilité, interopérabilité langage et systèmes, etc. 123 // Objet O SPMD Proc. SPMD … Proc. SPMD Proc. SPMD Proc. SPMD Proc. Flux de communications parallèles Permet de saturer des réseaux à très haut débits qui assure l'interconnexion des machines Pas de goulot d'étranglement comme PACX IS342 - Couplage de Codes Objet O … et comment il doit être implémenté Avantages des Objets CORBA Parallèles n 11/12/2013 Ce que le développeur d'application devrait voir… Encapsuler un code parallèle au sein d'un objet parallèle CORBA Les données transmises doivent être décrites en IDL ! Il faut pouvoir décrire la distribution des données dans les codes Les interactions sont réalisées à l'aide d'appel de méthode n 122 IS342 - Couplage de Codes Des objets parallèles Principes n PaCO++ (Irisa), PARDIS (Los Alamos + Univ. Indiana) 11/12/2013 Couplage Appliqué aux Simulations n Modification de ORB Pas de spécification sur la gestion des données pas d'implémentation disponible. Deux implémentations : n 11/12/2013 collection d 'objets CORBA identiques (même interface IDL) transparence pour le client (même si séquentiel) n prise en charge de l'invocation parallèle de méthodes n redistribution des données ne pas modifier l'ORB ! flux parallèle de communication entre objets appartenant aux collections 11/12/2013 SPMD Proc. SPMD SPMD …Proc. Proc. SPMD Proc. SPMD Proc. IS342 - Couplage de Codes 124 25 Points clés De CORBA vers CORBA Parallèle... Envoi de la matrice n Avoir une vision cohérente des différents objets n Client n Serveur Redistribution des données Distribution des données : n Redistribution des données n Client Objet Parallèle Objet Parallèle Objet Parallèle Synchronisation des objets Comment spécifier la distribution des arguments et du retour d'une méthode Être suffisamment générique pour qu'un utilisateur puisse définir sa distribution n Quel sens donner à une exception sur un objet sparallèle n … Nécessite au minimum de modifier l'ORB et/ou d'étendre l'IDL 11/12/2013 125 IS342 - Couplage de Codes 11/12/2013 Le projet : PARDIS n New Concepts: ORB-based system where objects interact through CORBA IDL interfaces n n IDL specification n n compiler SPMD (Collective) object associated with a set of threads performing services accepted by all of these threads Collective invocations Asynchronous requests and futures Data representation issues: n Client's application and package Client's RTS 11/12/2013 126 PARDIS: Extensions to CORBA Start with existing standards (CORBA) n IS342 - Couplage de Codes Client's stub Server's stub PARDIS ORB IS342 - Couplage de Codes Server's application and package n IDL: distributed sequences and sequences dsequence<double,64, (BLOCK, CYCLIC)> distribution templates for both sides of interaction Server's RTS 127 11/12/2013 IS342 - Couplage de Codes 128 26 PARDIS: Evaluating the Abstraction PARDIS: Comparison Exposing a “parallel” interface to an object allows us to transfer data in parallel n Comparison of two kinds of interaction: n n n Through a “sequential” interface n Data is gathered on one node at source and scattered at destination Through a “parallel” interface n Given the application-specific knowledge of distribution the data can be mapped directly between N threads of the client and M threads of the server (the MxN problem) 11/12/2013 11/12/2013 129 IS342 - Couplage de Codes IS342 - Couplage de Codes PaCO: Parallel CORBA Object n Une collection d'objets CORBA identique Transparent pour le client n Impact sur le standard: n n n n Extensions à CORBA n IDL (Interface Definition Language) Collection d'objets Dimension et topologie de la collection Distribution des données Opérations de réductions n Invocation à distance parallèle & Data distribution Ne modifie pas ORB Nécessite des extensions à l'IDL et au service de nommage n Parallel Server Parallel CORBA Object n n MPI communication layer n interface[*:2*n] MatrixOperations { typedef double Vector[SIZE]; typedef double Matrix[SIZE][SIZE]; void multiply(in dist[BLOCK][*] Matrix A, in Vector B, out dist[BLOCK] Vector C); void skal(in dist[BLOCK] Vector C, out csum double skal); }; 11/12/2013 Object inv. ExtendedIDL Compiler SPMD Proc. SPMD Proc. SPMD Proc. Skel. Skel. Skel. Génération des souches/squelette pour la prise en compte des objets parallèles POA POA POA n Nouveau type de données pour les paramètres tableau distribués n n Stub n n 132 Extension des séquences CORBA Information sur la distribution des données Service de Nommage Object Request Broker (ORB) IS342 - Couplage de Codes interface[*:2*n] MatrixOperations { typedef double Vector[SIZE]; typedef double Matrix[SIZE][SIZE]; void multiply(in dist[BLOCK][*] Matrix A, in Vector B, out dist[BLOCK] Vector C); void skal(in dist[BLOCK] Vector C, out csum double skal); }; IDL Compiler n Sequential client 131 11/12/2013 Besoin d'associer une collection de références d'objet à un nom symbolique IS342 - Couplage de Codes 133 27 Parallel CORBA Object as Client Invocation à distance avec des paramètres distribués Parallel Client interface[*] Operations { typedef double Matrix[100][100]; void foo( inout dist[BLOCK][*] Matrix A ); }; n n Parallel Server Sequential Client Skeleton MPI Server obj. ORB Stub n foo( A ) Request0 Client obj. ... pco->foo( A ) ... Assignment of remote object references to the stubs Use of distributed data type as operation parameters in the stubs Exchange of data through MPI by the stubs (or the skeletons) n n A Request1 Request2 Object inv. SPMD Proc. SPMD Proc. SPMD Proc. Skel. Stub Stub Stub POA Object Request Broker (ORB) To build requests To broadcast results foo( A ) Parallel CORBA Object Parallel Client MPI communication layer foo( A ) foo( A ) Parallel Server MPI communication layer Parallel CORBA Object Gather/Scatter Request3 Sequential Server Parallel CORBA Object MPI communication layer SPMD Proc. SPMD Proc. SPMD Proc. SPMD Proc. SPMD Proc. SPMD Proc. Skel. Skel. Skel. Stub Stub Stub POA POA POA Object Request Broker (ORB) 11/12/2013 134 IS342 - Couplage de Codes 11/12/2013 PaCO++ : Portable parallel CORBA object n Objectives n n n n Standard IDL Standard naming service n n Objet CORBA parallèle Implémentation du modèle de programmation abstrait Interface1 Implementation Interface1 Parallel CORBA stub ManagerInterfac n Parallel CORBA skel ManagerInterfac e1 CORBA stub Extension portable n e1 CORBA skeleton n n Data distribution managed by the middleware and not by the users n MPI WORLD Interface1 I_var o = I::_narrow(...); o->fun(); 135 PaCO++ n Parallel User Code (MPI) Behave like standard CORBA objects n n MPI WORLD No modification to the OMG standard IS342 - Couplage de Codes Bibliothèques de threads et communications Bibliothèques de redistributions et ordonnancements Interopérabilité CORBA ORB n At the client or the server side Through the ORB Parallel User Code (MPI) Disponible à cette adresse n http://www.irisa.fr/paris/Paco++ CORBA interface Parallel CORBA stub & skel. n Interoperability with various CORBA implementations CORBA interface CORBA stub Socket interface Socket Interface 11/12/2013 IS342 - Couplage de Codes IPCOC interface MPI MPI IPOC library interface calls MPI interface MPI runtime 136 11/12/2013 IS342 - Couplage de Codes 137 28 Chaîne de compilation Utilisation de PaCO++ // Code SPMD sur le récepteur void factoriser(const Matrice mat) { .... MPI_Bcast(...) ... ;} // Code sur l'émetteur o->factoriser(m); Factoriser.idl Factoriser.xml Générateur PaCO++ Redistribution des données FactoriserPaCO.idl Générateur CORBA // IDL interface MyInterface { void factoriser(in Matrice mat); }; 11/12/2013 // XML Nom: MyInterface.factoriser Type: Parallèle Argument1: Distribué Souches CORBA 138 IS342 - Couplage de Codes 11/12/2013 Gestion des redistributions dans PaCO++ 139 IS342 - Couplage de Codes Gestion des redistributions dans PaCO++ Bibliothèque de communication ( MPI) Code applicatif Bibliothèque de communication ( MPI) Code applicatif Code PaCO++ Code PaCO++ Gestion des communications 1: Calcul des matrices 2: Calcul des ordonnancements Appels CORBA Souche CORBA 11/12/2013 Code PaCO++ Bibliothèque de redistribution 1 3: Bibliothèque d'ordonnancement 1 Souche CORBA ORB IS342 - Couplage de Codes 140 11/12/2013 ORB IS342 - Couplage de Codes 141 29 Plates-formes d'expérimentations n À l'IRISA : n n n n n n n Projet RNTL : n CEA, EDF, EADS, OpenCascade …9 puis 20 partenaires Plate-forme : n 1 grappe de 16 machines 100 Mb/s Ethernet n n Routeur à 1Gb/s CAD System Utilisation de PadicoTM CAD Interface CAD Modeling Meshing Idealization Cleaning Healing Attributes Visualization n Résultats n 11/12/2013 Post http://www.salome-platform.org/ IS342 - Couplage de Codes SALOME Projet ALLIANCES Architecture Stockage souterrain des déchets - ANDRA, CEA et EDF n n n n 143 Kernel n Interface de l'application Cycle de vie des composants Module d'échange de données (avec le modèle MED) CORBA Modules n n n n n GEOM : conception et édition des géométries MESH :génération des maillages DATA : Propriétés physique des matériaux VISU : Visualisation des résultats SUPERV : supervision des calculs n 11/12/2013 142 IS342 - Couplage de Codes Solver Plate-forme de développement du CEA et EDF n Gros effort de standardisation des interfaces des logiciels/modules Interface MED 11/12/2013 Data Sets lien entre les systèmes CAD et les logiciels de calculs Système de couplage de logiciels … Supervision VTHD n n n 1 grappe de 16 machines 1 Gb/s Ethernet Switch 100 Mb/s 2 Gb/s Myrinet 2000 À Sophia : n n Un coupleur : La plate-forme open source SALOME Approche data flow IS342 - Couplage de Codes 144 11/12/2013 IS342 - Couplage de Codes 145 30 La Philosophie des Composants Approche Composant 11/12/2013 n n n n n 11/12/2013 Absence de vision globale de l'application n les principaux concepts sont définis au niveau d'un objet individuel n pas de notion de description globale de l'architecture Difficulté d'évolution n conséquence de l'absence de vision globale Absence de services n les services nécessaires doivent être réalisés ''à la main'' (persistance, sécurité, tolérance aux fautes, etc.) Absence d'outils (composition, déploiement) Conclusion n charge importante pour le programmeur n incidence sur la qualité de l'application n une partie du cycle de vie n'est pas couverte Les composants pour répondre à ses limitations !!! IS342 - Couplage de Codes 147 Composants : Description Limitation des Objets Distribués n IS342 - Couplage de Codes 148 n Définition n n n n Propriétés n n n n n spécifie explicitement la ou les interface(s) fournie(s) spécifie explicitement la ou les interface(s) requise(s) peut être configuré capable de s'auto-décrire Intérêt n n 11/12/2013 module logiciel autonome unité de déploiement (installation sur différentes plates-formes) unité de composition (combinaison avec d'autres composants) permettre la construction d'applications par composition de briques de base configurables et réutilisables séparer les fonctions des fournisseur et d'assembleur (conditions pour le développement d'une industrie des composants) IS342 - Couplage de Codes 149 31 Composants : Modèle Générique Composants : Utilisation Propriété configurables Composition hiérarchique et encapsulation (composants construits, sous-composants) (interfaces spéciales avec accès restreint) A synchrone Interfaces fournies asynchrone A1 Interfaces requises Composant (fournies par le composant) B A2 synchrone (fournies par d'autres composants) B1 B2 A3 asynchrone Interconnexion de composants (connecteurs, ou objets de communication) Contraintes techniques (placement, sécurité, transactionnel, persistance…) 11/12/2013 IS342 - Couplage de Codes Interfaces d'entrée (fournies) 150 11/12/2013 Support Logiciel pour Composants n n n n n Conteneur Composant nommage, sécurité, transactions, persistance, etc. Composant Conteneur Conteneur invocations, événements techniques utilisées : interposition, délégation Structure d'accueil Structure d'accueil n 11/12/2013 Client prise en charge partielle des relations entre composants (connecteurs) n n Composant encapsulation d'un composant prise en charge des services du système (non fonctionnel) n n espace d'exécution des conteneurs et composants médiateur entre conteneurs et services du système IS342 - Couplage de Codes 151 Mise en œuvre des Composants Pour assurer leurs fonctions, les composants ont besoin d'un support logiciel Conteneur n Interfaces de sortie (requises) IS342 - Couplage de Codes Structure d'accueil Bus logiciel + services (désignation, persistance, transaction, sécurité,etc.) 152 11/12/2013 IS342 - Couplage de Codes 153 32 Component Technology for Terascale Simulation Software: Bringing Components to High Performance Computing Composants : Situation n Microsoft n Java n n http://www.cca-forum.org/ccttss DCOM & .NET Common Component Architecture Java Beans, Enterprise Java Beans n n n n n • • • Challenges Practical parallel HPC component model Integrate legacy software investment Connection to Grid components Multi-language Indiana Univ. Modèle Composant de CORBA (CORBA 3) basé sur le modèle objet et les services de CORBA 2 Today: LANL High Performance Component Framework Single-purpose, monolithic, tightly-coupled parallel codes LLNL ORNL PNNL SNL Scientific Components Partners: Climate Modeling “MxN” Parallel Data Redistribution Quantum Chemistry Combustion Modeling Applications Integration Rob IS342 - Couplage de Codes 154 11/12/2013 Common Component Architecture: what we do for you & to you n n n n n n n Discretization Engine Ports Implicit Solve Link Visualization 155 Component - Encapsulated software object that provides a certain functionality or service and can be used in conjunction with other components to build applications A component consists of Produce code that will find a wider audience With consequent fame and maintenance drudgery Use other people's code and take credit for it n an API (abstract interface) and n one or more component implementations n common behavior among these components Pain n n Can't continue develop software “unconstrained” CCA Constraints: n n n 11/12/2013 Choice of useful software for high-performance computing (HPC) In a near mix-and-match, plug-and-play fashion Independently developed code works together in parallel Developers: n Component-Based Scientific Application IS342 - Couplage de Codes n Users: n • By definition components are independent software modules that are composable... Gain n • Goals Enable plug-and-play parallel simulations Establish component "marketplace" with applications partners Extend commodity component technology for HPC CCA Univ. of Utah GRID CCM (basé sur les objets parallèles CORBA 2) Concept de composant CCA SPMD, port collectifs, CCA MxN 11/12/2013 • ANL CCA (Common Component Architecture) Et les composants parallèles ??? n • Participants: CCM (CORBA Component Model) n Currently DOE Apps Are: One-off, stove-pipe, few participants But Also: • Scalable, and low latency • Large & rich legacy investment • n Provide the fences that make good neighbors Are small when wrapping well-designed legacy code Identify and disallow behaviors that produce incompatibility IS342 - Couplage de Codes 156 11/12/2013 CCA uses a peer component model - No particular component assumes it is “in charge” of the others. Allows the application developer to decide what is important. IS342 - Couplage de Codes 157 33 CCA Motivation What have we developed? n -6 MPI 10 -4 10 CCA 11/12/2013 -1 1 sec CORBA/Java n create Python applications out of components n n 158 P 11/12/2013 A Proc2 MPI Proc3 etc... n A A A B B B Reference Framework n MPI B n n Provides/ Uses Port n Adapters will create network-distributed objects out of the same components without altering them. n n 11/12/2013 Optimization IS342 - Couplage de Codes 160 11/12/2013 n service capabilities, discretization, mesh management, linear algebra, vizualization, etc. Collaboration with other groups to define common interface suites n Discretization Derivative Computation Various component prototypes n n Grids ProvidesPort Data re-decomposition components Framework plug-ins Components and Applications Physics Modules Component 2 One unified framework Parallel and grid aware MxN n UsesPort 159 CCA develops components & supporting code for direct use in apps Component 2 Component 1 P Viz IS342 - Couplage de Codes Proc1 n P http://www.cca-forum.org/spec Allow directly connected interfaces: the next component is one function call away. Component 1 Port Eqn Solver provides language interoperability only - not part of the component arch. per se. introspection. Ports preserve the high-performance of direct connections plus the versatility of distributed object systems n P Scientific IDL spec. n Latency between components IS342 - Couplage de Codes Mesh Setup Scripting support for applications n Existing Component Architecture Standards such as CORBA, Java Beans, and COM do not provide support for parallel components. Parallel Framework instead of data-flow ports are linked with interfaces provides/uses design pattern Link n DOE Common Component Architecture provides a mechanism for interoperability of high performance components developed by many different groups in different languages or frameworks. 10 Metaphor from visual programming (e.g. AVS) n Link Desire to build Science Applications by hooking together drag-N-drop components. E.g., scientific data interfaces (structured and unstructured) Details: http://cca-forum.org/ccttss/report/Dec01 IS342 - Couplage de Codes 161 34 Concept CCA de Port Collectif Concept de Composants CCA SPMD Coupler des composants parallèles SPMD grâce au concept de port collectif Application MPI utilisant CCA pour faire interagir les composants A & B se trouvant dans le même espace d'adressage Proc1 A Connexion Directe B MPI MPI Proc2 Proc3 etc... A A A B B B composant de visu. parallèle port collectif connectant M proc. avec N proc. Composant B Process 11/12/2013 2 composants SPMD maillage et solveur Composant A 162 IS342 - Couplage de Codes 11/12/2013 163 IS342 - Couplage de Codes Supplementary material for handouts •••• “Multiple-Component Multiple-Data” Applications in CCA CCA Supports Parallelism -- by “Staying Out of the Way” of it Single component multiple data (SCMD) model is component analog of widely used SPMD model • Each process loaded with the same set of components wired the same way n P0 P1 P2 P3 11/12/2013 Simulation composed of multiple SCMD sub-tasks n Usage Scenarios: n n n Model coupling (e.g. Atmosphere/Ocean) General multi-physics applications Software licensing issues n • Different components in same process “talk to each” other via ports and the framework • Same component in different processes talk to each other through their favorite communications layer (i.e. MPI, PVM, GA) n i.e. limited number of instances Driver Atmosphere Ocean Land Coupler n Components: Blue, Green, Red Approaches n Run single parallel framework n Run multiple parallel frameworks n Framework: Gray Any parallel programming environments that can be mixed outside of CCA can be mixed inside 165 de Codes IS342 - Couplage n 11/12/2013 Processors n Driver component that partitions processes and builds rest of application as appropriate (through BuilderService) Link through specialized communications components Link as components (through AbstractFramework service) 166 de Codes IS342 - Couplage 35 Supplementary material for handouts •••• MCMD Within A Single Framework P0 P1 See example in the Using CCA module (multilevel parallelism in quantum chemistry) Maintaining HPC Performance P2 P3 The performance of your application is as important to us as it is to you n The CCA is designed to provide maximum performance n n Framework Application driver & MCMD support component n n n Components only on process group A Components only on process group B n Group A But the best we can do is to make your code perform no worse, unless we give easy access to new algorithms. Facts: n Components on all processes 11/12/2013 More about performance in notes Measured overheads per function call are low Most overheads easily amortized by doing enough work per call Other changes made during componentization may also have performance impacts Awareness of costs of abstraction and language interoperability facilitates design for high performance Group B 11/12/2013 167 de Codes IS342 - Couplage 169 de Codes IS342 - Couplage Supplementary material for handouts Some Performance Results and References • Lois Curfman McInnes,et al. Parallel PDE-Based Simulations Using the Common Component Architecture. In Are Magnus Bruaset, Petter Bjorstad, and Aslak Tveito, editors, Numerical Solution of PDEs on Parallel Computers. SpringerVerlag, 2005. Invited chapter, in press. • S. Benson, et al. Using the GA and TAO Toolkits for Solving Large-Scale Optimization Problems on Parallel Computers. Technical report ANL/MCSP1084-0903, Argonne National Laboratory, September 2003. • Boyana Norris, et al. Parallel Components for PDEs and Optimization: Some Issues and Experiences. Parallel Computing, 28:1811--1831, 2002. • David E. Bernholdt, et al. A Component Architecture for High-Performance Computing. In Proceedings of the Workshop on Performance Optimization via High-Level Languages and Libraries (POHLL-02), 2002. 11/12/2013 170 de Codes IS342 - Couplage Example: Computational Facility for Reacting Flow Science (CFRFS) n Maximum 0.2% overhead for CCA vs native C++ code for parallel molecular dynamics up to 170 CPUs n n A toolkit to perform simulations of unsteady flames Solve the Navier-Stokes with detailed chemistry n Various mechanisms up to ~50 species, 300 reactions n Structured adaptive mesh refinement CFRFS today: n Aggregate time for linear solver component in unconstrained minimization problem w/ PETSc n 11/12/2013 n 61 components 7 external libraries 9 contributors “Wiring diagram” for a typical CFRFS simulation, utilizing 12 components. CCA tools used: Ccaffeine, and ccafegui Languages: C, C++, F77 171 de Codes IS342 - Couplage 36 Helping Groups Work with Software Example: Quantum Chemistry Some Common Situations: n Many (geographically distributed) developers creating a large software system n n n Integrated state-of-the-art optimization technology into two quantum chemistry packages to explore effectiveness in chemistry applications Schematic of CCA-based Geographically distributed molecular structure determination quantum chemistry application. expertise: n Hard to coordinate, different parts of the software don't work together as required Groups of developers with different specialties Forming communities to standardize interfaces or share code n How CCA Can Help: n Components are natural units for n n n n 11/12/2013 n n n Expressing software architecture Individuals or small groups to develop Encapsulating particular expertise Effective collaboration with minimal face-to-face interaction n Some component models (including CCA) provide tools to help you think about the interface separately from the implementation 172 California - chemistry Illinois - optimization Washington – chemistry, parallel data management 11/12/2013 IS342 - Couplage de Codes Components based on: MPQC, NWChem (quantum chem.), TAO (optimization), Global Arrays, PETSc (parallel linear algebra) CCA tools used: Babel, Ccaffeine, and ccafe-gui Languages: C, C++, F77, Python 173 de Codes IS342 - Couplage Couplage via un Cache de données Idée utiliser le format des écritures du code pour échanger entre deux codes via un espace de stockage. Distributed Data Hub Finite Volume Structural Mechanics COUPLAGE VIA UN CACHE DE DONNÉES Global Monitor Small Scale Analysis Injection Flow Analysis Runtime Visualization 11/12/2013 IS342 - Couplage de Codes 174 11/12/2013 IS342 - Couplage de Codes 175 37 Couplage via un Cache de données n Plate-forme n n n Qu'est que HDF5? n Network Distributed Global Memory (NDGM) … n n Format de données standardisé n n n n Format de fichier pour des données scientifiques n NetCDF (network Common Data Form) http://www.unidata.ucar.edu/software/netcdf/ HDF5 (Hierarchical Data Format) http://www.hdfgroup.org/HDF5 CDF (Common Data Format) http://cdf.gsfc.nasa.gov/ … n Logiciel pour accéder à des données scientifiques n n n n n 11/12/2013 176 IS342 - Couplage de Codes Bibliothèque flexible I/O (parallèle, distant, etc.) Un stockage efficace Disponible sur presque toutes les plates-formes C, F90, C++ , Java APIs Outils(HDFView, utilitaires) 177 11/12/2013 Exemple de fichier HDF5 IS342 - Couplage de Codes Fichier HDF5 “/” (root) n n “/foo” 3-D array Pour stocker et organiser tous types de données Pour partager des données, pour porter des fichiers d'une plateforme à une autre Pour dépasser une limite sur le nombre et la taille des objets dans un fichier Fichier HDF5– container pour stocker des données scientifiques Objets principaux n n lat | lon | temp ----|-----|----12 | 23 | 3.1 15 | 24 | 4.2 17 | 21 | 3.6 n palette Moyens Additionels pour organiser les données n n Table Groups Datasets n Attributes Sharable objects Storage and access properties Raster image Raster image 11/12/2013 IS342 - Couplage de Codes 2-D array 178 179 11/12/2013 IS342 - Couplage de Codes 38 Les composants Dataset Exemple Matrice A(7,4,5) HDF5 Dataset n n n n Metadata HDF5 dataset – data array and metadata Data array Dataspace ordered collection of identically typed data items distinguished by their indices n n n Dataspace – rank, dimensions, other spatial info about dataset Datatype Attribute list – user-defined metadata Special storage options – how array is organized and stored in the file 180 11/12/2013 n n n 182 11/12/2013 Dimensions 3 Dim_0 = 7 Dim_1 = 4 Dim_2 = 5 Datatype IEEE 32-bit float Attributes Storage info Time = 32.4 Chunked Pressure = 987 Compressed Temp = 56 11/12/2013 IS342 - Couplage de Codes 181 IS342 - Couplage de Codes HDF5 objects are identified and located by their pathnames Groups n Rank Metadata n Data Group – a mechanism for describing collections of related objects Every file starts with a root group Can have attributes Similar to UNIX directories, but cycles are allowed IS342 - Couplage de Codes “/” / (root) /x /foo /foo/temp /foo/bar/temp 183 11/12/2013 foo temp “/” x Bar temp IS342 - Couplage de Codes 39 Groups & members of groups can be shared “/” tom P harry dick R P HDF5 I/O Library /tom/P /dick/R /harry/P 184 11/12/2013 IS342 - Couplage de Codes Structure of HDF5 Library Structure of HDF5 Library Object API (C, Fortran 90, Java, C++) • Specify objects and transformation and storage properties • Invoke data movement operations and data transformations Applications Object API Library internals Library internals Virtual file I/O Virtual file I/O (C only) File or other “storage” 187 11/12/2013 IS342 - Couplage de Codes (C) • Performs data transformations and other prep for I/O • Configurable transformations (compression, etc.) • Perform byte-stream I/O operations (open/close, read/write, seek) • User-implementable I/O (stdio, network, memory, etc.) 188 11/12/2013 IS342 - Couplage de Codes 40 Virtual file I/O layer n n NDGM Développé par J. Clarke (US Army Research laboratory) A public API for writing I/O drivers Allows HDF5 to interface to disk, the network, memory, or a userdefined device n n n Grand buffer virtuel (mémoire locale ou distante, disque, …) Lire ou écrire des données, Virtual file I/O drivers" File Family" Sec2" MPI I/O" Le concept est semblable à une DSM ou mémoire virtuelle distribuée Transferts de données sont fait via une API Programmation comme pour la mémoire partagée Memory" Network" “Storage”" File" File Family" 189 11/12/2013 Memory" Network" 11/12/2013 IS342 - Couplage de Codes 190 IS342 - Couplage de Codes Un exemple de configuration HPC platform / cluster Simulation Clients VectorPut VectorGet Put Get HDF5 Switch Optional Disk Array Barrière Sémaphore NDGM/DSM client HDF5 0 10M 30M 50M Vis Cluster ParaView Serveurs espace d'adressage local du processus 11/12/2013 Système à mémoire partagée Serveur de fichiers Stockage physique des données IS342 - Couplage de Codes 191 11/12/2013 IS342 - Couplage de Codes 192 41 Mesh-based parallel Code Coupling Interface Coupleur générique pour les simulations multi-physiques Grille (structure) - Maillage (CFD) Couplage surfacique et volumique Trois composants Interface utilisateur : configurer le couplage et lancer la simulation Code « adapter » : pour adapter des codes commerciaux via leurs APIs sans changer les sources. Server de couplage : environnement, système de communication entre les codes, le calcul du voisinage, interpolation n n EXEMPLES DE COUPLEURS n Beaucoup de codes commerciaux (18 ) : Abaqus, Ansys, OpenFoam, Samcef …. 11/12/2013 IS342 - Couplage de Codes 193 11/12/2013 MpCCI : architecture IS342 - Couplage de Codes 194 MpCCI : intégration du code (1) Processus de couplage : envoyer/recevoir des données définies sur un maillage Maillage : échanger des données entre deux maillages différents n n n n Nombre de nœuds, d'éléments, type des données Nœuds : identifiant, coordonnées Eléments : identifiant, type, nœuds Grandeurs physiques n n n n Accès en lecture des données Gestion de l'allocation mémoire des données reçues Méthode pour affecter les données au maillage local Itération en temps n n n 11/12/2013 IS342 - Couplage de Codes 195 11/12/2013 Accès en lecture des données Gestion de l'allocation mémoire des données reçues IS342 - Couplage de Codes 196 42 MpCCI : intégration du code (2) MpCCI : intégration du code (3) Que doit-on mettre dans le code ? Deux parties : n n Initialisation et terminaison Étape de transferts n Intégration dans la GUI n 11/12/2013 IS342 - Couplage de Codes 197 11/12/2013 MpCCI : intégration du code (4) n Fichiers de configuration : propriétés du code, où lire les fichiers d'input, lancement du code, … IS342 - Couplage de Codes 198 MpCCI : exemple Code « adapter » = plugin dans le code de simulation n Fonctions du driver : n Gestionnaire du couplage Interface avec les données du code n 11/12/2013 Fonctions pour communiquer entre le code et le server MpCCI IS342 - Couplage de Codes 199 11/12/2013 IS342 - Couplage de Codes 200 43 n 11/12/2013 IS342 - Couplage de Codes 201 11/12/2013 202 IS342 - Couplage de Codes Caractéristiques du coupleur PALM Coupleurs classiques Le coupleur Coupleur PALM Couplage statique Couplage dynamique condition • Bref historique • Caractéristiques du coupleur • Quelques applications Code1 Code2 temps Code1 Boucle Code2 Code4 Code3 Les deux codes de calcul sont lancés en début de simulation et se terminent ensemble à la fin de l'application Exemple : couplage Océan/ Atmosphère pour le climat 11/12/2013 Lancement parallèle ou séquentiel (chainage) Lancement en boucle ou sous conditions Description d'algorithmes complexes Gestion dynamique des ressources (processeurs et mémoire) IS342 - Couplage de Codes 205 44 Lancement de processus Lancement de processus En dessinant des branches on fait directement du parallélisme de tâche. Dans l'IHM Branches parallèles Structures de contrôle Régions Fortran • Le schéma PrePALM est converti en un arbre pour le driver de PALM. • Le premier rôle du driver est de schéduler cet arbre pour lancer les composants en fonction des ressources, comme le nombre de processus max. • Le mécanisme mis en œuvre pour lancer les composants et discuter avec eux est le Spawn MPI-2 ou le mécanisme client/serveur MPI-2. • Les structures de contrôle, les régions fortran, sont exécutées par le driver de PALM. Chaque composant est un exécutable MPI indépendant. Les blocs : optimisation si les composants sont définis comme des subroutines Les composants peuvent être assemblés dans un seul exécutable. Les blocs contiennent alors les structures de contrôle Mais : • Moins de Spawn • Partage de mémoire globale pour les composants dans un bloc, assemblage de subroutines 11/12/2013 - Couplage de pour Codes Interface graphique trèsIS342 intuitive l'utilisateur 206 à Pas de spécification concernant l'unité réceptrice ou émettrice des données produites ou consommées dans les codes de calcul Deux niveaux de parallélisme • Parallélisme de tâches = branches de calcul • Parallélisme des composants : gestion des codes parallèles, le nombre de proc de chaque composant est défini dans PrePALM. • Multitasking (MPI) et multithreading (OpenMP) supporté pour les composants PALM repose entièrement sur MPI, version complète avec MPI-2 ou version dégradée avec MPI-1, choix à l'installation à Communications effectives dans l'interface graphique CALL PALM_Put (…) Consommation de données : CLIENT • Avantage de MPI : PALM a pu être déployé sur tout type de machine, NEC, CRAY, IBM, SGI, BLUE_GENE L, Linux, Mac OS X, Windows via Cygwin. IS342 - Couplage de Codes 207 Production de données : SERVEUR • Machines visées : calculateurs parallèles, clusters. Donc plutôt un environnement homogène • Environnement hétérogène : fonctionnalités par sockets IP, unités miroir. IS342 - Couplage de Codes Schéma de communication « end point » Lancement de processus 11/12/2013 11/12/2013 CALL PALM_Get (…) 208 45 PALM_Put PALM_Put/Get Que se passe t'il derrière un appel à PALM_Put ? • rien si aucune communication n'est décrite • un envoi direct MPI si le récepteur est déjà en attente de données • un stockage dans une mémoire temporaire (driver de PALM) si le récepteur n'est pas encore là pour recevoir le message • un stockage explicite vers une mémoire permanente si l'utilisateur l'a demandé. • au choix de l'utilisateur, une écriture dans un fichier NETCDF Le PALM_Put n'est jamais bloquant pour répondre à ceci : • indépendance totale des codes à coupler, ce qui impose que l'ordre de mise à disposition des champs de couplage est quelconque • on libère le code de calcul le plus tôt possible, une fois les données produites pour qu'il puisse continuer ses calculs • on veut pouvoir envoyer de l'information entre deux processus qui ne tournent pas forcément en même temps, exemple du chaînage de code 11/12/2013 • un même PALM_Put peut avoir plusieurs destinataires IS342 - Couplage de Codes Les différentes instances d'un même tableau sont gérées par PALM via un champ time ou tag à l'envoi ou à la réception. • ceci autorise l'interpolation temporelle des champs par le coupleur • et permet de coupler à des fréquences différentes, choisies par l'utilisateur dans l'interface graphique, sans intervention dans le code : PALM_Put fait à tous les instants, mais couplage fait à des instant particuliers Que se passe t'il derrière un appel à PALM_Get ? 210 11/12/2013 • rien si aucune communication n'est décrite, mais code d'erreur retourné • une attente puis un Recv MPI si la donnée n'est pas encore produite. • une récupération dans une mémoire temporaire ou permanente si la donnée y est stockée • l'appel d'une fonction d'initialisation de la donnée, si choisi dans l'IHM • une lecture depuis un fichier (NETCDF) IS342 - Couplage de Codes 211 Les objets distribués communications Pour les unités parallèles les objets sont décrits de manière globale Rôle du driver de PALM Un distributeur permet de définir comment l'objet est réparti sur les différents processeurs • répondre à toutes les requêtes Put/Get • gérer la mémoire pour le stockage temporaire (implicite mailbuff) ou explicite (buffer) des données • gérer des esclaves mémoire si besoin • exécuter des opérations élémentaires sur les données • exécuter certains composants, si demandé • faire l'interpolation temporelle • gérer les processus de synchronisation des codes 11/12/2013 IS342 - Couplage de Codes 212 0 1 2 3 Chaque processeur fait PALM_Put de son domaine Un distributeur est associé à chaque objet 0 1 2 3 4 5 6 7 8 11/12/2013 9 A la communication PALM fait la redistribution des objets selon les unités et optimise le nombre de communications MPI IS342 - Couplage de Codes 213 46 Boîte à outils Le futur de PALM Blas, lapack, scalapack Opérations matrices vecteurs Algèbre linéaire Cgplus Lbfgs M1qn3 … Minimiseurs n Passage de PALM en Open-Source n Collaboration avec l'ONERA sur les aspects géométriques n Collaboration avec le KIT sur les aspects équilibrage dynamique de processus Grille atmosphère Grille océan Interpolateurs 11/12/2013 IS342 - Couplage de Codes 214 11/12/2013 ADOMOCA VALENTINA IS342 - Couplage de Codes 215 Optimisation de forme MIPTO (INTELLECT D.M.) Florent Duchaine CERFACS - TURBOMECA 11/12/2013 IS342 - Couplage de Codes 216 11/12/2013 IS342 - Couplage de Codes 217 47 PALM dans le projet ANR corayl Couplage combustion et calcul radiatif Prévision de la température des chambres de combustion Eric Mercier (SNECMA Moteur), Florent Duchaine CERFACS EM2C (Ecole Centrale Paris) LGPSD (Ecole des mines d'Albi) Itération 1 Thèse Jorge Amaya chambre de combustion très hautes températures. phénomènes radiatifs prépondérants. calcul massivement parallèle. DOMASIUM AVBP Résolution des équations réactives de Navier-Stokes filtrées. Température. Espèces Deux niveaux de parallélisme. Résolution des équations radiatives en géométrie complexe Indépendance des codes de calcul Itération 3 Sources d'énergie. Flux thermiques aux parois. 0.04 0.03 0.02 Y (m) 0.01 0 −0.01 −0.02 −0.03 −0.04 Code parallèle Code CFD - LES 11/12/2013 IS342 - Couplage de Codes 218 Schéma de couplage: n itérations CFD par itération de rayonnement 11/12/2013 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 X (m) 0.1 0.11 Code parallèle Code de rayonnement −7 −6 −5 −4 −3 −2 −1 0 1 5 x 10 IS342 - Couplage de Codes 219 Informations complémentaires Quelques applications PALM est portable sur la plupart des plates-formes (PC linux, station de travail, supercalculateurs). SIMBIO : Une plate-forme distribuée pour la simulation moléculaire complexe Site web : http://www.cerfacs.fr/~palm Multi-échelles : PUPIL et Libmultiscale Adresse email :[email protected] L'environnement EPSN : Pilotage de Simulations Numériques distribuées Climatologie : OASIS, … 11/12/2013 IS342 - Couplage de Codes 220 48 Bretherton Diagram n 11/12/2013 IS342 - Couplage de Codes 222 49