Projet Api

Précédent : Présentation générale et
objectifs Remonter : Projet API, Architectures parallèles intégrées
Suivant : Grands domaines d'application
Mots-clés : synthèse d'architecture,
CAO,
ASIC
Résumé : La synthèse de circuits se fait aujourd'hui à
partir de spécifications de plus en plus haut niveau. La
spécification de programmes effectuant des calculs réguliers
sous forme d'équations récurrentes permet des analyses
statiques puissantes et des transformations de programmes pour
la dérivation d'architectures régulières.
Le développement des systèmes d'équations récurrentes uniformes
(SERU) commence vers la fin des années 60 avec les travaux de
Karp, Miller et Winograd [KMW67] qui proposent l'expression
d'algorithmes itératifs comme des systèmes d'équations
récurrentes uniformes. Ensuite, Lamport utilise les mêmes
concepts dans le domaine de la parallélisation [Lam74]. A la fin des années 70,
apparaissent les réseaux systoliques [KL80], architectures spécialisées
synchrones régulières possédant un contrôle décentralisé. Au
début, de telles architectures sont conçues <<à la
main>> par des concepteurs spécialistes, souvent avec des
astuces remarquables. Puis, plusieurs recherches indépendantes
montrent que le formalisme des équations récurrentes -- au
départ, une seule équation uniforme (ERU), puis des systèmes
uniformes (SERU), ensuite des équations affines (ERA) et
enfin des systèmes d'équations affines (SERA) s'adaptent
bien à la synthèse de tels réseaux [Qui84,QR89,RPF86,QV89]. Ce formalisme et ses
extensions donnent lieu à ce qui est communément appelé le modèle
polyédrique, base du langage Alpha développé dans
API. Le choix du modèle polyédrique est motivé par
plusieurs raisons.
- Le problème d'ordonnancement des SERU est souvent résolu
par la programmation linéaire (les solutions appartiennent donc
à un polyèdre) utilisant une représentation compacte. Cette
méthode repose sur le fait que les dépendances entre calculs
peuvent être représentées par un nombre fini de vecteurs
(indépendamment de la taille du problème).
- Pour des équations affines, le problème d'ordonnancement
est plus difficile car il n'y a pas un nombre fini de
dépendances. Néanmoins, dans le cas où le domaine (les
ensembles d'indices où les équations sont définies) sont des
polyèdres, on peut profiter d'une représentation compacte de
ces polyèdres (un nombre fini de sommets et de rayons, par
exemple) pour formuler les contraintes d'ordonnancement par un
programme linéaire.
- Une troisième motivation vient du fait qu'un SERA peut être
vu comme un programme fonctionnel. Les manipulations classiques
de synthèse systolique (notamment l'ordonnancement et
l'allocation) peuvent être vues comme des transformations
géométriques (aussi appelées transformations espace-temps). Ces
transformations peuvent être appliquées de manière automatique
si les systèmes d'équations sont des SERA avec des domaines
polyédriques. Le langage Alpha est basé sur ces
fondements.
- Il y a d'autres champs d'application que la synthèse
systolique (le domaine de la parallélisation automatique des
boucles par exemple). P. Feautrier a montré [Fea91] que l'analyse exacte
de flot de données d'un programme composé de boucles à contrôle
statique (correspondant à des boucles dont les bornes d'indices
et les accès aux tableaux sont des fonctions affines), donne un
SERA dont les domaines sont polyédriques. Le paralléliseur
automatique de Fortran (PAF) développé dans son équipe utilise
donc une généralisation et une extension des techniques de
synthèse systolique (ordonnancement multidimensionnnel,
placement et allocation de mémoire pour réduire la
communication dans des machines à usage générale) pour générer
du code parallèle. Du fait de l'évolution des circuits, et que
l'on trouve de plus en plus de composants programmables, le
modèle polyédrique est donc un modèle fondamental pour la
conception conjointe.
Il existe de nombreux environnements pour la synthèse
automatique d'architectures spécialisées (Diastol, Presage,
HIFI, Cathedral, SADE,
PEI et MMAlpha).
Alpha [Mau89] et
MMAlpha ont évolué à partir de
Diastol et constituent aujourd'hui un environnement pratique pour
la manipulation d'équations récurrentes affines et la synthèse
(dite de très haut niveau ) d'architectures
spécialisées.
La synthèse de haut niveau à partir d'Alpha se fait par
transformations successives de programmes pour aboutir, par
exemple, au format quasiment normalisé de
VHDL synthétisable ce qui permet de
s'affranchir de la partie basse de la synthèse qui a été
largement étudiée depuis de nombreuses années. Pour certaines
technologies récentes, les FPGA par
exemple, il est nécessaire que l'on descende plus bas dans la
synthèse. Néanmoins, le modèle polyédrique, le langage Alpha et
l'environnement MMAlpha constituent les fondements pour la
synthèse de très haut niveau des systèmes spécialisés, soit en
logiciel soit en matériel.
Les principales limitations de ce modèle proviennent du fait
qu'il ne traite que difficilement le problème de partitionnement
sous contraintes de ressources et qu'il est difficile d'exprimer
un contrôle dynamique du programme.
Pour plus de détails, voir http://www.irisa.fr/api/Rajopadhye/HiPC96.html
, un tutoriel <<Why Systolic Arrays: the real
answer>> présenté à HiPC 96 par Quinton et Rajopadhye.
Les détails du langage Alpha et son environnement de
programmation et de transformation sont disponibles à http://www.irisa.fr/api/ALPHA
.
Précédent : Présentation
générale et objectifs Remonter : Projet API, Architectures parallèles
intégrées Suivant : Grands domaines d'application