![]()
Précédent : Communication dans les calculateurs
parallèles Remonter : Résultats nouveaux Suivant :
Contrats industriels
(nationaux, européens et
Participants : Pierrick Beaugendre, Stéphane Écolivet,
Pascale Launay, Jean-Louis Pazat, Thierry Priol, Christophe René,
Luc Renambot.
Mots clés : metacomputing, Corba, Java, SCI, réseau de stations de travail (NOW), frameworks, objets, transformations de programmes, couplage de codes, synthèse d'images, algorithmes parallèles .
Ce travail se situe dans la continuation au sein du projet Esprit R & D Pacha. Il s'agit d'introduire le parallélisme au sein d'objets CORBA. Nous avons proposé le concept d'objet CORBA parallèle qui se présente sous la forme d'une collection d'objets CORBA identiques [[27]]. Vu de l'utilisateur, un objet CORBA parallèle ressemble à un objet CORBA standard. A partir d'une référence à l'objet, il peut invoquer l'exécution à distance de méthodes qui seront exécutées simultanément sur tous les objets de la collection. Nous avons proposé d'étendre le langage de spécification d'interface (IDL) afin d'y introduire des moyens d'expression du parallélisme. Il s'agit notamment de spécifier la cardinalité de la collection d'objets ainsi que la distribution des données fournies en paramètre lors de l'appel d'une méthode. Cette extension se présente sous la forme d'une extension de la syntaxe du langage IDL. Nous avons proposé une implémentation du concept d'objet CORBA parallèle au sein d'un environnement MPI. Il s'agit notamment de permettre l'appel à un objet CORBA parallèle à partir soit d'un objet CORBA standard ou soit d'un objet CORBA parallèle. Un objet CORBA parallèle peut également appelé un objet CORBA standard. La distribution de donnée est effectuée au 1sein des talons générés par le compilateur IDL que nous avons modifié pour y ajouter de nouveaux mots-clés. La distribution ou la redistribution de donnée est réalisée par échange de messages (MPI). Ce concept d'objet CORBA parallèle sera la base d'un environnement de Metacomputing en cours de définition dans le cadre du projet Esprit R & D Jaco3.
Nous explorons depuis quelques années la conception et la mise
en en
uvre d'outils pour la construction et
l'exécution efficace de programmes répartis. A partir des
résultats que nous avons obtenus dans le cadre du langage High
Performance Fortran, nous étudions maintenant la généralisation
de cette approche dans un contexte de programmation par
objets.
Nous réalisons des transformations de programmes explicitement parallèles en des programmes parallèles et répartis. Grâce à l'utilisation d'un le langage à objets ( JAVA), nous pouvons prendre en compte dans un même cadre la génération de code réparti par distribution de contrôle et par distribution de données.
L'approche repose sur l'utilisation de collections qui sont des objets génériques pouvant contenir tout type d'éléments (et en particulier des tâches). Dans le programme réparti que nous générons, les collections sont remplacées par des ``collections distribuées'' qui permettent d'accéder de manière transparente aux objets distribués. La transformation d'un programme centralisé en programme réparti se fait automatiquement en changeant la bibliothèque des collections utilisées et en transformant les composants définis par le programmeur.
La notion d'objet parallèle CORBA est un cas particulier de collection distribuée. On peut donc espérer transposer la généralisation de l'expression de la distribution que nous avons faite dans le cadre Java pour l'adapter à CORBA et faciliter ainsi la programmation d'applications réparties dans ce cadre.
Les résultats nouveaux que nous avons obtenus concernent :
Un ORB (serveur d'invocation de méthodes) constitue le
c
ur d'une implémentation de CORBA. Il permet
d'invoquer les méthodes d'un objet dont la localisation et le
langage d'implémentation sont inconnus de l'appelant. La
conception et la réalisation d'un ORB efficace (faible latence et
fort débit) sont cruciales pour l'utilisation de la technologie
CORBA au sein d'environnements de metacomputing que nous
souhaitons développer au sein du projet. En effet, il s'agit
d'utiliser l'ORB pour faire communiquer des informations
(données, contrôle) entre plusieurs codes de calcul scientifique
ou bien de visualiser des informations à distance en utilisant
d'autres technologies complémentaires telles que VRML et
JAVA.
Les mises en
uvre actuellement disponibles ne
permettent pas de tirer parti des performances des réseaux de
stations de travail (Myrinet, SCI, etc.). Le souci des
concepteurs est plutôt d'offrir l'interopérabilité entre ORB
plutôt que la performance. Notre objectif est de conserver cette
interopérabilité tout en offrant de nouveaux protocoles plus
performants qui s'adaptent mieux aux réseaux tels que Myrinet,
SCI ou tout autres réseaux rapides tels que ceux disponibles dans
les machines parallèles. En vue de proposer de nouveaux
protocoles, nous souhaitons tout d'abord étudier finement les
performances d'un ORB existant. Nous travaillons actuellement à
l'analyse fine des coûts des mécanismes mis en
uvre dans un ORB par l'instrumentation de chacune de ses
fonctions. Ceci va nous permettre d'étudier sur quels point les
optimisations doivent porter. Nous utilisons le système
SALTO développé dans le projet afin d'effectuer
une instrumentation automatique du code. L'ORB étudié est celui
de MICO, une implémentation de CORBA sous licence GNU GPL.
Ce travail est réalisé dans le cadre du projet Esprit R & D Pacha qui vise à concevoir un multiprocesseur à partir d'un réseau de stations de travail interconnectées par un réseau rapide SCI (Scalable Coherent Interface). Un gestionnaire de ressources, appelé Cobra, a été réalisé en utilisant soit ORBSCI, une implémentation de CORBA réalisée dans le cadre du projet PACHA [[15]] ou soit MICO. Le gestionnaire de ressources est vu comme plusieurs services CORBA ayant chacun une tâche particulière : administration du réseau de stations de travail, gestion des ressources (processeurs, mémoires), chargement et exécution d'objets CORBA parallèles. Un mécanisme de gestion de mémoire virtuellement partagée a été ajouté afin de permettre une communication efficace par mémoire partagée entre objets appartenant à la même collection (objet CORBA parallèle). L'intégration du concept d'objet CORBA parallèle au sein de cet environnement est en cours.
Notre méthode est fondée sur l'utilisation de deux
concepts : les interfaces virtuelles et les masques de
visibilité permettant de résoudre l'équation de radiosité sur des
environnements très complexes (de l'ordre du million de
polygones). Nous avons montré l'impact de ces deux concepts pour
améliorer le comportement de l'algorithme de radiosité vis à vis
de la hiérarchie mémoire. Pour cela, nous avons utilisé la
nouvelle machine Silicon Graphics Origin 2000 du
Centre Charles Hermite à Nancy. Cette machine, dotée de
64 processeurs, offre un espace d'adressage global sous forme
d'une mémoire virtuelle partagée.
Nous avons proposé une méthode pour contrôler la convergence d'une solution de radiosité calculée en parallèle. Notre approche vise à détecter efficacement la convergence et également à accélérer cette dernière si possible. Des nombreux tests sur une machine SGI Origin 2000 nous ont permis de montrer que cette technique peut apporter des gains substantiels, et n'introduit qu'un niveau très faible d'erreur.
La convergence est détectée par une mise en oeuvre simple
basée sur le calcul de l'énergie entrante et sortante de chaque
sous-environnements. Il est désormais possible à l'utilisateur de
demander une solution pour une convergence donnée. Ensuite, nous
avons introduit le paramètre Gmax afin de contrôler et
d'accélérer la convergence en modifiant légèrement la fonction de
sélection des sources lumineuses. Il est alors possible d'obtenir
des accélérations intéressantes (10.3 sur onze processeurs, ou
52.0 sur soixante-quatre processeurs, pour les deux scènes
considérées) avec un niveau d'erreur dans la solution produite
tout à fait acceptable. Cependant, dans les cas les plus
défavorables, un mécanisme dynamique d'équilibrage de charge
semble encore nécessaire [[29]].
Une application de visualisation interactive du calcul parallèle de radiosité est en cours de développement sur une grappe de PCs utilisant la technologie d'interconnexion SCI (plateforme PACHA). Cette application exploite l'exécutif Cobra et le concept d'objet CORBA parallèle.
Notre méthode calcule en parallèle l'éclairage de façon progressive, et les données produites sont visualisées directement dans un environnement 3D. Cette étude vise à intégrer notre méthode dans un environnement développé par composants logiciels. Pour cela, nous utilisons la norme CORBA. L'application consiste en différents composants. Tout d'abord, un programme JAVA est chargée dans un navigateur web permettant de lancer et de contrôler notre programme parallèle sur la plate-forme PACHA via l'exécutif Cobra. Ce calcul parallèle est lui-même objet CORBA parallèle. La scène est visualisée à l'intérieur du navigateur sous forme de fichier 3D VRML. Enfin, les communications entre la visualisation et le calcul parallèle sont prises en charge par CORBA. Ainsi, durant le déplacement interactif de l'utilisateur, l'éclairage apparaît dans la scène.