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

Documents pareils