Projet : CAPS

previous up next contents
Précédent : Salto : un environnement de transformations Remonter : Logiciels Suivant : Do! : Générateur automatique de code


    
Cobra : exécutif pour la programmation par composants logiciels parallèles (cf. 2.5)



Participants : Pierrick Beaugendre, Thierry Priol.

Contact: Thierry Priol.
Statut: L'INRIA a signé une lettre d'intention dans le but de permettre la commercialisation non-exclusive de Cobra par la société Spacebel (Belgique).

Cobra est un exécutif permettant l'exécution de composants logiciels parallèles sur une plateforme constituée d'un ensemble de PC (n\oeud) interconnecté par SCI (Scalable Coherent Interface). SCI offre la possibilité d'accéder, de façon transparente, à la mémoire de n'importe quel n\oeud du réseau. La technologie utilisée s'appuie sur le standard CORBA que nous avons étendu pour prendre en compte le parallélisme. L'exécutif Cobra permet de concilier la programmation distribuée et la programmation parallèle. La programmation distribuée permet l'utilisation simultanée de plusieurs ressources nécessaires au fonctionnement de l'application. Ces ressources sont souvent distribuées géographiquement. La programmation parallèle a, quant à elle, pour objectif d'exploiter les ressources pour réduire les temps d'exécution de l'application. Dans les deux cas, il s'agit d'offrir des mécanismes de communication afin de faire coopérer l'ensemble des processus nécessaires au fonctionnement de l'application.

La spécification d'un composant logiciel parallèle s'effectue au travers du langage IDL que nous avons étendu pour prendre en compte les aspects du parallélisme (distribution des données,...). Ces extensions sont des nouveaux mots clés du langage IDL.

L'exécutif Cobra permet de gérer les ressources d'un réseau de stations de travail en vue de l'exécution de composants logiciels parallèles. Pour Cobra, un composant logiciel parallèle est une collection d'objets identiques. Chaque objet de cette collection s'exécute sur un des n\oeuds (appelé n\oeud de calcul) d'une machine virtuelle partagée. L'exécutif Cobra permet la gestion d'un ensemble de machines parallèles virtuelles où s'exécutent des composants logiciels parallèles. La communication entre composants s'effectue au choix soit au travers d'un ORB (CORBA) ou soit au travers de segments de mémoires partagées gérés par l'exécutif.

L'exécutif Cobra est mis en \oeuvre sous forme de composant logiciel CORBA. Ce choix de conception permet une utilisation de l'exécutif à partir de n'importe quelle machine du réseau Internet quelque soit son système d'exploitation et les compilateurs disponibles ( C++, Java). Cobra offre les fonctions suivantes :

1.
Administration de la plateforme (lancement et arrêt de l'exécutif, ajout/suppression de n\oeuds de calcul, gestion des utilisateurs)
2.
Création/destruction de machines virtuelles parallèles en fonction des ressources disponibles
3.
Création/destruction de segments de mémoire partagée pour la communication entre composants logiciels
4.
Lancement d'applications sur des machines virtuelles parallèles

Ces fonctionnalités sont implémentées par plusieurs services CORBA. Le service d'administration s'exécute sur un n\oeud dédié (appelé n\oeud d'administration). Les autres services (machine virtuelle parallèle, segments de mémoire partagée, lancement d'applications, etc.) s'exécutent sur un n\oeud de service. La plateforme peut avoir plusieurs n\oeuds de service afin de permettre à un grand nombre d'utilisateurs d'exploiter la machine sans contention. Ces différents services partagent des informations sur l'état de la machine (allocation des ressources) via des segments de mémoire partagée offert par la technologie SCI.

L'utilisation de l'exécutif peut s'effectuer de plusieurs manières :

1.
via des commandes Unix
2.
via une librairie C et Fortran
3.
via l'utilisation des spécifications IDL de ces services

Du côté des composants logiciels parallèles, Cobra offre une librairie pour la programmation parallèle : échange de messages, synchronisation, accès aux segments de mémoire partagée globaux (accessibles par les composants parallèles s'exécutant sur une machine virtuelle parallèle), accès aux segments de mémoire gérés par un mécanisme de mémoire virtuelle partagée (accessibles uniquement au sein du composant parallèle),... Toutes ces fonctions exploitent les capacités de la technologie SCI.

L'exécutif est implémenté en C++ et utilise ORBSCI (implémentation de CORBA par Spacebel) ou MICO, une implémentation de CORBA réalisée par l'Université de Francfort. Des applets Java ont été développés pour permettre l'administration de la plateforme au travers d'un serveur Web installé sur le n\oeud d'administration de la plateforme.



previous up next contents
Précédent : Salto : un environnement de transformations Remonter : Logiciels Suivant : Do! : Générateur automatique de code