Projet Api

previous up next contents
Précédent : Logiciels Remonter : Projet API, Architectures parallèles intégrées Suivant : Actions industrielles



Résultats nouveaux

Synthèse d'architectures parallèles régulières

  Mots-clés : synthèse d'architecture, CAO, ASIC




Participants : Franck Bardoult , Florent Dupont de Dinechin , Patricia Le Moënner , Laurent Perraudeau , Patrice Quinton , Fabien Quilleré , Sanjay Rajopadhye , Tanguy Risset , Doran Wilde .


Résumé : Le langage Alpha offre la possibilité de développer une plate-forme de synthèse de haut niveau pour des algorithmes réguliers (traitement du signal, algèbre linéaire par exemple), jusqu'au niveau architectural (ou niveau transfert de registres). Le processus de conception comprend divers traitements complexes (parallélisation, description d'architecture par exemple) qui constituent autant de sujets de recherche. La validation des techniques peut être faites grâce au logiciel MMAlpha (voir section [*]).


Dans la plupart des systèmes de traitement spécialisés, les algorithmes intensifs en calcul, candidats à une mise en oeuvre parallèle et intégrée, sont de nature très régulière. Le passage d'un algorithme régulier à sa version parallèle est un sujet de recherche très actif au niveau international, dans lequel notre projet a une place reconnue. Sur le plan technique, il s'agit de spécifier l'algorithme considéré à l'aide d'un système d'équations récurrentes, puis, par raffinements progressifs, à amener ce système sous une forme qui correspond directement à son exécution sur une architecture régulière. À partir du résultat, on peut alors soit produire un circuit, soit engendrer du code de type SPMD pour une machine parallèle .

Notre effort est concentré sur le développement du logiciel MMAlpha (voir section [*]) pour la synthèse d'architectures régulières - notamment systoliques - par transformations interactives. Le langage Alpha est la base de ce logiciel. Il autorise à la fois l'expression d'un algorithme parallèle régulier, et la description d'une architecture synchrone qui en supporte l'exécution.

Nos recherches en 1997 ont porté sur les aspects suivants, (qui sont détaillés plus loin):

La méthodologie classique de synthèse de réseaux systoliques est restreinte aux réseaux synchronisés par une horloge unique. Les circuits multi-horloges sont pourtant fréquemment rencontrés et leur modélisation est difficile. Signal est un langage flot de données permettant de décrire des applications où le contrôle est complexe. Un environnement de co-synthèse comprenant Signal et Alpha pourrait tirer avantage des complémentarités entre les deux langages. Une interface entre les langages Alpha et Signal est en cours de définition. Cette interface est générée grâce aux fonctions disponibles dans MMAlpha et aux informations déduites de l'analyse statique de programmes Alpha.

L'ordonnancement est une étape importante du processus de synthèse puisque la notion de temps n'est pas explicite dans la sémantique originale de Alpha. L'implémentation d'une méthode d'ordonnancement a permis d'automatiser grandement le processus de synthèse. Son extension à des programmes Alpha structurés s'est révélée nécessaire en raison de la complexité de plus en plus grande des programmes traités par MMAlpha. Une première étude a été réalisée pour proposer un algorithme d'ordonnancement structuré [25].

Un des obstacles à l'efficacité du code généré à partir d'Alpha est la grande quantité de mémoire utilisée à cause de la règle d'assignation unique. Une étude approfondie pour la réutilisation de mémoire est en cours, il s'agit de détecter automatiquement, pour un ordonnancement donné, la durée de vie de toutes les variables pour pouvoir réutiliser la mémoire aussi vite que possible.

La structuration du langage Alpha a permis de définir un sous-ensemble appelé AlpHard autorisant une description hiérarchisée d'une architecture en vue de la synthèse d'un circuit [11]. AlpHard fait apparaître clairement les cellules élémentaires et leur assemblage régulier, ainsi que le contrôle du réseau. Il autorise aussi la représentation de réseaux hétérogènes. Un traducteur de AlpHard vers le langage de description de circuits VHDL est en fin de réalisation. Ce traducteur a été testé sur plusieurs exemples : des opérateurs arithmétiques, un réseau systolique pour le calcul des bases de Gröbner et un circuit pour l'estimation de mouvement.

Les recherches sur les FPGA effectués dans le projet montrent que la programmation de ces circuits reconfigurables nécessite des outils qui n'existent pas encore. L'adaptation de la méthodologie de synthèse aux FPGA devrait se faire rApidement. Un travail a débuté pour réaliser une passerelle du sous ensemble AlpHard vers des architectures reconfigurables en utilisant les informations de régularité.

Enfin, le développement de MMAlpha s'est poursuivi. Les fonctions existantes ont été consolidées, une version pour les utilisateurs extérieurs à l'Irisa a été mise en place, elle a été installée à l'université de Reading dans le cadre d'une collaboration Alliance. Dans le cadre de cette collaboration, des parties logicielles vont être développées à Reading et pourront être intégrées dans MMAlpha

Compilation pour processeurs spécialisés programmables



Participants : François Charot , Gwendal Le Fol , Vincent Messé , Charles Wagner


Résumé : Les acquis du projet dans ce domaine résultent des recherches menées sur l'architecture Movie, développée avec le CCETT pour le traitement vidéo.

Les travaux de recherche conduits en 1997 concernent à la fois des aspects de formalisme de modélisation pour l'architecture servant à paramétrer le compilateur, et des aspects de réalisation d'une plate-forme de compilation reciblable.


Bilan de Movie

Les travaux réalisés autour de Movie visaient à spécifier une architecture parallèle spécialisée et programmable destinée au traitement vidéo. Ces travaux ont été en partie menés dans le cadre d'une collaboration avec le CCETT, qui avait exprimé le besoin pour de telles architectures.

Les caractéristiques principalement retenues dans cette perspective ont été la modularité et la flexibilité, gages de simplicité de mise en oeuvre, d'évolutivité et d'adaptabiblité dans le contexte d'applications de complexités différentes. L'approche "brique de base", tant matérielle que logicielle, a guidé ces travaux.

Du point de vue du modèle de machine, Movie est l'aboutement de modules identiques, constitués d'un processeur d'entrée/sortie et d'un réseau linéaire de processeurs de calcul (groupes de cellules systoliques). Le modèle de calcul est SIMD. Un séquenceur externe alimente les modules avec deux flots d'instructions. L'architecture du circuit Movie a été entièrement spécifiée à l'aide du langage de description de matériel VHDL et synthétisée avec l'outil Compass.

Au cours de ces travaux, notre souci a été de garder une adéquation forte entre les trois axes de conception d'une machine spécialisée : l'architecture, la programmation et les applications (thèse de Gwendal Le Fol, [10]). Une grande partie des travaux a donc concerné les outils nécessaires à la programmation et à une exploitation efficace de l'architecture. De façon à répondre au mieux aux besoins d'évolutivité du domaine du codage vidéo, la recherche de flexibilité a été un de nos soucis majeurs. Celle-ci a été abordée autant du point de vue de la programmabilité en offrant un langage et un environnement de compilation performants pour l'écriture d'applications, que du point de vue de l'extensibilité de l'architecture, grâce à la notion de groupes de cellules systoliques facilement configurables.

Du point de vue de l'environnement de programmation, nous avons choisi de nous appuyer sur des outils de compilation existants et reciblables. Cette approche a permis de faire progresser simultanément la conception du flot de compilation et la définition de l'architecture, elle a aussi permis de poser les bases d'une chaîne de compilation flexible.

Formalisme de modélisation de processeurs

La modélisation de l'architecture du processeur cible est la base des techniques de compilation reciblable. En effet, chaque composante d'une chaîne de compilation a besoin d'informations sur l'architecture du processeur cible et l'écriture d'une description de l'architecture propre à chaque outil représente un travail considérable, les risques d'incohérence entre les différentes description étant par ailleurs importants. Cette grande palette d'outils suggère l'emploi d'une description unique, à partir de laquelle sont extraites les informations utiles aux différents outils. Le formalisme doit permettre une modélisation rApide de l'architecture, qui soit lisible, compréhensible par un concepteur de processeur et exploitable par les différentes passes du compilateur.

Les quelques approches de modélisation existantes (Mimola, nML, SDL,etc) nous ont semblé insuffisantes, soit parce qu'elles reposent sur une vision de trop bas niveau de l'architecture, soit parce qu'elles sont trop liées à la syntaxe de l'assembleur et au codage des instructions.

Le souhait d'utiliser un modèle comportemental détaché du langage assembleur du processeur cible nous a conduit à définir un langage de description adapté à nos besoins. La structure du formalisme défini est directement inspirée de nML, qui parmi les langages existants est celui qui s'adapte le mieux à ce contexte d'utilisation. Le formalisme défini permet de modéliser les instructions du processeur avec leur sémantique, leur utilisation des ressources matérielles, et exprime le parallélisme interne de l'architecture. Des processeurs tels que Movie, le processeur de traitement de signal (DSP) TMS320C62xx de Texas Instruments et le coeur de DSP D950 de Sgs-Thomson nous servent de support d'étude.

Plate-forme de compilation reciblable

L'exploitation des descriptions de processeurs est étudiée autour d'un prototype de chaîne de production de code qui s'appuie sur des outils existants, choisis en raison de leur complémentarité : Suif (format intermédiaire développé à l'université de Stanford), pour les parties hautes de la compilation, Olive pour la sélection de code, Salto pour l'optimisation. Suif est bien adapté à l'expérimentation de techniques de compilation, et permet le développement de nouvelles passes de compilation, en vue de réaliser les transformations dépendantes ou pas de l'architecture, préalablement à la sélection de code et à l'optimisation. Olive permet la production de générateurs de générateurs de code capables de calculer la couverture de l'arbre d'expressions du programme par des motifs issus d'une description du jeu d'instructions du processeur. Salto, développé à l'Irisa dans le projet Caps, est un outil de restructuration de code au niveau assembleur, paramétré par une description de l'architecture du processeur.

À partir de la description du processeur, les transferts de registres et les instructions sont reconstituées, puis des fichiers d'entrée pour les outils Olive et Salto sont générés automatiquement.

Conception de machines parallèles intégrées (Samba)

 

Participants : Pascale Guerdoux-Jamet , Dominique Lavenier


Mots-clés : biologie moléculaire, accélérateur systolique, banques de séquences génomiques


Résumé : Les tests et la validation de Samba, un accélérateur systolique pour le traitement des séquences génomiques (cf section [*]), se sont déroulés autour des applications suivantes :

Dominique Lavenier a reçu le prix Seymour Cray France 1996 pour cette architecture.


Exploration de banques du génome

L'exploration de banques génomiques consiste à mettre en évidence des similitudes entre une séquence test (une séquence inconnue) et les séquences d'une banque. D'un point de vue biologique, l'hypothèse est que si les textes des séquences se ressemblent, leurs fonctionnalités peuvent également présenter des similitudes. La mise en oeuvre de ce traitement sur Samba conduit à des accélérations comprises entre 20 et 100, suivant la taille de la séquence test.

Étude des séquences orphelines

Le séquençage complet du génome de la levure vient de s'achever. Tous les gènes ont été recensés et traduit en séquences protéiques. Après consultation des banques, plus de 800 de ces séquences n'ont pas trouvé d'équivalent, soit parce qu'elles sont effectivement uniques, soit parce que les banques sont incomplètes, ou parce que les algorithmes sont incapable de à trouver des ressemblances. Ce dernier point a été testé en exécutant sur Samba un algorithme réputé performant, mais extrêmement coûteux en calcul. Avec Samba le traitement a été réalisé en 12 heures alors qu'il aurait demandé 3 mois de calcul intensif sur une station de travail (Dec Alpha 150Mhz).

Construction de familles de protéines homologues

Le génome de la bactérie E. Coli vient également d'être entièrement séquencé. 4285 séquences codantes ont été répertoriées. Une des premières tâches, en amont d'études biologiques plus poussées, consiste à classer ces séquences en fonction de leur homologie. Cela revient à faire une comparaison exhaustive des 4285 séquences codantes (traduites en protéine), et à estimer la qualité du résultat de comparaison. Avec Samba, ces deux tâches, très coûteuses en calculs, ont pris moins d'une heure (comparé aux 10 jours sur une Sparc 20).

Études algorithmiques pour la décomposition en valeurs singulières

Mots-clés : programmation parallèle, modèle polyédrique, SCV, BLAS, matrices Hessenberg




Participants : Patrice Quinton , Sanjay Rajopadhye , Tanguy Risset , Sophie Robert .


Résumé : L'algorithme de décomposition en valeur singulière est utilisé dans de nombreuses applications (téléphone portable par exemple). Son étude approfondie permet d'améliorer l'algorithme et d'appliquer les techniques de haut niveau développées par ailleurs.


La décomposition en valeurs singulières d'une matrice est un algorithme qui apparaît dans de nombreuses applications, du traitement du signal à l'analyse numérique. Nous sommes intéressés par le développement d'un nouvel algorithme particulièrement bien adapté aux portraits spectraux dont les applications à la stabilité numérique sont nombreuses. Le portrait spectral d'une matrice A ne nécessite pas une décomposition totale mais autant de calculs de plus petites valeurs singulières de A - zI que de z choisis.

Un algorithme à base d'itérations de Lanczos a été mis au point sur un plan numérique. Une implémentation portable à l'aide des librairies ScaLapack et Blacs a été expérimentée sur la machine Intel-Paragon. Cependant une adaptation des fonctions ScaLapack utilisées a été nécessaire. Cette adaptation est à l'origine d'une démarche de spécialisation de fonctions (suppression des opérations nulles lorsque la matrice initiale contient une partie nulle de forme régulière) dans l'environnement MMAlpha.

Cette application est abordée dans le cadre du projet Européen Stable en collaboration avec le projet Aladin de l'Irisa et des institutions des pays de l'est.



previous up next contents Précédent : Logiciels Remonter : Projet API, Architectures parallèles intégrées Suivant : Actions industrielles