Précédent : Présentation générale et
objectifs Remonter : Projet APACHE, Algorithmique Parallèle,
Programmation Suivant : Grands domaines
d'application
Résumé : Les architectures parallèles offrent une puissance de calcul et une capacité de stockage potentiellement très importantes. Les progrès des composants matériels permettent de disposer de multiprocesseurs très performants quel que soit leur niveau d'intégration. Cependant, le problème technologique qui n'est pas résolu est celui de l'exploitation efficace de ce potentiel par les applications. Les problèmes fondamentaux interviennent à plusieurs niveaux. Au niveau algorithmique, malgré les très gros progrès effectués ces dernières années, il existe toujours une recherche active (i.e. l'algèbre linéaire sur des structures creuses) pour des algorithmes efficaces. La notion même d'efficacité ne conna^pas de consensus et il existe plusieurs modèles de calcul de complexité. Au niveau du langage de programmation, l'extraction du parallélisme est un problème difficile, que nous n'abordons pas dans ce projet. Nous supposons que l'utilisateur exprime le parallélisme de son algorithme de façon à éviter toute analyse complexe du code. Une fois le parallélisme extrait, il reste un problème difficile qui est celui de l'attribution des ressources (ordonnancement, placement) de la machine parallèle aux diverses tâches du programme. Dans ce texte, on appelle répartition de charge la mise en oeuvre de ces algorithmes de placement et d'ordonnancement. La modélisation quantitative des exécutions parallèles permettant de comprendre les paramètres importants mis en jeu pour la répartition de charge est un domaine de recherche actif.
Depuis 20 ans, les recherches ont permis la construction d'algorithmes parallèles efficaces pour résoudre la plupart des problèmes admettant déjà une solution séquentielle efficace. Le modèle de machine classiquement utilisé, la PRAM (Parallel Random Access Machine), est constitué d'un nombre arbitraire de processeurs, fonctionnant de manière synchrone et coopérant par accès à une mémoire partagée. Il permet d'évaluer un algorithme en terme de nombre d'opérations (appelé travail) et en temps d'exécution, ainsi qu'une classification des algorithmes selon leur temps d'exécution (classe NC). Des propositions d'algorithmes et leur classification en terme de complexité, dans le domaine du calcul formel, sont issues du projet APACHE : évaluation de programmes arithmétiques, calcul de la forme de Jordan d'une matrice [5], calcul avec des nombres algébriques.
À partir de l'étude de problèmes académiques (parcours de graphe, algèbre linéaire dense, calculs arithmétiques ou algébriques, etc.), des méthodes algorithmiques générales ont pu être dégagées et appliquées avec succès à la parallélisation d'applications [18].
Cependant, le modèle PRAM, qui donne des indications sur l'ordre de grandeur asymptotique de complexité, ignore les surcoûts liés aux synchronisations et aux communications. Ces surcoûts sont particulièrement significatifs lorsque les programmes sont irréguliers [4]. L'étude de l'ordonnancement de ces algorithmes (un algorithme sur une PRAM est un graphe de tâches) sur des modèles de machines réalistes doit permettre d'affiner théoriquement l'évaluation de la qualité de ces algorithmes.
Les développements théoriques actuels pour le calcul parallèle ont pour objectif de caractériser des algorithmes d'ordonnancement (borne au pire, optimalité, etc.) pour des modèles d'applications et de machines réalistes.
Dans le cas des applications, il s'agit de construire des algorithmes plus compétitifs en les spécialisant à des classes caractéristiques d'applications. Par exemple, les algorithmes d'ordonnancement dynamique font l'hypothèse que le programme est très parallèle et de faible irrégularité. Dans ce contexte, des techniques de liste permettent d'obtenir un temps d'exécution asymptotique égal au temps séquentiel divisé par le nombre de processeurs (donc optimal) [6]. La prise en compte de connaissances plus fines (par exemple le programme consiste en une découpe récursive ou est de type décomposition de domaines) peut permettre d'étendre à d'autres classes de graphe cette propriété. Par exemple, dans le cadre de l'ordonnancement statique, des algorithmes spécifiques permettent d'ordonnancer optimalement des classes restreintes de graphes : arbres et grilles [3] formés de tâches de durées identiques.
Dans le cas des machines, il s'agit d'intégrer des paramètres plus précis permettant d'obtenir une meilleure adéquation aux machines existantes, en particulier aux réseaux de stations [2]. Le modèle standard d'ordonnancement est un ensemble de machines identiques où le coût de communication entre machine est nul. Les modèles BSP et LogP permettent de modéliser les problèmes de communication et de hiérarchie mémoire. L'hétérogénéité des processeurs est considérée sous deux aspects : les vitesses des processeurs sont proportionnelles (machine uniforme) ou variables (machine non-uniforme ou hybride).
L'interface de programmation ATHAPASCAN permet la construction dynamique et distribuée du graphe de tâches associé à l'exécution d'un programme parallèle. Il rend ainsi possible l'utilisation des algorithmes d'ordonnancement cités ci-dessus et leur évaluation.
La compréhension et l'évaluation quantitative du comportement dynamique d'applications parallèles est un problème difficile tant du point de vue de l'analyse a posteriori des phénomènes observés que celui de la définition de modèles prédictifs.
Au niveau de l'expérimentation (mesure de performances), il est nécessaire d'analyser des paramètres pertinents sur des traces d'exécution de programmes. Les paramètres portent sur l'état de l'application parallèle (valeurs de variables, profondeur de découpe récursive, complexité théorique de procédures,etc.) ou sur l'état de la machine parallèle (taux d'utilisation des processeurs, charge du réseau de communication, etc. La difficulté est de modéliser les corrélations entre ces différents paramètres. Les outils statistiques utilisés relèvent de l'analyse de données multidimensionnelles et de la classification.
Au niveau de la prédiction de performances, il est nécessaire de construire des modèles formels. À cause de l'indéterminisme temporel des applications parallèles étudiées et de l'imprédictibilité des temps d'exécution de tâches, les modèles sont exprimés sous la forme de processus stochastiques multidimensionnels en temps continu et à espace d'état discret. Ces espaces d'état sont de très grande taille et de structure complexe, la complexité provenant des synchronisations dans l'application parallèle. Des techniques formelles spécifiques doivent donc être développées. Les approches retenues actuellement sont celles des processus markoviens [1] et des pseudo-algèbres (max,+) (graphes d'événements) [7]. Des algorithmes performants permettent, par l'introduction de la structure du modèle dans la méthode numérique de résolution, de réduire l'espace mémoire de stockage et de diminuer la complexité de calcul. Les voies qui sont explorées utilisent les symétries, l'algèbre tensorielle, des propriétés de décomposabilité, l'étude de comportements asymptotiques, etc.
L'objectif à plus long terme de cette activité est d'associer l'identification des indices de performance pertinents aux modèles prédictifs, ce qui implique de comprendre les abstractions sur les premiers afin que les seconds soient résolubles.