Title: Environnements logiciels pour la simulation num
1Environnements logiciels pour la simulation
numérique distribuée
- Thierry Priol (IRISA/INRIA)
Metacomputing
2Simulation à grande échelle
- La façon dont les sociétés collaborent évolue
- La compétence scientifique et technique se
verticalise - La conception dun système physique nécessite
limplication de plusieurs acteurs industriels
experts sur un domaine - Utilisation de plus en plus importante du
prototypage virtuel (par la simulation numérique)
imposée par des règles de sécurité de plus en
plus strictes (certification, compatibilité
électromagnétique, ) - Besoins daméliorer la qualité de la simulation
- Simulation multi-physiques par couplage de
plusieurs codes de calcul
3Exemple dapplications de simulation
multi-physiques
Même physique mais sur deux objets physiques
simulés à deux endroits différents
Electromagnétisme
Antenne
Avion
Plusieurs physiques nécessitant plusieurs codes
de simulation
Conception de pneus
Déformation de structure
Déformation de structure
Thermique
Réduction de bruit
Dynamique
Optique
4Emergence dun nouveau domaineLa simulation
numérique distribuée
- Utilisation simultanée de plusieurs technologies
- Parallélisme
- Nécessité dutiliser des calculateurs
haute-performance - Machine vectorielle, CC-NUMA, SMP, Grappe)
- Distribution
- Prise en compte de la distribution géographique
des codes imposée pour des raisons de
confidentialité ou plus simplement par des
contraintes de disponibilité de ressources - Visualisation
- La visualisation doit faire partie intégrante de
la simulation - Exploitation et interprétation coopérative des
résultats de la simulation multi-physique
5Support à la simulation numérique distribuée
WAN
Middleware
Visualisation IRISA
Code parallèle de simulation
Application de simulation numérique distribuée
6Extension des bibliothèques de communication pour
le réparti
- Passerelle de communication entre bibliothèques
- PACX, NEXUS, MPI_Connect MPI ó MPI
- PLUS MPI ó PVM
- Avantages
- peu de modifications des codes
- Inconvénients
- pas de hiérarchisation des communications
- applications de plus en plus complexes
- transfert de contrôle à programmer
- performance !!!
MPI_Send
MPI_recv()
PACX, NEXUS MPI_Connect INTERNET
7Objets distribués
- Utilisation du concept dobjet distribué (CORBA,
Java) - Programmation par objet à travers un réseau de
façon transparente - Vers une programmation par composants logiciels
- Avantages
- Réduire la complexité par une approche
hiérarchique - Inconvénients
- Performance des courtiers dobjets
- Nécessite des extensions pour supporter des
objets parallèles
interface MatrixOperations const long SIZE
100 typedef double Vector SIZE typedef
double Matrix SIZE SIZE void multiply(in
Matrix A, in Vector B, out Vector
C )
Serveur
Compilateur IDL
Client
Implémentation de l objet
Invocation de l objet
Squelette IDL
Talon IDL
BOA
Courtier dobjets (ORB)
8Pourquoi CORBA pour la simulation numérique ?
- CORBA commence à être utilisé dans les outils de
CAO - Couplage de la simulation avec les outils de CAO
dans un futur proche - De nombreuses implémentations de CORBA sont
disponibles - Produits commerciaux, Open Source, ...
- Interopérabilité assurée entre les différentes
implémentations - Interfaçage avec Java (grâce au protocole IIOP)
- CORBA permet de réduire le temps passé au
développement des systèmes distribués - Relativement simple à utiliser
- Contre les idées reçus...
- CORBA nest pas très performant vrai pour la
latence, faux pour le débit (on peut saturer une
interface Fast-ethernet ou ATM 155 Mbit/s)
9Encapsulation de codes parallèles au sein
dobjets CORBA
- Approche Maître/Esclave
- Un des processus dun code SPMD agit comme un
maître alors que les autres processus sont des
esclaves - Le processus maître contrôle lexécution des
autres processus au travers de MPI - Inconvénient
- Une approche pas très  scalableÂ
- Nécessite des modifications des codes Ã
encapsuler - Avantage
- Ne nécessite pas de modification à CORBA
Code MPI encapsulé
Couche de communication MPI
SPMD code
Processus MPI maître
Client
Squel.
Processus MPI esclaves
BOA
Talon
Courtier dobjet s (ORB)
10Concept dobjet CORBA parallèle
- Objectif
- Encapsuler un code parallèle au sein dun
composant CORBA - Assurer la  scalabilité des interactions entre
objets CORBA parallèles
Supercalculateur
Objet CORBA parallèle
interface2n MatrixOperations const long
SIZE 100 typedef double VectorSIZE
typedef double MatrixSIZESIZE void
multiply(in distBLOCK Matrix A,
in Vector B, out distBLOCK
Vector C ) void skal(in distBLOCK Vector C,
out csum double skal)
Spécification IDL-Etendu pour objet CORBA
parallèle
MPI Communication layer
Machine A
Object
Object
Object
Object
impl
.
impl
.
impl
.
impl
.
SPMD
SPMD
SPMD
SPMD
code
code
code
code
Client
Compilateur IDL-Etendu
Squel.
.
Qquel.
Squel.
.
Squel.
.
Talon
PBOA
PBOA
PBOA
PBOA
Courtier d objets (ORB)
- Fait lobjet dune contribution à un RFI de l OMG
11Avantage de lapproche objet CORBA parallèle
Machine B Application MPI
Machine A Application MPI
- Extension MPI
- Communication entre deux machines via des nœuds
de communication (goulot détranglement!) - La bande passante entre les deux machines est aux
maximum celle associée à un nœud - Objet CORBA parallèle
- Communication entre objets appartenant aux
collections - Permet de saturer des réseaux à très haut-débits
qui assure linterconnexion des machines
MPI_Send
MPI_recv()
PACX
Application MPI
Application MPI
Objet CORBA parallèle
Parallel CORBA Object
Couche de communication MPI
Couche de communication MPI
...
Code SPMD
Code SPMD
Code SPMD
...
Squel.
.
Squel.
.
Squel.
.
...
Talon
Talon
Talon
PBOA
PBOA
PBOA
12IDL-Etendu
Héritage interdit
- Héritage dinterfaces
- Autorisé mais avec des restrictions
- Distribution de données
- Plusieurs modes proches de ceux du langage HPF
- BLOCK, BLOCK( taille ), CYLIC, CYLIC( taille )
- Autorisée sur des tableaux ou des séquences
- Opérations de réduction
- Plusieurs opérateurs proches de ceux de MPI
- min, max, addition, multiplication, logique, bit.
- Seulement sur des types scalaires
13Problèmes liés à la génération de codes
(talonssquelettes)
- Nouveau type pour la distribution de données
 distributed array - Le volume de données à transférer nest connu
quà lexécution - Extension des séquences CORBA
- Le mode de distribution de donnée est enregistré
dans la structure dun  distributed array - Génération du squelette
- Permettre laccès au mode de distribution pour
chaque argument dune opération - Génération du talon
- Distribution et récupération des données
- Invocation multiples
14Génération des talons
... pco-gtmultiply( A, B, C ) ...
client
Objet CORBA parallèle
void multiply( const Matrix A,
const Vector B, Vector C )
Couche de communication MPI
SPMD code
SPMD code
Talon
void multiply( const Matrix_DArray A,
const Vector_DArray B,
Vector_DArray C )
Squel.
Squel.
void multiply( const Matrix_Seq A,
const Vector_Seq B, Vector_Seq C
)
PBOA
PBOA
CORBA ORB
15Objet CORBA parallèle comme client
Client parallèle
Serveur séquentiel
- Génération du talon lorsque le client est
lui-même un objet CORBA parallèle - Association des références aux objets du serveur
aux objets du client - Redistribution des données au sein du talon afin
de respecter le mode de distribution du coté du
serveur
Objet CORBA parallèle
Couche de communication MPI
Object impl.
Code SPMD
Code SPMD
Code SPMD
Squel.
Talon
Talon
Talon
BOA
Courtier dobjets (ORB)
Serveur parallèle
Objet CORBA parallèle
Couche de communication MPI
Code SPMD
Code SPMD
Code SPMD
Squel..
Squel..
Squel..
PBOA
PBOA
PBOA
Courtier dobjets (ORB)
16Service de nommage
- Tel que défini par lOMG
- Offre des méthodes pour référencer un objet par
un nom symbolique - Associe un nom symbolique avec une référence à un
objet et une seule - Avec les objets CORBA parallèles
- Associe un nom symbolique à une collection de
références dobjets - Contraintes dimplementations
- Utilisation du service de nommage de CORBA sans
modifier linterface existante - orb-gtresolve_initial_reference(NameService)
- Solution proposée
- Ajouter de nouvelles opérations à linterface du
service de nommage.
17Extensions au service de nommage
module CosNaming ... interface
NamingContext ... typedef
sequenceltObjectgt ObjectCollection void
join_collection( in Name n, in Object obj )
void leave_collection( in Name n, in Object obj
) ObjectCollection resolve_collection( in
Name n )
Extension de la spécification IDL du CosNaming
Exemple
Coté serveur
MatrixOps_impl obj new MatrixOps_impl() Naming
Service-gtjoin_collection( Matrix_name, obj
) ... NamingService-gtleave_collection(
Matrix_name, obj )
Coté client
objs NamingService-gtresolve_collection(
Matrix_name ) srv MatrixOps_narrow( objs
) ... srv-gtMatVect( A, B, C )
18Mise en œuvre des objets CORBA parallèles
- Utilisation de MICO
- Bibliothèques spécifiques
- Nouvelles classe dobjet objet CORBA parallèle
- Distribution de données (NEC, DALIB)
- Compilateur IDL-Etendu
- Modifications de lanalyseur et du parseur
- Génération de codes
- Plate-forme expérimentale
- Grappe de PC Nec Cenju-4
Grappe PC Gigabit Ethernet
Nec Cenju4
Grappe PC -SCI
19Evaluation de performance
Code 2
Code 1
Couche de cimmunication MPI
Couche de communication MPI
Ordonnanceur
- Approche maître/esclaves
- Transfert de données par fichiers
- fichier ASCII
- fichier XDR
- Transfert de données par le courtier dobjets
- Objet CORBA parallèle
- Transfert de données par le courtier dobjets
Client
Processus MPI maître
Processus MPI maître
Talon 2
Talon 1
Processus MPI esclaves
Processus MPI esclaves
Courtier d objets (ORB)
Code 1
Code 2
Objet CORBA parallèle
Objet CORBA parallèle
Couche de communication MPI
Couche de communication MPI
...
...
...
...
...
...
Courtier dobjets (ORB)
...
Ordonnanceur parallèle
Couche de communication MPI
20Evaluation de performance
256x256
512 x 512
ms
ms
4000
16000
3500
14000
12000
3000
10000
2500
8000
2000
6000
1500
4000
1000
2000
500
0
0
ASCII
1
2
4
8
16
1
2
4
8
16
XDR
Nombre dobjets appartenant à la collection
Nombre d'objets appartenant à la collection
ORB
PCO
1024 x 1024
2048 x 2048
ms
ms
70000
300000
60000
250000
50000
200000
40000
150000
30000
100000
20000
50000
10000
0
0
1
2
4
8
16
1
2
4
8
16
Nombre dobjets appartenant à la collection
Nombre dobjets appartenant à la collection
21Couplage de codes avec le concept dobjets CORBA
parallèle
- Couplage de deux instances dun même code de
simulation dans le domaine de lélectromagnétisme
- Applet Java pour contrôler lexécution du code
- Réalisé en quelques jours (sauf applet Java.)
22 un environnement logiciel fondé
sur CORBA
- Conception dun environnement logiciel pour la
simulation numérique distribuée - Développement dun exécutif fondé sur des
standards existants (CORBA, Java, MPI) - Fournir un environnement de travail coopératif
afin de permettre à plusieurs experts danalyser
les résultats de la simulation - Permettre la visualisation en temps réel par
rapport à la simulation numérique. - Offrir des techniques dencapsulation de codes
pour CORBA
LAN
LAN
PCs Stations de travail
Grappes
WAN
Machine parallèle
23Environnements logiciels basés sur CORBA pour la
simulation numérique
- Projets Esprit RD
- JACO3,
- JULIUS,
- DECISION,
- Projets nationaux
- TENT (DLR - Germany)
- ILIADE (EDF - France)
- VPCE (Cardiff Univ. - UK),
- Projets industriels
- Atelier CORBA pour la conception aérodynamique
des appareils AIRBUS
24Architecture logicielle
- Un ensemble de services CORBA pour supporter
lexécution parallèle et distribuée
Environnement JACO3
Application Control Panel
Activation Service
User Session Service
Visualisation tools
JACO3 Software Bus
Information Repository Service
Controls
Application components
Code coupling tool
Application scheduler
Computing Resource Allocation Service
Data Repository Service
Applications
25Architecture du DRS
- Un ensemble dobjets CORBA pour permettre le
transfert de fichier entre plusieurs systèmes de
gestion de fichiers - Transfert de fichiers à la demande (avec FTP, FTP
Kerberos) - Un fichier est associé à un propriétaire, un nom
unique et un type - Conversion de fichiers réalisée à laide de
 plug-ins (en utilisant des scripts PERL) - Le service principal pour la production de
données pour les outils de visualisation
IIOP (Register)
IIOP (event)
IIOP (eventdata)
IIOP (Register)
IIOP
IIOP
IIOP
FTP
26Encapsulations de code de simulation
- Encapsulation de codes commerciaux ou développés
en interne - Le code source nest pas disponible
- Pas de correspondances entre le langage IDL et
les langages de programmation (Fortran, ) - Solution conception dun  wrapper générique
fondésur TCL et Expect - Encapsulation de codes parallèles
- Couplage efficaces entre codes parallèles
- Utilisation du concept dobjet CORBA parallèle
27Encapsulation de codes binaires
- Fondé sur l utilisation d un objet C
générique (wrapper) - Linterface avec lobjet  wrapper est spécifié
avec le langage IDL - La spécilisation est effectué par un script de
configuration (TCL/Expect) - Un client peut invoquer des opération sur lobjet
 wrapper comme tout autre objet CORBA - Lutilisation du langage TCL offre une grande
flexibilité - La bibliothèque TCL Expect permet de décrire
facilement les interactions avec le code de
simulation
Code de simulation
Interpréteur TCL
Script de configuration
Code Binaire
invocation
Client
réponse
Objet  wrapperÂ
Objet serveur
Courtier dobjets (ORB)
28Conclusion
- La simulation numérique distribuée nest pas une
nouvelle mode mais correspond à un réel besoin - Académique scientifique
- explorer de nouveaux domaines grâce à la
simulation numérique - Industriel économique
- nouveaux modèles économiques (verticalisation des
métiers, fusion, ) - Recherches dans ce domaine
- Système (communicaiton, répertoire de données,
sécurité, gestion de ressources, ) - Modèles de programmation
- Concept dobjet CORBA parallèle des problèmes Ã
résoudre - Localisation de la distribution des données (chez
le client ou le serveur ?) - Modèle de composants pour la construction
dapplications - Expérimentations (ARC couplage, VTHD, )