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