Upload
sabine
View
45
Download
5
Embed Size (px)
DESCRIPTION
Environnements logiciels pour la simulation numérique distribuée *. Thierry Priol (IRISA/INRIA). * Metacomputing. Simulation à grande échelle. La façon dont les sociétés collaborent évolue: La compétence scientifique et technique se «verticalise» - PowerPoint PPT Presentation
Citation preview
Environnements logiciels pour la
simulation numérique distribuée *
Thierry Priol (IRISA/INRIA)
* Metacomputing
Simulation à grande échelle
La façon dont les sociétés collaborent évolue: La compétence scientifique et technique se «verticalise» La conception d’un système physique nécessite l’implication 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 d’améliorer la qualité de la simulation Simulation multi-physiques par couplage de plusieurs codes de calcul
Exemple d’applications de simulation multi-physiques
Même physique mais sur deux objets physiques simulés à deux endroits différents
Plusieurs physiques nécessitant plusieurs codes de simulation
Antenne Avion
Déformation de structure
Thermique
Optique
Dynamique
Electromagnétisme
Déformation de structure
Réduction de bruit
Conception de pneus
Emergence d’un nouveau domaine:La simulation numérique distribuée
Utilisation simultanée de plusieurs technologies : Parallélisme
• Nécessité d’utiliser 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
VisualisationIRISA
Middleware
Code vectorielde simulation
processus processusprocessus
processusprocessusprocessus
Code parallèlede simulation
processus
Code devisualisation
Application de simulation numérique distribuée
Support à la simulation numérique distribuée
SP2 CINESO2000
CCH
C90IDRIS
Code parallèlede simulation
processusprocessus
processusprocessusprocessus
WAN
Extension 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
Application MPI
PLUS +INTERNET
pvm_recv()
Application PVM
Application MPI
PACX, NEXUSMPI_Connect +
INTERNET
MPI_recv()
Application MPI
MPI_Send
Objets distribués
Utilisation du concept d’objet 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 d’objets 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
Client
Talon IDL
Invocation de l ’objet
Courtier d’objets (ORB)
CompilateurIDL
BOA
Squelette IDL
Implémentationde l ’objet
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 n’est 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)
Pourquoi CORBA pour la simulation numérique ?
Encapsulation de codes parallèles au sein d’objets CORBA
Approche Maître/Esclave 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
Inconvénient Une approche pas très « scalable » Nécessite des modifications des
codes à encapsuler
Avantage Ne nécessite pas de modification à
CORBA
CodeSPMD
Couche de communication MPI
Code MPI encapsulé
Processus MPI esclaves
Pro
cess
us
MP
I m
aîtr
e
CodeSPMD
CodeSPMD
CodeSPMD
CodeSPMD
CodeSPMD
SPMDcode
Squel.
BOATalon
Client
Courtier d’objet s (ORB)
Concept d’objet CORBA parallèle
Objectif Encapsuler un code parallèle au sein d’un composant CORBA Assurer la « scalabilité » des interactions entre objets CORBA parallèles
Courtier d ’objets (ORB)
Talon
Client
SpécificationIDL-Etendupour objet
CORBA parallèle
CompilateurIDL-Etendu
Machine AMPI Communication layer
Squel..
PBOA
Objectimpl.SPMDcode
Qquel.
PBOA
Objectimpl.SPMDcode
Squel..
PBOA
Objectimpl.SPMDcode
Squel..
PBOA
Objectimpl.SPMDcode
Supercalculateur
Objet CORBA parallèle
interface[*:2*n] MatrixOperations {
const long SIZE = 100;
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);
};
Fait l’objet d’une contribution à un RFI de l ’OMG
Avantage de l’approche objet CORBA parallèle
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 l’interconnexion des machines
PACX
MPI_recv()
Machine BApplication MPI
Machine AApplication MPI
MPI_Send
Courtier d’objets (ORB)
Couche de communication MPI
Squel..
PBOA
Impl.Objet
CodeSPMD
Objet CORBA parallèle
Squel..
PBOA
Squel..
PBOA
Application MPI
...
...
...
Couche de communication MPI
Parallel CORBA Object
CodeSPMD
Talon
CodeSPMD
Talon
CodeSPMD
Talon
Application MPI
Impl.Objet
CodeSPMD
Impl.Objet
CodeSPMD
IDL-Etendu
Héritage d’interfaces 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
interface[ 2 ] VectorOperations { ... };
interface[ * ] MatrixOperations : VectorOperations { ... };
Héritage interdit
Problèmes liés à la génération de codes (talons+squelettes)
Nouveau type pour la distribution de données: « distributed array » Le volume de données à transférer n’est connu qu’à l’exécution Extension des séquences CORBA Le mode de distribution de donnée est enregistré dans la structure d’un
« distributed array »
Génération du squelette Permettre l’accès au mode de distribution pour chaque argument d’une
opération
Génération du talon Distribution et récupération des données Invocation multiples
Génération des talons
void multiply(in dist[BLOCK][*] Matrix A,
in Vector B,
out dist[BLOCK] Vector C );
Tal
on
...pco->multiply( A, B, C );...cl
ien
t
Couche decommunication
MPI
Objet CORBA parallèle
SPMDcode
Squel.
PBOA
SPMDcode
Squel.
PBOA
CORBA ORB
A
BC
#2
C
A
B
Requests
A
BC
#1
void multiply( const Matrix A, const Vector B, Vector C );
void multiply( const Matrix_Seq A, const Vector_Seq B, Vector_Seq C );
void multiply( const Matrix_DArray A, const Vector_DArray B, Vector_DArray C );
Objet CORBA parallèle comme client
Courtier d’objets (ORB)
Couche de communication MPI
Objet CORBA parallèle
CodeSPMD
Talon
CodeSPMD
Talon
CodeSPMD
Talon
Squel.
BOA
Objectimpl.
Serveur séquentiel
Client parallèle
Couche de communication MPI
Objet CORBA parallèle
CodeSPMD
Squel..
PBOA
CodeSPMD
Squel..
PBOA
CodeSPMD
Squel..
PBOA
Courtier d’objets (ORB)
Serveur parallèle
Couche de communication MPI
Objet CORBA parallèle
CodeSPMD
Talon
CodeSPMD
Talon
CodeSPMD
Talon
Client parallèle
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
Service de nommage
Tel que défini par l’OMG 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 d’objets
Contraintes d’implementations Utilisation du service de nommage de CORBA sans modifier l’interface
existante:orb->resolve_initial_reference(NameService);
Solution proposée Ajouter de nouvelles opérations à l’interface du service de nommage.
Extensions au service de nommagemodule CosNaming { ... interface NamingContext { ... typedef sequence<Object> 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 ); };};
MatrixOps_impl* obj = new MatrixOps_impl();NamingService->join_collection( Matrix_name, obj );...NamingService->leave_collection( Matrix_name, obj );
objs = NamingService->resolve_collection( Matrix_name );srv = MatrixOps::_narrow( objs );...srv->MatVect( A, B, C );
Coté serveur
Coté client
Extensionde la spécificationIDL du CosNaming
Exemple:
Mise en œuvre des objets CORBA parallèles
Utilisation de MICO Bibliothèques spécifiques
Nouvelles classe d’objet: objet CORBA parallèle
Distribution de données (NEC, DALIB)
Compilateur IDL-Etendu Modifications de l’analyseur et du
parseur Génération de codes
Plate-forme expérimentale Grappe de PC + Nec Cenju-4
Nec Cenju4Grappe PC
Gigabit Ethernet Grappe PC -SCI
Evaluation de performance
Approche maître/esclaves Transfert de données par
fichiers• fichier ASCII
• fichier XDR
Transfert de données par le courtier d’objets
Objet CORBA parallèle Transfert de données par le
courtier d’objets
Courtier d ’objets (ORB)
Talon 2
Client
Ordonnanceur
Couche de cimmunication MPI
Squel..2
BOA
Code 2
SPMDCodeSPMD
CodeSPMDCodeSPMD
CodeSPMDCodeSPMD
CodeCodeSPMD
Processus MPI esclavesPro
cess
us M
PI
maî
tre
Couche de communication MPI
Squel.1
BOA
Code 1
SPMDCodeSPMD
CodeSPMDCodeSPMD
CodeSPMDCodeSPMD
CodeCodeSPMD
Processus MPI esclavesPro
cess
us M
PI
maî
tre
Talon 1
CodeSPMD
CodeSPMD
Courtier d’objets (ORB)
Couche de communication MPI
Squel..
PBOA
Objectimpl.SPMDcode
Objet CORBA parallèle
Squel..
PBOA
Objectimpl.SPMDcode
Squel..
PBOA
Objectimpl.SPMDcode
Squel..
PBOA
Objectimpl.SPMDcode
Couche de communication MPI
Squel..
PBOA
Objectimpl.SPMDcode
Objet CORBA parallèle
Squel..
PBOA
Objectimpl.SPMDcode
Squel..
PBOA
Objectimpl.SPMDcode
Squel..
PBOA
Objectimpl.SPMDcode
Code 1 Code 2
...
...
...
...
...
...
Couche de communication MPI
...Client
Talon 1 Talon 2
Client
Talon 1 Talon 2
Ordonnanceurparallèle
Evaluation de performance256x256
0
5001000
15002000
2500
30003500
4000
1 2 4 8 16Nombre d'objets appartenant à la collection
ms
ASCIIXDRORBPCO
512 x 512
02000
40006000
800010000
1200014000
16000
1 2 4 8 16Nombre d’objets appartenant à la collection
ms
1024 x 1024
0
10000
20000
30000
40000
50000
60000
70000
1 2 4 8 16Nombre d’objets appartenant à la collection
ms 2048 x 2048
0
50000
100000
150000
200000
250000
300000
1 2 4 8 16Nombre d’objets appartenant à la collection
ms
Couplage de codes avec le concept d’objets CORBA parallèle
Couplage de deux instances d’un même code de simulation dans le domaine de l’électromagnétisme
Applet Java pour contrôler l’exécution du code
Réalisé en quelques jours (sauf applet Java….)
: un environnement logiciel fondé sur CORBA
Conception d’un environnement logiciel pour la simulation numérique distribuée
Développement d’un exécutif fondé sur des standards existants (CORBA, Java, MPI)
Fournir un environnement de travail coopératif afin de permettre à plusieurs experts d’analyser les résultats de la simulation
Permettre la visualisation en temps réel par rapport à la simulation numérique.
Offrir des techniques d’encapsulation de codes pour CORBA
Software bus
Code desimulation
process processusprocessusprocessusprocessusprocess
Code de simulationhaute-performance
process
Code de visualisation
PCs & Stations de
travail
Grappes
Visualisation
LAN
WAN
Machine parallèle
LAN
Environnements logiciels basés sur CORBA pour la simulation numérique
Projets Esprit R&D 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
Architecture logicielle
Un ensemble de services CORBA pour supporter l’exécution parallèle et distribuée
ActivationService
Information RepositoryService
User & SessionService
ApplicationcomponentsApplication
scheduler
Applications
Environnement JACO3
Codecoupling
tool
Visualisationtools
Controls
Application ControlPanel
Computing Resource Allocation Service
Data RepositoryService
JACO3 Software Bus
Données = FTPContrôle = CORBA IIOP
JACO3 Software bus
VisualORB
Architecture du DRS
Un ensemble d’objets 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 à l’aide de « plug-ins » (en utilisant des scripts PERL)
Le service principal pour la production de données pour les outils de visualisation
Nœud maître
LAN
LDRS
GDRS
LDRS
LDRS
FTP
IIOP
IIOP IIOP
Visualisation
IIOP(event)IIOP
(Register)
LDRSVisualisationpar le WebIIOP
(Register)
IIOP(event+data)
Encapsulations de code de simulation
Encapsulation de codes commerciaux ou développés en interne Le code source n’est pas disponible Pas de correspondances entre le langage IDL et les langages de
programmation (Fortran, …) Solution: conception d’un « wrapper » générique fondé
sur TCL et Expect
Encapsulation de codes parallèles Couplage efficaces entre codes parallèles Utilisation du concept d’objet CORBA parallèle
Encapsulation de codes binaires Fondé sur l ’utilisation d ’un objet C++ générique (wrapper)
L’interface avec l’objet « 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 l’objet « wrapper » comme tout autre objet CORBA
L’utilisation du langage TCL offre une grande flexibilité
La bibliothèque TCL Expect permet de décrire facilement les interactions avec le code de simulation
invocation
Objet « wrapper »
Interpréteur TCL
CodeBinaire
Courtier d’objets (ORB)
réponse
Script deconfiguration
Client
Code de simulation
Objet serveur
ConclusionLa simulation numérique distribuée n’est 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 d’objet 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 d’applications
• Expérimentations (ARC couplage, VTHD, …)