Projet : APACHE

previous up next contents
Précédent : Fondements scientifiques Remonter : Fondements scientifiques Suivant : Environnements exécutifs


Sous-sections


   
Algorithmique parallèle, complexité et ordonnancement

Mots clés : algorithmique, complexité, modélisation, ordonnancement, évaluation des performances .

Résumé :

Dans le domaine de l'algorithmique parallèle, la notion même d'efficacité ne connaît pas de consensus et il existe plusieurs modèles de calcul de complexité. Une fois le parallélisme d'un problème extrait et décrit, il reste à déterminer l'attribution des ressources (ordonnancement, placement) de la machine parallèle aux diverses tâches du programme [*]. 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.

Algorithmique et complexité

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 programme unanimement accepté est celui du graphe de tâches, modélisant calculs et flots de données entre les calculs. 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 temps d'exécution, ainsi que de définir une classification des algorithmes selon leur temps d'exécution (classe NC).

Cependant, le modèle PRAM ignore les surcoûts liés aux synchronisations, aux communications de données et à l'ordonnancement. Ces surcoûts sont particulièrement significatifs lorsque les programmes sont irréguliers [[5]]. L'analyse d'un algorithme requiert alors la définition d'un modèle de coût plus précis, donc associé à un modèle de programmation et de machine permettant de prendre en compte les surcôuts liés à l'ordonnancement du programme.

Ordonnancement

Les développements théoriques actuels pour le calcul parallèle ont pour objectif de caractériser des algorithmes d'ordonnancement (bornes au pire en temps et en mémoire, 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) [[9]]. La gestion de la liste (par exemple une file à priorité) permet de contrôler la mémoire utilisée par l'exécution parallèle. La prise en compte de connaissances plus fines sur la structure du programme (par exemple le programme consiste en une découpe récursive ou est de type décomposition de domaines [[2]]) peut permettre d'étendre à d'autres classes de graphe cette propriété.

Dans le cas des machines (e.g. des réseaux de stations de travail), il s'agit d'intégrer des paramètres plus précis permettant d'obtenir une meilleure modélisation des machines existantes, en particulier aux réseaux de stations.

Modélisation et performance

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 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) [[10]]. 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.



Footnotes

... programme[*]
Dans ce texte, on appelle répartition de charge la mise en oeuvre de ces algorithmes de placement et d'ordonnancement.


previous up next contents
Précédent : Fondements scientifiques Remonter : Fondements scientifiques Suivant : Environnements exécutifs