290 likes | 417 Views
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»
E N D
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 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
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
processus processus processus processus processus processus processus processus Code parallèle de simulation Code vectoriel de simulation processus processus processus processus Code de visualisation SP2 CINES C90 IDRIS O2000 CCH Support à la simulation numérique distribuée WAN Middleware Visualisation IRISA Code parallèle de simulation Application de simulation numérique distribuée
Application PVM Application MPI Application MPI Application MPI MPI_Send pvm_recv() PLUS + INTERNET 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 MPI_recv() PACX, NEXUS MPI_Connect + INTERNET
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 Compilateur IDL Client Implémentation de l ’objet Invocation de l ’objet Squelette IDL Talon IDL BOA Courtier d’objets (ORB)
Pourquoi 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 n’est pas très performant: vrai pour la latence, fauxpour le débit (on peut saturer une interface Fast-ethernet ou ATM 155 Mbit/s)
Code SPMD Code SPMD Code SPMD Code SPMD Code SPMD Code SPMD 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 Code MPI encapsulé Couche de communication MPI SPMD code Processus MPI maître Client Squel. Processus MPI esclaves BOA Talon 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 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); }; 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 l’objet d’une contribution à un RFI de l ’OMG
Impl. Impl. Impl. Objet Objet Objet Code Code Code SPMD SPMD SPMD Courtier d’objets (ORB) Avantage de l’approche objet CORBA parallèle Machine A Application MPI Machine B 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 l’interconnexion 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
interface[ 2 ] VectorOperations { ... }; interface[ * ] MatrixOperations : VectorOperations { ... }; IDL-Etendu Héritage interdit • 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
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
void multiply(in dist[BLOCK][*] Matrix A, in Vector B, out dist[BLOCK] Vector C ); Requests A #1 A B B C C #2 A B C Génération des talons ... pco->multiply( 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
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 Client parallèle Objet CORBA parallèle Couche de communication MPI Code SPMD Code SPMD Code SPMD Talon Talon Talon Objet CORBA parallèle comme client Client parallèle Serveur séquentiel Objet CORBA parallèle Couche de communication MPI Object impl. Code SPMD Code SPMD Code SPMD Squel. Talon Talon Talon BOA Courtier d’objets (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 d’objets (ORB)
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 nommage module 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 ); }; }; Extension de la spécification IDL du CosNaming Exemple: Coté serveur MatrixOps_impl* obj = new MatrixOps_impl(); NamingService->join_collection( Matrix_name, obj ); ... NamingService->leave_collection( Matrix_name, obj ); Coté client objs = NamingService->resolve_collection( Matrix_name ); srv = MatrixOps::_narrow( objs ); ... srv->MatVect( A, B, C );
Mise en œuvre des objets CORBA parallèles • 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 • Utilisation de MICO • Bibliothèques spécifiques • Nouvelles classe d’objet: objet CORBA parallèle • Distribution de données (NEC, DALIB) Grappe PC Gigabit Ethernet Nec Cenju4 Grappe PC -SCI
Code SPMD Code SPMD SPMD Code Code SPMD Code SPMD SPMD Code SPMD Code SPMD Code SPMD Code SPMD Code SPMD Code SPMD Code SPMD Code SPMD Code SPMD Code SPMD Code Object Object Object Object Object Object Object Object Squel.1 Squel..2 impl impl impl impl impl impl impl impl . . . . . . . . SPMD SPMD SPMD SPMD SPMD SPMD SPMD SPMD code code code code code code code code BOA BOA Squel. Squel. Squel. Squel. Squel. Squel. Squel. Squel. . . . . . . . . PBOA PBOA PBOA PBOA PBOA PBOA PBOA PBOA Talon 1 Talon 2 Talon 1 Talon 2 Client Client Evaluation de performance Code 1 Code 2 Couche de communication MPI Couche de cimmunication MPI Ordonnanceur • 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 Client Processus MPI maître Processus MPI maître Talon 1 Talon 2 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 d’objets (ORB) ... Ordonnanceur parallèle Couche de communication MPI
Evaluation de performance 256x256 512 x 512 ms ms 16000 4000 14000 3500 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 d’objets appartenant à la collection Nombre d'objets appartenant à la collection ORB PCO 1024 x 1024 2048 x 2048 ms ms 300000 70000 60000 250000 50000 200000 40000 150000 30000 100000 20000 50000 10000 0 0 1 2 4 8 16 1 2 4 8 16 Nombre d’objets appartenant à la collection Nombre d’objets appartenant à la collection
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….)
Code de simulation haute-performance Code de simulation process processus processus processus process processus Software bus process Code de visualisation Visualisation : 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 LAN LAN PCs & Stations de travail Grappes WAN Machine parallèle
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
Données = FTP Contrôle = CORBA IIOP JACO3 Software bus VisualORB Architecture logicielle • Un ensemble de services CORBA pour supporter l’exécution parallèle et distribuée Environnement JACO3 Application Control Panel User & Session Service Activation Service Visualisation tools JACO3 Software Bus Information Repository Service Controls Application components Code coupling tool Computing Resource Allocation Service Application scheduler Data Repository Service Applications
LAN LDRS GDRS LDRS LDRS LDRS Nœud maître Visualisation Visualisation par le Web 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 IIOP (Register) IIOP (event) IIOP (event+data) IIOP (Register) IIOP IIOP IIOP FTP
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 Code de simulation Interpréteur TCL Script de configuration Code Binaire invocation Client réponse Objet « wrapper » Objet serveur Courtier d’objets (ORB)
Conclusion • La 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, …)