Note publique d'information : Les ordinateurs parallèles offrent une alternative intéressante pour les applications
de calcul scientifique, grandes consommatrices de ressources de calcul et de mémoire.
Cependant, la programmation efficace de ces machines est souvent difficile et les
implantations obtenues sont généralement peu portables. Nous proposons dans cette
thèse un modèle de programmation parallèle permettant une programmation simple, portable
et efficace des applications parallèles. Ce modèle est basé sur une décomposition
explicite de l'application en tâches de calculs qui communiquent entre elles par l'intermédiaire
d'objets en mémoire partagée. La sémantique des accès aux données partagées est quasi
séquentielle et les précédences entre les tâches sont implicitement définies pour
respecter cette sémantique. Nous présentons dans une première partie la mise en oeuvre
de ce modèle de programmation dans l'interface applicative C++ Athapascan-1. Une analyse
à l'exécution des dépendances de données entre tâches permet d'extraire le flot de
données et donc les précédences entre les tâches à exécuter. Des algorithmes d'ordonnancement
adaptables à l'application et à la machine cible sont également utilisés. Nous montrons
comment, sur architecture distribuée, la connaissance du flot de données entre les
tâches peut être utilisée par le système pour réduire les communications et gérer
efficacement la mémoire partagée distribuée. Ce modèle de programmation et sa mise
en oeuvre dans l'interface applicative Athapascan-1 sont ensuite validés expérimentalement
sur différentes architectures et différentes applications d'algèbre linéaire, notamment
la factorisation creuse de Cholesky avec partitionnement bidimensionnel. La facilité
de programmation de ces applications grâce à cette interface et les résultats obtenus
(amélioration des performances par rapport au code de factorisation dense de Cholesky
de la bibliothèque ScaLapak sur une machine à 60 processeurs par exemple) confirment
l'intérêt du modèle de programmation proposé
Note publique d'information : Parallel computers offer an interesting alternative for the applications of scientific
computation, which need large resources of calculation and memory. However, the effective
programming of these machines is often difficult and the obtained implementations
are generally not easily portable. We propose in this thesis a parallel programming
model allowing simple, portable and efficient programming of parallel applications.
This model is based on an explicit decomposition of the application into tasks which
communicate through objects in a shared memory. The semantics of the access to the
shared data is quasi sequential and precedences between the tasks are implicitly defined
to respect this semantic. We present in a first part the implementation of this parallel
programming model in the C++ Athapascan-1 interface. An analysis at run-time execution
of the dependences of data among tasks makes it possible to extract the data flow
and thus the precedences between the tasks to be run. Scheduling algorithms suitable
to the application and to the target machine are then used. We also show how, on a
distributed architecture, the knowledge of the data flow between the tasks can be
used by the system to reduce the communications and to effectively manage the distributed
shared memory. This parallel programming model and its implementation in the Athapascan-1
interface are then validated on various architectures and various applications of
linear algebra, in particular the two-dimensional Cholesky factorization. The simple
programming of these applications in this interface, and the obtained results (for
example, we outperform ScaLapack for dense Cholesky factorization on a machine with
60 processors) confirm the validity of our approach