• Aucun résultat trouvé

Conclusion et perspectives

cinquante ´etapes successives.

Notre approche se d´emarque de ces travaux de la mˆeme mani`ere que les transformations dans le mod`ele poly´edrique se diff´erencient des flots it´eratifs d’optimisation. En effet, les ordonnancements af- fines nous permettent de mod´eliser de multiples compositions complexes de transformations de boucle par la simple modification des coefficients d’ordonnancement d’instructions sp´ecialis´ees candidates.

L’approche propos´ee par Trifunovic et. al [182] transforme automatiquement un nid de boucle afin de faire apparaˆıtre des instructions vectoris´ees (pour un facteur de vectorisation donn´e) et mi- nimise la dur´ee d’ex´ecution totale en tenant compte du surcoˆut des alignements m´emoire issus de la vectorisation. L’algorithme est it´eratif et utilise les transformations affines pour faire apparaˆıtre les vectorisations qui minimisent la fonction de coˆut. L’approche n’est applicable qu’`a un code o`u les tailles des tableaux sont connues et o`u les espaces d’it´eration ne sont pas param´etr´es. Cette ap- proche n’est pas `a proprement parl´e li´ee `a l’extension de jeu d’instructions mais constitue une piste int´eressante pour guider finement la vectorisation dans notre approche.

L’exploration it´erative de l’espace des ordonnancements affines l´egaux d’un programme, propos´e dans la m´ethode de Pouchet et. al [148, 147] (cf. sections 4.3.2 et 4.3.3), se rapproche ´egalement de notre probl´ematique. En effet, nous explorons ´egalement l’espace des ordonnancements l´egaux. Cependant, dans notre cas, cette exploration est faite par l’algorithme de r´esolution du CSP car la fonction de coˆut est connue : il s’agit de favoriser les performances en maximisant l’utilisation de l’extension tout en respectant des contraintes suppl´ementaires (e.g., pour la vectorisation).

6.7

Conclusion et perspectives

Dans ce chapitre, nous avons propos´e une approche originale qui utilise l’expressivit´e du mod`ele poly´edrique pour coupler les transformations de boucles `a l’extension de jeux d’instructions. Contrai- rement aux techniques existantes, c’est la s´election des instructions sp´ecialis´ees qui guide la trans- formation du code. Il est ainsi possible de s´electionner des regroupements d’op´erations se trouvant pourtant, `a l’origine, dans des blocs de base diff´erents.

La g´en´eralisation des ordonnancements affines modulaires aux cas multidimensionnels nous permet d’exprimer les contraintes de l´egalit´e pour chaque occurrence candidate `a la s´election. Cet aspect modulaire offre la possibilit´e d’ajouter des contraintes suppl´ementaires afin de r´epondre `a des exigences de performance (i.e., instructions vectorisables) ou encore `a des limitations architecturales.

L’extensibilit´e de notre algorithme constitue un terrain propice `a de futurs travaux. Pour le mo- ment, nous imposons que toutes les instructions sp´ecialis´ees contenues dans un macrobloc soient vectorisables. De plus, on consid`ere que les instructions d’un macrobloc communiquent entre elles par une m´emoire embarqu´ee sur l’extension mat´erielle. Cependant, la gestion d’une taille restreinte pour ces m´emoires embarqu´ees correspond `a r´esoudre un probl`eme conjoint d’ordonnancement affine et de contraction m´emoire.

Il s’agit d’un probl`eme extrˆemement difficile et qui reste, `a notre connaissance, ouvert pour des or- donnancements multidimensionnels. Il existe n´eanmoins des solutions dans le cas monodimensionnel. Ainsi, Thies [180] se base sur la notion de vecteur d’occupation pour contraindre les ordonnancements l´egaux en fonction d’une allocation m´emoire donn´ee. Cependant, il n’est pas ´evident que cette ap-

158 Chapitre 6. Espace conjoint de sp´ecialisation et d’optimisation de code

proche soit compatible avec la modularit´e requise par notre approche. Feautrier [57] propose, dans le cadre d’un ordonnancement modulaire monodimensionnel, d’effectuer une contraction de la premi`ere dimension d’un tableau dans une m´emoire dont la taille est born´ee. Le mod`ele de m´emoire utilis´e est un buffer circulaire qui permet de lier la date d’allocation d’une donn´ee dans la m´emoire et celle de sa destruction. Si cette approche borne simplement la taille de la m´emoire utilis´ee par un canal de communication, nous n’avons pas r´eussi `a la g´en´eraliser aux cas multidimensionnels.

D’autre part, nous n’avons pas encore pu mesurer exp´erimentalement la pertinence de notre ap- proche. En effet, les gains attendus se situent principalement au niveau de la localit´e des donn´ees et de l’exploitation du parall´elisme des instructions sp´ecialis´ees. Les perspectives `a plus court terme de ces travaux sont donc de g´en´erer une description mat´erielle de l’extension et de mettre en œuvre une ´etape de vectorisation.

Troisi`eme partie

Int´egration de m´ethodologies

logicielles dans la conception

d’outils pour la compilation

Chapitre 7

Compilation et ing´enierie dirig´ee

par les mod`eles

Comme ´evoqu´e dans les chapitres 1 et 3, l’extension du jeu d’instructions soul`eve de nombreux d´efis qui placent le compilateur au cœur du processus de conception. De plus, dans ce contexte, la compilation est caract´eris´ee par diff´erentes pr´eoccupations (e.g., s´election du jeu d’instructions, g´en´eration de code, ordonnancement, synth`ese mat´erielle, etc.) qui favorisent la multiplication des repr´esentations interm´ediaires. Dans ce chapitre, nous nous int´eressons aux moyens d’all´eger les dif- f´erentes tˆaches logicielles d’un compilateur optimisant par l’int´egration de m´ethodologies issues de l’ing´enierie dirig´ee par les mod`eles.

Sommaire

7.1 Introduction . . . 162 7.2 Les d´efis d’un compilateur optimisant . . . 163 7.2.1 Maintenabilit´e et p´erennit´e du code . . . 163 7.2.2 Validation structurelle des repr´esentations interm´ediaires . . . 164 7.2.3 Requˆetes complexes sur les repr´esentations interm´ediaires . . . 164 7.2.4 Interaction avec des outils externes . . . 165 7.2.5 Transformations pr´eservant la s´emantique . . . 165 7.2.6 Capturer les connaissances sp´ecifiques aux domaines . . . 165 7.2.7 G´en´eration de code. . . 166 7.3 Utilisation de l’IDM dans les compilateurs . . . 167 7.3.1 Les b´en´efices directs de l’IDM. . . 167 7.3.2 Utilisation des m´etaoutils existants . . . 169 7.3.3 D´efinition de nouveaux m´etaoutils . . . 171 7.3.4 Synth`ese des r´eponses de l’IDM aux d´efis d’un compilateur optimisant . . . 176 7.4 Applicabilit´e de l’IDM . . . 177 7.4.1 Clarification des objectifs . . . 177 7.4.2 Pr´erequis . . . 178 7.5 Conclusion . . . 179

162 Chapitre 7. Compilation et ing´enierie dirig´ee par les mod`eles

7.1

Introduction

Les recherches sur l’ing´enierie dirig´ee par les mod`eles (IDM) ont pour principal objectif de r´e- duire la complexit´e apparaissant accidentellement lors du d´eveloppement de syst`emes logiciels com- plexes [60]. Elles reposent sur une description logicielle abstraite associ´ee `a des technologies d’analyse rigoureuses de transformation en impl´ementations concr`etes [166]. Au cœur de l’IDM, se trouve la notion de mod`ele et de m´etamod`ele. Un mod`ele est une abstraction d’une entit´e concr`ete r´ealis´ee dans une intention particuli`ere. Un mod`ele ne repr´esente donc pas l’int´egralit´e d’une entit´e, mais uniquement un sous ensemble de ses caract´eristiques et comportements permettant de r´epondre `a un probl`eme sp´ecifique. Un m´etamod`ele est un langage de mod´elisation offrant une abstraction commune pour l’ensemble des mod`eles r´epondant `a la mˆeme intention. Les m´etamod`eles sont d´ecrits dans un unique m´etalangage tel que le Meta-Object Facility(MOF) de l’OMG. Les concepteurs peuvent utiliser ces langages de mod´elisation pour d´ecrire des logiciels complexes `a diff´erents niveaux d’abstraction et pour de multiples perspectives. L’IDM s’int´eresse principalement `a la transformation des descrip- tions d’artefacts logiciels en d’autres formes plus adapt´ees `a chaque besoin sp´ecifique. Par exemple, les techniques de l’IDM peuvent ˆetre utilis´ees pour transformer un mod`ele d´ecrit dans le langage de mod´elisation unifi´e (UML) [179] en un programme Java compilable et ex´ecutable. Un autre exemple consiste `a transformer la description abstraite d’un logiciel en un mod`ele permettant d’´evaluer les performances et la qualit´e de conception de ce logiciel.

De prime abord, les chercheurs de l’IDM et de la compilation optimisante s’int´eressent `a des probl`emes radicalement diff´erents. Cependant, les technologies matures de l’IDM offrent des facilit´es particuli`erement pertinentes pour des environnements de compilation ax´es sur la recherche. Ceux- ci utilisent des repr´esentations interm´ediaires raffin´ees, par des transformations successives, en des formes plus efficaces pour l’architecture mat´erielle cibl´ee. Ils sont donc, par essence, proches des pro- bl´ematiques de l’IDM. La structure d’une repr´esentation interm´ediaire (RI) peut alors ˆetre exprim´ee sous la forme d’un m´etamod`ele dont les instances (mod`eles) correspondent aux repr´esentations inter- m´ediaires de diff´erentes versions, ´eventuellement optimis´ees, du programme d’entr´ee du compilateur. D’autre part, les chercheurs en compilation optimisante ont besoin d’outils facilitant le d´eveloppement rapide d’un compilateur en constante ´evolution pour prototyper et ´evaluer de nouvelles id´ees. Pour ces raisons, il est int´eressant et utile de s’int´eresser `a l’int´egration de l’IDM au sein de la conception d’un compilateur optimisant dans un environnement de recherche.

Dans ce chapitre, nous illustrons le rˆole que peuvent jouer les techniques IDM dans la conception d’un compilateur de recherche. GeCoS1est un compilateur principalement orient´e source `a source qui

offre un haut niveau d’extensibilit´e. Il est notamment utilis´e dans l’exp´erimentation des diff´erentes approches ASIP pr´esent´ees dans les chapitres pr´ec´edents. Nous identifions les principales tˆaches r´ea- lis´ees au cours du d´eveloppement d’un tel compilateur et indiquons comment l’IDM aide `a r´eduire significativement leurs difficult´es de mise en œuvre. Les technologies de l’IDM ne concernent pas le m´etier des logiciels et, dans le cas particulier d’un compilateur, elles ne masquent pas la complexit´e ´elev´ee des algorithmes d’optimisation. Des attentes irr´ealistes sur ce que l’IDM peut apporter risquent d’amener `a une utilisation inefficace et frustrante de ces techniques. Afin d’´eviter cette situation, nous discutons de l’applicabilit´e de l’IDM dans le domaine sp´ecifique de la compilation optimisante.

La suite de ce chapitre est organis´ee de la mani`ere suivante. La premi`ere section identifie les

7.2. Les d´efis d’un compilateur optimisant 163