Combler le fossé entre l'algorithmique spatiale haut-niveau et bas-niveau.

par Tien thao Nguyen

Projet de thèse en Informatique

Sous la direction de Pierre Valarcher.


  • Résumé

    L'informatique connaît une multiplication des architectures parallèles, voire massivement parallèles. Tirer partie de la puissance de calcul de ces architectures reste un défi non résolu, bien que des avancés constantes soient réalisées. Il est nécessaire d'inventer de nouvelles façons de penser une programmation adaptée de ces architectures en s'appuyant sur de nouveaux concepts et les idées permettant d'exprimer ces calculs. Afin d'appréhender cette tâche de façon générique, le mieux est de ne pas se focaliser sur une technologie particulière. L'évolution des technologies évoquées plus tôt tend vers une limite théorique identifiée depuis 1940 par Ulam et von Neumann : les automates cellulaires. C'est dans ce cadre que s'incrit ce projet de thèse. La programmation d'automates cellulaires consiste à mettre en coopération une grille régulière de "cellules" exécutant le même programme avec une mémoire finie, sachant que chaque cellule ne peut communiquer qu'avec les cellules les plus proches. Dès lors, le placement dans l'espace des informations prend une importance cruciale et la programmation devient intrinsèquement spatiale. On va même jusqu'à considérer la grille de cellules comme un espace de calculs, les données étant placées dans cet espace dont la géométrie dépend des communications entre les cellules. D'autres modèles spatiaux existent et pourront également être considérés durant la thèse telle que les architectures amorphes. Depuis les études de von Neumann sur l'autoréplication et la synchronisation d'automates cellulaires, un certain nombre de problèmes d'algorithmique spatiale ont été considérés. Ces solutions ont été developpées en construisant explicitement la table de transition des automates "à la main". Plus récemment, les travaux de Luidnel Maignan et Jean-Baptiste Yunès mettent en avant une approche haut-niveau permettant d'avoir une description formelle plus proche de l'intuition et de ne générer qu'en dernière étape une table de transition. Il s'agit de l'utilisation d'un concept de modularité et d'abstraction appelé champ cellulaire. Cependant, les tables de transitions générées ne sont pour l'instant pas comparables en terme de taille à celles produites à la main. Cette situation n'est pas sans rappeler la périod des premiers compilateurs et de la compétition entre programmation assembleur "à la main" et celle par compilation à partir d'un programme haut-niveau. En analogie avec cette histoire, le but est d'enrichir les méthodes permettant de générer des tables de transitions et également de mettre en place des processus d'optimisation permettant de réduire la quantité de mémoire utilisée. Au niveau théorique, une partie du travail s'apparente à la minimisation d'automates finis. En effet, un automate donné voit son comportement spécifié par le langage qu'il accepte. Lorsque l'on minimise un automate, c'est en conservant ce langage. Le concept de champ cellulaire permet de rendre explicite une notion similaire de langage et les optimisations à réaliser devront également conserver les langages. Il s'agit d'un nouveau point de vue théorique sur l'étude des automates cellulaires qui demande à être developpé en particulier. On pourra également espérer extraire des techniques d'optimisation par une étude de rétro-ingénierie sur le vivier de tables de transitions produites à la main évoquées plus tôt, formalisant ainsi les techniques appliquées empiriquement. Au niveau technologique, cette thèse s'intègre dans un projet de réalisation d'une plateforme de conception d'automates cellulaires. On pourra donc espérer une contribution logicielle sous la forme d'une implémentation concrete de la théorie au sein de cette plateforme, et une contribution à la programmation de la plateforme elle-même.

  • Titre traduit

    Bridging the gap between high-level and low-level spatial algorithms.


  • Résumé

    IT is experiencing a proliferation of parallel architectures, even massively parallel. Taking advantage of the computational power of these architectures remains an unresolved challenge, although constant advances are being made. It is necessary to invent new ways of thinking the programming of these architectures by relying on new concepts and ideas to express these computations. In order to understand this task generically, it is best to not focus on a particular technology. The evolution of technologies mentioned earlier tends to a theoretical limit identified since 1940 by Ulam and von Neumann: cellular automata. It is within this framework that this thesis project is. The programming of cellular automata consists in organizing the cooperation of a regular grid of "cells" executing the same program with a finite memory, knowing that each cell can communicate only with the nearest cells. Therefore, the placement of information in space becomes crucial and programming becomes intrinsically spatial. We will even consider the grid of cells as a computational space, the data being localized in this space whose geometry depends on the communications between the cells. Other spatial models exist and can also be considered during the thesis such as amorphous architectures. Since von Neumann's studies on self-replication and synchronization of cellular automata, a number of spatial algorithmic problems have been considered. These solutions have been developed by explicitly building the transition table of automata "by hand". More recently, the works of Luidnel Maignan and Jean-Baptiste Yunès put forward a high-level approach allowing to have a formal description closer to the intuition and to generate as a last step a transition table. It is the use of a concept of modularity and abstraction called cell field. However, the transitions tables generated are currently not comparable in size to those produced by hand. This situation is like the period of the first compilers and the competition between assembly assembler "by hand" and that by compilation from a high-level program. In analogy with this story, the goal is to develop methods for generating transition tables and also to set up optimization processes to reduce the amount of memory used. At the theoretical level, part of the work is related to the minimization of finite automata. Indeed, a given automaton sees its behavior specified by the language that it accepts. When we minimize an automaton, this is without changing this language. The concept of cellular field makes it possible to make explicit a similar notion of language and the optimizations to be realized will also have to preserve the languages. This is a new theoretical point of view on the study of cellular automata that needs to be developed in particular. One can also hope to extract optimization techniques by reverse-engineering the transitions tables produced by hand mentioned earlier, thus formalizing the techniques applied empirically. At the technological level, this thesis is part of a project to build a platform for designing cellular automata. We can therefore hope for a software contribution in the form of a concrete implementation of the theory within this platform and a contribution to the programming of the platform itself.