You may remove the abstracts of these old publications.
Most of the West Team recent publications are also available.
The bibliography was generated with a custom version of the bib2xhtml
package.
Programming irregular and dynamic data-parallel algorithms must consider the effect of data distribution. The implementation of a load balancing algorithm is quite a difficult task for the programmer. However, a load balancing strategy may be developed independently of the application. The integration of such a strategy into the data-parallel algorithm may be relevant to a library or a data-parallel compiler run-time. We propose load distribution data-parallel algorithms for a class of irregular data-parallel algorithms called stack algorithms. Our algorithms allow the use of regular and/or irregular communication patterns to exchange the works between processors. The results of theoretical analysis of these algorithms are presented. They allow different load balancing algorithms to be compared and the identification of criteria to chose between them.
Most parallel I/O systems allow parallel accesses to sequential files. The DPFS is a multi-dimensional file system. Each file is a list of arrays distributed onto a grid of I/O processors as template onto HPF processor grids. I/O node topologies and distribution functions are placed at the device level. This means that file distribution only depend on their directory location. By using distributed parallel devices we keep a Unix-like environment. Files and directories are managed with usual shell commands. However, code portability and user friendly are not parallel environment main properties; they are above all built for efficiency. With DPFS, parallel I/O are completely asynchronous and the number of disk accesses is minimal. Moreover, when the I/O distribution matches the computing distribution all accesses are local.
L'exploitation du parallélisme nécessite une distribution préalable des données sur les processeurs. Cette distribution de calcul n'est habituellement pas conforme à la distribution utilisée sur les disques. Chaque opération d'entrées/sorties nécessite alors une opération de redistribution pour migrer les données des processeurs de calculs aux noeuds d'entrées/sorties. En générale, une redistribution est une opération coûteuse. Cependant la plupart des redistributions usuelles acceptent une modélisation simplifiée. À partir de ces modèles simples nous avons défini des algorithmes efficaces. Ces algorithmes minimisent le nombre et le volume des messages et utilisent les processeurs de calculs en parallèle avec les n oe uds d'entrées/sorties. Pour tirer profit de toute les ressources, il faut répartir au mieux les messages sur l'ensemble des destinataires. Les redistributions qui génèrent de nombreux conflits ont été identifiées. Pour ces cas précis, nous avons calculé un ordonnancement optimal des messages. Les mesures effectuées sur une ferme de processeurs ALPHA montrent que le gain par rapport à un algorithme énumératif général est toujours supérieur à cinq. À partir de ces algorithmes nous avons construit un système de fichiers adapté aux machines parallèles hétérogènes et au modèle de programmation à parallélisme de données. Notre environnement intègre notamment la notion de périphérique virtuel distribué. Chaque périphérique parallèle est défini par une grille de n oe uds d'entrées/sorties et par une fonction de distribution semblable à celles utilisées par le langage HPF. Le concept de périphérique virtuel distribué est fondamental car il permet la réutilisabilité. Le programmeur accède à des fichiers logiques, sans avoir à connaître l'organisation des données dans le système de fichiers. Les algorithmes de redistributions sont déclenchés dynamiquement à chaque opération d'entrées/sorties parallèles.
Work presented in this document concerns a set of automatic transformation processes of synchronous programs in order to implement them on distributed heterogeneous architectures. We particularly took an interest in the area of real-time image processing. Our approach is as follows; real-time systems are designed and validated on the assumption of synchronism. In practice we used an existing tool: the SIGNAL synchronous language. We then developped a set of transformation processes which allow to automatically implement real-time systems in a concurrent sequential processes model. Major features of this work are to guarantee safety properties by transforming proved programs, to distribute data exchanges in order to avoid centralized mecanism requirements, to preserve all dataflow aspects at run-time. Transformed systems are made of a finite set of computing functions with associated communication interfaces, called tasks. Tasks do not communicate except on entry and exit. Data transmissions are restricted by guarded commands which are implemented in the body of the interfaces.
Le travail réalisé dans le cadre de cette thèse porte sur la transformation automatique de programmes synchrones en vue de leur implémentation asynchrone sur les architectures hétérogènes distribuées. Dans un contexte applicatif nous nous sommes plus particulièrement intéressés aux systèmes de traitements temps-réel de l'image. La démarche que nous avons suivie se base sur une phase préliminaire de conception et validation des systèmes temps-réel sous l'hypothèse de synchronisme. En pratique, nous avons utilisé un outil existant: le langage SIGNAL. Nous avons développé un ensemble de processus de transformation permettant d'automatiser l'implémentation de ces systèmes sous la forme de processus séquentiels communicants. Les caractéristiques de ce travail sont de garantir a priori la sûreté des programmes en transformant des systèmes prouvés, de répartir intégralement les échanges de données de manière à ne pas recourir à des mécanismes centralisés, de conserver à l'exécution un modèle dicté par la disponibilité des données. Les systèmes ainsi transformés sont constitués d'un ensemble fini de fonctions de calcul dotées d'interfaces de communications; elles constituent les tâches du système. Ces tâches ne communiquent entre-elles que par l'intermédiaire de leurs entrées et sorties. L'émission et la réception de données sont conditionnées par des commandes gardées implémentées dans le corps des interfaces.
Programming irregular and dynamic data-parallel algorithms requires to take data distribution into account. The implementation of a load balancing algorithm is a quite difficult task for the programmer. However, a load balancing strategy may be developed independently of the application. The integration of such a strategy in the data-parallel algorithm may be relevant to a library or a data-parallel compiler run-time. We propose load distribution data-parallel algorithms for a class of irregular data-parallel algorithms called stack algorithms. Our algorithms allow the use of regular and/or irregular communication patterns to exchange the works between processors. The results of theoretical analysis of these algorithms are presented. They allow a comparison of the different load balancing algorithms and the identification of criterion for the choice of a load balancing algorithm.
La programmation d'algorithmes data-parallèles irréguliers et dynamiques nécessite la prise en compte de la distribution des données. L'implémentation d'un algorithme d'équilibrage de la charge est une tâche ardue pour le programmeur. Cependant, une stratégie d'équilibrage de la charge peu être développée indépendamment de l'application. L'intégration d'une telle stratégie au sein de l'algorithme data-parallèle peut relever d'une bibliothèque ou de l'exécutif d'un compilateur data-parallèle. Nous proposons des algorithmes data-parallèles de distribution de la charge pour toute une classe d'algorithmes data-parallèles irréguliers dit algorithmes à pile. Nos algorithmes utilisent des communications régulières et/ou irrégulières pour réaliser les échanges de travail entre les processeurs. Les résultats d'une analyse théorique de nos algorithmes sont présentes. Ils permettent une comparaison des différents algorithmes et l'établissement de critères de choix d'un algorithme d'équilibrage.
Signal processing applications are bound by severe constraints: affciency an reliability are the major of it. To obey these constraints two main approaches exist: the synchronous approach and the asynchronous one. But, in practice, each style tends to be weak where the other is strong. Work presented in this paper is a part of a whole project in progress that aims at combining the respective advantages of these methods, in order to make programming of large signal processing applications easier with a run-time system close to the standard communicating sequential processes (CSP) model.
Basic features of our work in progress that aims at combining the respective advantages of the synchronous and synchronous approach for signal and real-time image processing are illustrated by the way of an example. This example is based on the implementation of the high-level code of a distributed MPEG-like real-time image coder.
Most data-parallel languages use arrays to support parallelism. This regular data structure allows a natural development of regular parallel algorithms. The implementation of irregular algorithms requires a programming effort to project the irregular data structures onto regular structures. We first propose in this paper a classification of existing data-parallel languages. We briefly describe their irregular and dynamic aspects, and derive different levels where irregularity and dynamicity may be introduced. We propose then a new irregular and dynamic data-parallel programming model, called Idole. Finally we discuss its integration in the C++ language, and present an overview of the Idole extension of C++.
FORTRAN 90 is the actual standard in term of data parallel language for scientific computing. To develop a data parallel algorithm on a distributed memory machine, programmers generally use the High Performance FORTRAN extension of FORTRAN 90, in particular the data mapping directives. HPF-Builder graphical environment goal is to free the HPF programmers of all the syntactic constraints due to the data mapping. All the data distribution and alignment are insured in an interactive and visual way. HPF TEMPLATES and PROCESSORS become the visual support for alignments of arrays and distributions on grids of processors. HPF-Builder automatically generates the corresponding HPF directives and inserts them in the FORTRAN 90 source code. It results in a HPF code.
New generations of scientific codes trend to mix different types of parallelism. Algorithms are defined as a set of modules, with data parallelism inside modules and task parallelism between them. With high speed networks, tasks running on a heterogeneous computing environment can exchange data in a reasonable delay. Therefore data-parallel tasks distributed on different parallel computers can interact efficiently by reading or writing Data Parallel Objects. These objects are distributed on the physical nodes according to the mapping directives. Migrations of data parallel objects from one parallel computer to another lead us to define efficient algorithms for runtime array redistribution. In this work, we have specially cared about the ability to handle distinct source and target processor sets while performing redistribution and the ability to overlap communications and computations. Performance results on a farm of ALPHA processors are discussed.
Data-parallel languages support a single instruction flow; the parallelism is expressed at the instruction level. Actually, data-parallel languages have chosen arrays to support the parallelism. This regular data structure allows a natural development of regular parallel algorithms. The implementation of irregular algorithms necessitates a programming effort to project the irregular data structures onto regular structures. In this article we present the different techniques used to manage the irregularity in data-parallel languages. Each of them will be illustrated with standard or experimental data-parallel language constructions.
Les langages à parallélisme de données supportent un flot unique d'instructions ; le parallélisme s'exprime au niveau de l'instruction. De par les faits, les langages data-parallèles ont choisi les tableaux comme support du parallélisme. Cette structure de données régulière permet de façon naturelle le développement d'algorithmes parallèles réguliers. La mise en oe uvre d'algorithmes irréguliers nécessite un effort de la part du programmeur afin de projeter ses structures de données irrégulières sur des structures régulières. Dans cet article nous présentons les différentes techniques mises en oe uvre pour traiter de l'irrégularité dans les langages data-parallèles. Pour chacune, nous nous appuierons sur des langages data-parallèles standards ou expérimentaux.
Les langages à parallélisme de données se limitent à la manipulation d'ensembles de données réguliers dont la taille et la structure ne peuvent évoluer dynamiquement. Dans cet article, nous présentons un nouveau modèle de programmation data-parallèle : le modèle IDOLE (Irregular Data-parallel Object LanguagE) qui permet de prendre en compte les structures irrégulières et dynamiques. Nous nous intéresserons particulièrement aux extensions que nous avons apportées à C++ pour implanter ce modèle. Nous proposerons aussi une méthodologie de programmation utilisant ces extensions.
Avec la généralisation des réseaux rapides, il est aujourd'hui possible d'accroître les performances d'un programme en exécutant les tâches qui le composent sur différentes machines parallèles. De telles applications nécessitent des calculs de redistributions dynamiques, afin de migrer à l'exécution, les données d'une machine vers un autre. Dans cet article, nous montrerons qu'il est possible dans la majorité des cas, de construire des algorithmes de redistributions qui recouvrent les calculs et les communications en tirant profit de toutes les ressources disponibles. Les performances obtenues sur une ferme de processeurs sc ALPHA sont ensuite présentées.
Nous introduisons dans ce papier des travaux que nous développons actuellement pour répondre aux problémes posés par la proggrammation des applications temps réels complexes sur architectures hétérogènes. Dans le modèle proposé, les relations temporelles complexes existant entre les différents signaux d'un programme sont appréhendées suivant une approche synchrone, et compilées dans un modèle d'exécution asynchrone sous la forme de tâches concourantes communicantes.
We present in this paper a new approach to the problem of programming complex real-time applications on heterogeneous architectures. Assuming that the synchronous and aynchronous models have both significant advantages, we propose to merge them in a single framework. Indeed, the synchonous model provides the properest formal context to reason about time, when the asynchonous approach corresponds to a very attractive execution model.
Many scientific computation algorithms require the use of irregular data structures (irregular meshes, sparse matrix). Such structures are not yet handled by standard data-parallel languages which mostly consider regular data sets. IDOLE (Irregular Data-parallel Object LanguagE) is a C++ extension, specially designed to manage irregular data structures. It implements the HELP model [1]: based on a referential semantics, it allows programmers to manipulate Data-Parallel Objects (aggregates of elements) on collections (virtual machines defined by a set of virtual processors and interprocessor connections). Using object language concepts, methods are associated to collections and DPOs. Collections are configured in the program and can be modified at runtime. Such irregular dynamic collections fit strongly the requirements of scientific algorithms. Moreover, DPOs are also dynamic. To embody irregular and sparse computations, they can be defined on a whole collection as well as on a subset of a collection.
To share the work evenly among the processors is a crucial problem in order to fully exploit the parallel computers. The objective of any dynamic load balancing algorithm is to improve the overall performance of the machine by redistributing the work among the processors in order to minimize the program execution time. We proposed several load balancing schemes especially suited for data-parallel algorithms on SIMD computers. This paper presents the theoretical analysis of these load-balancing strategies.
We introduced in this paper, an unified language for heterogeneous real-time image processing architectures. In our programming model, body of tasks is specified in a single standard data-parallel language. This language has been improved with a few additionnal keywords needed to describe the timing relations among signals. At the programmer level, these communications are implicit, and they are transparently translated in PVM by the compiler.
Les matrices creuses sont manipulées dans de nombreux domaines d'applications scientifiques intensives. La compression des données est indispensable du fait de la taille des données traitées et de l'importante proportion d'éléments non-significatifs. Cette phase de compression demande au programmeur un lourd travail d'adaptation de l'algorithme du fait de l'absence de support logiciel adéquat. Dans cet article, nous proposons une approche de la programmation creuse qui s'abstrait de la représentation creuse des données en déléguant cette compression au compilateur. L'environnement ainsi défini permet le développement à très faible coût pour ces structures creuses d'algorithmes non-spécifiquement développés sur des données creuses.
Les performances élevées des réseaux tels que FDDI ou ATM permettent la construction de méta-machines regroupant un grand nombre d'ordinateurs parallèles. Pour exploiter ce potentiel qu'offre aujourd'hui le matériel, nous proposons un langage de commandes à parallélisme de données. Celui-ci permet de construire des applications hétérogènes à partir d'un ensemble de tâches data-parallèles qui coopèrent en travaillant sur un même problème.
The data parallelism allows the efficient use of massively parallem systems, especially for an high number processors. The programmer simultaneously helds a great number of data, by the sequential application of parallel treatments. The scientific algorithmic is already based on this data-parallel paradigm. We propose a geometrical approach of this programming model. The user-defined data structures are aligned into the same abstract notion: the hyper-space. The expression-based semantic implemented in this model allows two ways of seeing: the microscopic one deals with computations while the macroscopic one deals with communications expressed inside an hyper-space by the way of a geometrical modelization. This distinction increases the code readability, and is also influent during the compilation phase. The hyper-space information makes the introduction of some optimisation techniques possible in the compiler. For example, the memory allocation of data-parallel objects are realized by the splitting of physical ressources along hyper-space set of points. The expression evaluation becomes more efficient by decreasing the memory access time. The virtualization loop could also be reduced by minimizing the number of iterations. These results are illustrated by some performance measurements. Finally, this study is extended by the heterogeneous programming provided by the geometrical model : an hyper-space is associated to a physical node. The sparse matrix computation is also integrated into the language and its compiler, providing a total abstraction of the compression phase.
Le parallélisme de données permet l'exploitation efficace des machines massivement parallèles, en particulier lorsque le nombre d'unités de calcul dépasse le millier. Le programmeur manipule simultanément un grand nombre de données, en leur appliquant un traitement unique séquentiellement décrit. L'algorithmique scientifique accède au parallélisme par ce biais : la majorité des applications numériques intensives sont d'ores et déjà programmées en utilisant le paradigme du parallélisme de données. Nous proposons une approche géométrique de ce modèle de programmation. Les structures de données définies par l'utilisateur sont regroupées et alignées au sein d'une entité abstraite, référentiel de toute manipulation : l'hyper-espace. L'adoption d'une sémantique des expressions basée sur ce référentiel permet d'offrir au programmeur deux vues clairement distinctes : la vue microscopique permet l'expression du parallélisme de calcul ; la vue macroscopique permet les communications parallèles à travers l'hyper-espace par une modélisation à base de primitives géométriques. Cette séparation est importante pour la phase de génération de code. Nous montrons que l'hyper-espace est une information dont l'exploitation par le compilateur autorise l'introduction de nouvelles techniques d'optimisation du code exécutable. En particulier, l'allocation mémoire des objets est issue de l'attribution des ressources physiques aux points de l'hyper-espace. Le temps d'évaluation d'une expression est optimisé par un abaissement sensible du temps d'accès aux données. La gestion de la boucle de virtualisation peut aussi profiter de la modélisation géométrique qui autorise la diminution du nombre d'itérations nécessaires au traitement d'une expression. Ces résultats sont illustrés par des mesures de performances issues de l'atelier de développement produit durant cette thèse. Enfin, cette étude est étendue vers un domaine plus large. La problématique de la programmation hétérogène est abordée par l'association d'un hyper-espace à une machine du réseau hétérogène. L'étude de l'adéquation du modèle aux structures creuses a permis de proposer une approche originale du traitement de l'irrégularité des données, qui fournit au programmeur l'abstraction totale de la phase de compression.
The help project proposes a model of data-parallel programming allowing a programmer to develop an algorithm the nearest of his thought. Usually, for many parts of a data-parallel program, the manipulations of data could be modelized as geometrical migrations inside a cartesian reference space. We define the language chelp in the frame of explicit data-parallel languages, the communications and the computations are separated, moreover any v ector description is banished. This model and the associated languages are based on the hyper-space notion, and the algorithm development follows an original semantic of computations limited to a set of hyper-space points. The hyper-space is not onl y a compilation-oriented concept but consists in a multi-dimentional virtual arr ay integrated at the programming model and provides a referential for any object access.
Le parallélisme de données est un modèle de programmation parallèle. De par la simplicité des concepts mis en oe uvre, l'adéquation du modèle avec les structures de données utilisées dans les applications et son adéquation avec le fonctionnement des machines parallèles, ce modèle est amené à se populariser comme un modèle << universel >> de programmation parallèle. De nombreux langages à parallélisme de données sont maintenant offerts aux programmeurs. Nous présentons les caractéristiques des langages à parallélisme de données proposés par les nouvelles normes émergentes – Fortran 90, High Performance Fortran –, par les constructeurs de machines parallèles – CM Fortran, MP Fortran, C*, MPL –, ou par des travaux de recherches indépendants – Fortran D, POMPC.