Projet Caps

previous up next contents
Précédent : Grands domaines d'application Remonter : Projet CAPS, Compilation, Architectures Parallèles Suivant : Résultats nouveaux



Logiciels

Panorama

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.


  
Salto : un environnement de transformations pour les langages d'assemblages (cf. [*])



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 :

1.
le noyau effectue toutes les tâches nécessaires, rébarbatives et souvent sources d'erreurs dont le programmeur a envie de se passer, notamment l'analyse lexicale et syntaxique du code, le calcul de la structure en blocs de base et du flot de contrôle, le calcul des dépendances entre instructions ;
2.
la description de la machine est un fichier qui détaille le jeu d'instructions et l'ensemble des ressources matérielles de l'architecture cible qui sont susceptibles d'intervenir dans le processus d'optimisation. Elle peut être plus ou moins précise : une description simple peut s'intéresser simplement aux unités fonctionnelles tandis qu'une description plus fine peut faire intervenir les bus d'accès à la mémoire, les ports sur le fichier de registres, etc. ;
3.
l'interface utilisateur orientée objets donne un moyen d'accès aux structures de données internes de Salto. Un certain nombre de classes correspondent aux types de données connus ;
4.
un algorithme d'instrumentation ou d'optimisation fourni par l'utilisateur utilise l'interface pour accéder au code et éventuellement le modifer. Salto en lui-même n'a aucun effet sur le programme assembleur, il se contente de fournir des abstractions du code et des méthodes à même de faciliter l'implantation d'algorithmes. C'est à l'utilisateur de spécialiser Salto pour obtenir un outil correspondant à ses besoins.


 \begin{figure} \begin{center} \leavevmode \includegraphics[width=10cm]{oreille-fr.eps} \end{center}\end{figure}

Pour en savoir plus se référer à http://www.irisa.fr/caps/PROJECTS/Salto ou contacter François Bodin

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



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 :

1.
Administration de la plateforme (lancement et arrêt de l'exécutif, ajout/suppression de noeuds 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 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 :

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 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.



previous up next contents Précédent : Grands domaines d'application Remonter : Projet CAPS, Compilation, Architectures Parallèles Suivant : Résultats nouveaux