Projet Api

previous up next contents
Précédent : Grands domaines d'application Remonter : Projet API, Architectures parallèles intégrées Suivant : Résultats nouveaux



Logiciels

Panorama

Résumé : Pour le projet Api, cette section serait mieux vue sous le titre <<Réalisations>>. Elle inclut les réalisations de machines spécifiques, en plus des logiciels de conception d'architectures.

Les realisations au niveau logiciel du projet Api sont matérialisées par MMAlpha pour la synthèse de haut niveau, et C-stolic, pour la programmation de réseau systoliques linéaires. La réalisation de l'accélérateur systolique Samba, dédié à la comparaison de séquences biologiques un exemple d'application de techniques systoliques


MMAlpha

 

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


Mots-clés : synthèse d'architecture, CAO, ASIC, programmation fonctionnelle, parallélisme de données, parallélisation automatique


Résumé : Le logiciel MMAlpha est une plate forme écrite en Mathematica et C permettant de manipuler des programmes Alpha dans le double but de générer soit des architectures régulières à partir de spécifications de haut niveau, soit du code pour des machines programmables. Les techniques utilisées sont celles de la parallélisation automatique et de synthèse de la réseaux systoliques.

MMAlpha est un logiciel qui implémente des transformations sur le langage Alpha. Le langage Alpha a été proposé par Christophe Mauras lors de sa thèse en 1989 [Mau89]. L'implémentation est écrite dans les langages Mathematica (d'où le nom MMAlpha) et sur une bibliothèque ecrite en C.

Le noyau de ce logiciel est la librairie polyédrique développée par Hervé Le Verge et Doran Wilde [Wil93]. La librairie polyédrique permet la manipulation de polyèdres et de fonctions affines. La manipulation des domaines utilisés dans les équations récurrentes ou des espaces d'indices décrits par les boucles imbriquées justifie l'emploi d'une telle librairie. Cette librairie est actuellement utilisée (indépendamment de MMAlpha) par plusieurs organismes de recherche (Angleterre, Etats Unis, ainsi qu'en France).

Les transformations de programmes Alpha sont implémentées en utilisant les possibilités de Mathematica et de la librairie polyédrique. Le principe d'utilisation de ces transformations est de dériver soit une architecture soit du code séquentiel ou parallèle à partir d'une spécification algorithmique d'un traitement. Ces transformations sont semi-automatiques, c'est à dire que les actions à effectuer sont indiquées par l'utilisateur mais la transformation elle-même est exécuté par MMAlpha, ce qui permet de limiter les erreurs lors de la manipulation manuelle de programmes. Il est possible d'effectuer une dérivation automatique par défaut mais l'expérience montre que l'espace de conception est si important que cela est rarement satisfaisant.

La méthodologie de conception est héritée de la méthode de synthèse de réseaux systoliques, ce domaine a été longuement étudié du point de vue théorique et l'environnement MMAlpha permet de tester les différentes stratégies de synthèse existantes, d'étudier différentes possibilités de parallélisation et de générer une description architecturale d'un circuit grâce au format AlpHard (sous-ensemble du langage Alpha). La communication avec les outils de synthèse logique se fait grâce à une traduction automatique du format AlpHard vers VHDL.

Le logiciel MMAlpha (http://www.irisa.fr/api/ALPHA/ , correspondant: Tanguy Risset, risset@irisa.fr).) est en cours de dépôt à l'association de protection des programmes, il a été le support d'implémentation de nombreuses thèses réalisées à l'Irisa. Il n'est pas encore en domaine public, il est distribué à quelques équipes de recherche dans le cadre de collaborations précises (voir section [*]). Actuellement c'est un des seuls outils permettant de décrire un algorithme et son implémentation matérielle dans le même langage et de déduire cette implémentation de manière semi-automatique.

C-stolic

 

Participants : Dominique Lavenier , Gwendal Le Fol


Mots-clés : algorithme systolique, simulation, parallélisme


Résumé : C-stolic est un langage adapté à la programmation d'algorithmes systoliques. Il se base sur un mécanisme fondamental : l'affectation systolique. Cette opération, associée à une nouvelle classe, baptisée <<systolic>>, explicite tous les mouvements de données au sein d'une architecture systolique.

Le compilateur génère un code portable sur différentes machines parallèles ainsi qu'une version séquentielle, disponible dans le domaine public, pour exécuter et valider la parallélisation d'algorithmes systoliques.


C-stolic est un langage à parallélisme de données qui reprend la syntaxe du langage C, avec deux extensions principales. La première est la définition d'une nouvelle classe d'objets, la classe systolic, qui représente les objets (les variables) manipulés sur le réseau systolique linéaire. La seconde extension est l'introduction de l'opérateur d' affectation systolique qui décrit, à la fois, les transferts de données au sein du réseau, et les communications avec l'extérieur du réseau.

La compilation d'un programme C-stolic génère deux codes (en C). L'un est associé au traitement externe (alimentation en données, récupération et traitement des résultats), l'autre représente la tâche exécutée par le réseau systolique. Ces deux codes sont synchronisés par des primitives de communication qui dépendent de la machine sur laquelle s'exécute le programme C-stolic.

Une version <<allégée>> du compilateur est disponible dans le domaine public (voir http://www.irisa.fr/CSTOLIC/ , correspondant: lavenier@irisa.fr). Cette version compile et exécute un programme C-stolic uniquement sur une machine séquentielle. Cet outil valide par simulation l'exactitude d'une description systolique d'un algorithme.

Samba

 

Participants : Pascale Guerdoux-Jamet , Dominique Lavenier , Charles Wagner


Mots-clés : biologie moléculaire, architecture systolique, comparaison de séquences


Résumé : Samba (Systolic Accelerator for Molecular Biological Applications) est un accélérateur matériel dédié à un traitement de base de la biologie moléculaire : la comparaison de séquences génétiques. Le coeur de l'accélérateur est un réseau linéaire de 128 processeurs. Connecté à un ordinateur hôte, l'accélérateur divise les temps de calcul liés aux traitements des séquences par un facteur 100. Dominique Lavenier a reçu le prix Seymour Cray France 1996 pour cette architecture.

La biologie moléculaire doit faire face à une croissance exponentielle des banques de données (banques de séquences nucléotidiques et protéiques). Les traitements informatiques associés, en dépit d'ordinateurs toujours plus performants, deviennent de plus en plus longs. Samba est une solution pour réduire fortement les temps de calcul dans ce domaine.

Le prototype réalisé dans l'équipe est bâti autour d'un réseau systolique linéaire de 128 processeurs (32 puces de 4 processeurs). Les processeurs sont des circuits full custom conçus spécialement pour accélérer une famille d'algorithmes propre à la comparaison de séquences génétiques. Ils sont donc paramétrables pour adapter le traitement à toutes les applications de la biologie moléculaire qui manipulent des séquences de manière intensive.

La programmation de l'accélérateur Samba fait appel à une bibliothèque de procédures et de fonctions que l'on inclut dans un programme C. Cette approche autorise l'élaboration de nouvelles applications de manière aisée et rApide.

L'accélération dépend de l'application. Typiquement, l'exploration d'une banque de séquences est 50 fois plus rApide que l'usage de programmes standards tels que SSearch ou Bestfit, programmes réputés pour la qualité des résultats produits, mais aussi par le temps de calcul excessif. Pour des applications encore plus coûteuses, en terme de quantité de calculs, comme la comparaison banque à banque, les performances de Samba sont optimales : il y a peu d'entrées/sorties (relativement au calcul) et le réseau systolique fonctionne à plein régime. Des accélérations de l'ordre de 200 et plus peuvent être obtenues (cf section [*]).

L'accélérateur Samba peut être tésté grâce à un site internet (correspondant: Dominique Lavenier, http://www.irisa.fr/SAMBA , lavenier@irisa.fr). ).



previous up next contents Précédent : Grands domaines d'application Remonter : Projet API, Architectures parallèles intégrées Suivant : Résultats nouveaux