Projet :
resedas

Précédent : Gestion de réseaux et services
Remonter : Domaines d'applications Suivant :
Expérimentation et
validation de plates-formes
Calculs distribués et transfert des informations
Résumé :
L'objectif du groupe est de permettre une utilisation
efficace des techniques actuelles de parallélisation, comme
l'échange de messages. Aucune méthode n'existe actuellement
pour suivre un cycle de développement de logiciel. Les phases
de spécification et de conception sont escamotées et les phases
de codage et de tests restent entièrement manuelles et
intuitives.
La programmation par échange de messages repose
essentiellement sur deux concepts:
- 1.
- la définition de tâches exécutant en parallèle un code
séquentiel ;
- 2.
- la définition d'interactions entre les tâches à l'aide de
messages échangés.
Sur ces deux points, nous proposons des solutions
permettant:
- d'améliorer la phase de conception de l'application
parallèle, notamment en ce qui concerne la découpe en tâches et
la distribution ;
- d'affranchir au maximum l'utilisateur des choix de schémas
de communication et de lui fournir la performance correspondant
à l'architecture utilisée.
Notre objectif est de définir, expérimenter et valider un
environnement de programmation pour le calcul distribué par
passage de messages. Les problèmes importants qu'il convient de
résoudre sont les suivants:
- Structurer l'application. Les bibliothèques de
communication ne fournissent pas de guides ni de méthodes pour
modéliser l'application. Il faut incorporer les modèles
directement dans les outils de développement ;
- Abstraire et simplifier les communications. Les solutions
envisagées se situent à deux niveaux: tirer parti des
spécificités d'une application pour faire les bons choix de
primitives et les simplifier sur le plan syntaxique ;
- Valider et prédire. Les méthodes fournies à l'utilisateur
doivent lui permettre d'une part de garantir des propriétés de
bon fonctionnement de l'application et d'autre part d'évaluer
a priori les performances de l'application ;
- Affecter et utiliser les ressources. Il est souhaitable et
même nécessaire que l'application parallèle fournisse les
performances attendues. Pour cela il faut optimiser les calculs
et les communications. Dans le cas des réseaux de stations,
l'utilisation d'outils d'administration réseau doit permettre
de fournir les informations nécessaires.
Scilab, logiciel du domaine public développé à
l'INRIA dans le cadre du projet Méta-2 (INRIA Rocquencourt) est
un logiciel permettant entre autre de faire du calcul
scientifique sur une station de travail. Scilab est
maintenant un logiciel largement répandu et utilisé par de
nombreux scientifiques et ingénieurs. Notre projet vise à étendre
les fonctionnalités de Scilab aux plates-formes
multi-processeurs. Plus précisément, nous montrons que cette
extension, nommée Scilab//et à laquelle le
projet RESEDAS a fortement contribué, permet de: (1) conserver
l'environnement propre à Scilab ; (2) rester dans une
approche interactive ; (3) développer des codes parallèles dans
un langage de haut niveau et garantir leur portabilité ; (4)
offrir des performances acceptables en terme de puissance de
calcul. Du point de vue de l'utilisateur, la parallélisation de
Scilab offre un moyen supplémentaire de partager les
ressources offertes par un réseau de stations, lui permettant
d'augmenter les performances de son application en tirant parti
du parallélisme intrinsèque offert par le réseau, tant au niveau
des capacités de calcul de machines distantes que de la taille
mémoire globale ainsi disponible. La portabilité et
l'interopérabilité de la partie communication de
Scilab// est assuré par PVM. La flexibilité,
la facilité d'utilisation et l'extensibilité de la puissance de
calcul est basée pour la partie calcul algébrique sur
l'utilisation des bibliothèques parallèles ScaLAPACK et PBLAS. Le
paramètre d'extensibilité est très important car il réfère au
comportement d'un algorithme lorsque le nombre de processeurs
augmente. L'utilisation de telles bibliothèques garantit à
l'utilisateur un parallélisme relativement transparent puisqu'il
ne décrit que les distributions des matrices et obtient de très
bonnes performances.
Le second point sur lequel nous travaillons est rendre le
parallélisme encore plus transparent pour l'utilisateur.
Effectuer un calcul parallèle requiert que les données soient
distribuées de façon efficace et bien souvent se pose le problème
de la redistribution des données entre deux étapes de calcul.
Nous recherchons des méthodes permettant d'évaluer si entre deux
phases une redistribution est nécessaire, ce en fonction du
volume de données à échanger, du type de calcul à effectuer, des
performances du réseau de communication... A terme, ces
recherches doivent permettre à l'utilisateur de déclarer
uniquement les ressources de calcul dont il dispose et le système
doit de lui même (i.e., avec le moins de directives
possibles) décider de lancer un calcul en parallèle, de rapatrier
ou de redistribuer les données entre deux phases de calcul. Pour
finir, nous travaillons à l'extension de
Scilab//, et donc à la parallélisation de
modules existant dans Scilab. Entre autres, nous
développons une bibliothèque d'algorithmes parallèles sur les
graphes (fermeture transitive, plus court chemin, ...) afin
d'offrir un équivalent aux algorithmes séquentiels présents dans
la librairie Metanet de Scilab. Nous travaillons
également sur l'interfacage d'autres bibliothèques de calcul
numérique, notamment autour des matrices creuses.

Précédent : Gestion de réseaux et services
Remonter : Domaines d'applications Suivant :
Expérimentation et
validation de plates-formes