previous up next top index
Précédent : Motivations et objectifs Remonter : Interface applicative Athapascan-1 et répartition Suivant : Ordonnancement en ligne


L'interface applicative ATHAPASCAN-1

De façon à assurer la portabilité du code, nous avons choisi de séparer la description des opérations parallèles qui doivent être exécutées (i.e. l'algorithme implémenté) de la gestion de l'exécution de ces opérations (i.e l'ordonnancement). Lors du passage d'une machine à une autre, il est alors possible de modifier l'ordonnancement des tâches sans modifier les opérations qu'il décrit, ce qui permet d'adapter la granularité par exemple. Cette démarche s'avère originale bien qu'elle apparaisse similaire, pour le parallélisme de contrôle, des attributs de partitionnement de données que l'on trouve dans la plupart des langages à parallélisme de données comme HPF.

À partir de travaux sur l'implantation d'une bibliothèque parallèle pour le calcul formel GIVARO, nous avons spécifié une interface applicative qui permet de réaliser cette séparation entre description du parallélisme et ordonnancement. Elle permet de décrire une exécution comme un graphe orienté dont les noeuds sont des appels de procédure (avec paramètres instanciés) et dont les arêtes décrivent les relations de précédence devant être respectées entre les appels, ainsi que les dépendances de données critiques. Le graphe de précédence permet de faire de l'ordonnancement et les dépendances de données permettent de prendre en compte les contraintes de localité et de faire de l'alignement. De manière à faciliter le développement de codes applicatifs en offrant une interface facile d'utilisation, nous avons choisi de la développer en C++. Il est alors possible de décrire un calcul parallèle par héritage à partir de classes abstraites qui proposent des schémas classiques de parallélisation : tâches indépendantes, découpe récursive, etc. Lors de la dérivation, seules les opérations effectuées par les tâches séquentielles sont à définir par l'implémentation de fonctions virtuelles. Cette interface a été construite et des exemples applicatifs sont en cours de développement.