Précédent : Grands domaines
d'application Remonter : Projet
CAPS, Compilation, Architectures Parallèles
Suivant : Résultats
nouveaux
Résumé : Le projet CAPS développe de nombreux prototypes logiciels de recherche: compilateurs, simulateurs, environnement de programmation, ... Nous présentons ici Salto et Cobra, 2 logiciels conséquents aujourd'hui disponibles développés au sein du projet.
Participants : François Bodin , Zbigniew Chamski , Erven
Rohou , André Seznec
Mots-clés : optimisation
Contact: François Bodin
Statut: Déposé à l'APP, disponible sur demande.
Salto propose un environnement de manipulation de programmes en langage assembleur qui permet de surmonter ce type de difficultés par la prise en charge d'une partie du travail. Une abstraction des ressources matérielles exploitables les dissocie de l'algorithme d'optimisation, ce qui a deux avantages :
Salto est composé de quatre parties :
Pour en savoir plus se référer à http://www.irisa.fr/caps/PROJECTS/Salto ou contacter François Bodin
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é Space-Bel (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 (noeud) interconnecté par SCI (Scalable Coherent Interface). SCI offre la possibilité d'accéder, de façon transparente, à la mémoire de n'importe quel noeud 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 noeuds (appelé noeud 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écute 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 :
Ces fonctionnalités sont implémentées par plusieurs services CORBA. Le service d'administration s'exécute sur un noeud dédié (appelé noeud d'administration). Les autres services (machine virtuelle parallèle, segments de mémoire partagée, lancement d'applications, etc.) s'exécutent sur un noeud de service. La plateforme peut avoir plusieurs noeuds 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 :
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 locaux (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++ (17000 lignes de code) et utilise Orbix (implémentation de CORBA par Iona). Des applets Java ont été développés pour permettre l'administration de la plateforme au travers d'un serveur Web installé sur le noeud d'administration de la plateforme.