• Aucun résultat trouvé

L’algorithme original de Feautrier

6.2 Ordonnancement modulaire

6.2.1 L’algorithme original de Feautrier

Dans les paragraphes suivants, nous d´etaillons le principe de l’algorithme d’ordonnancement struc- tur´e de Feautrier [57]. Il constitue les fondements de notre approche et fait donc l’objet d’une attention particuli`ere.

6.2.1.1 Explication de l’algorithme

L’algorithme s’inspire des r´eseaux de processus de Kahn pour am´eliorer le passage `a l’´echelle de l’algorithme d’ordonnancement affine monodimensionnel [55]. Le principe est de d´ecomposer le PRDG d’une application en processus et d’´enoncer, de mani`ere modulaire, les contraintes de causalit´e d’un ordonnancement affine l´egal. Cette modularit´e permet une approche diviser pour r´egner qui d´ecompose l’ordonnancement d’une application en deux ´etapes successives.

Pour cela, on consid`ere qu’une application est structur´ee en processus ind´ependants qui commu- niquent entre eux par des canaux. Chaque processus est alors d´ecrit par un PRDG disposant de ports d’entr´ee et de sortie pour consommer ou recevoir des donn´ees d’un autre processus. Les ports respectifs du producteur d’une donn´ee et d’un consommateur sont reli´es par un canal de communication.

Un canal de communication A est assimil´e `a un tableau. Le producteur n’y ´ecrit une donn´ee A[x] qu’une seule fois et un consommateur peut y acc´eder plusieurs fois. `A chaque canal A, on associe une fonction d’ordonnancement affine θA indiquant la date `a partir de laquelle une donn´ee A[x] est

disponible dans ce canal :

θA(x) = µA1x+ µA2 (6.1)

Il est alors possible de garantir la modularit´e des processus, en exprimant la causalit´e d’une d´ependance de communication par deux contraintes ind´ependantes :

• Soit W : A[fW A(~i)] = . . . un nœud produisant la donn´ee A[fW A(~i)], le nœud W doit ˆetre

ordonnanc´e avant l’´ecriture de la donn´ee dans le canal :

∀~i ∈ DW, θA(fW A(~i)) ≥ θW(~i) (6.2)

• Soit R: . . . = A[fRA(~i)] un nœud consommant la donn´ee A[fRA(~i)], le nœud R ne peut lire la

donn´ee que si elle est disponible dans le canal :

∀~i ∈ DR, θA(fRA(~i)) + 1 ≤ θR(~i) (6.3)

Les contraintes de communication d’un processus sont construites en appliquant la contrainte 6.2

`

6.2. Ordonnancement modulaire 121

1

2 process P(outport int X[]){

3 int i;

4 for(i=0;;i++) 5 W: X[i] = f(i)

6 }

7

8 process Q(inport int Y[]){

9 int i,s; 10 Z: s=0; 11 for(i=0;;i++) 12 M: s = s + Y[i]*Y[i+2] 13 } 14 15 void main(){ 16 channel int A[]; 17 P(A); 18 Q(A); 19 }

W

P

Q

A

Z

�i�

�i + 2�

�i − 1�

�0�

M

Figure 6.1 – Syntaxe CRP et PRDG d’un r´eseau de deux processus (P et Q) communiquant par un canal A.

d’entr´ee.

L’algorithme modulaire d’ordonnancement monodimensionnel de Feautrier est divis´e en cinq ´etapes.

1. Construction des contraintes de l´egalit´e de chaque processus : respect de la causalit´e des d´epen- dances internes et des canaux de communication ext´erieurs.

2. ´Elimination, par projection (e.g., par Fourrier-Motzkin), des coefficients d’ordonnancement des nœuds internes `a chaque processus. L’ensemble des contraintes de l´egalit´e ne porte alors plus que sur les coefficients d’ordonnancement des canaux. Cette ´etape ainsi que la pr´ec´edente sont ind´ependantes du programme et peuvent provenir d’une biblioth`eque r´ef´eren¸cant les ensembles de contraintes associ´es `a chaque motif de processus.

3. Ordonnancement des canaux de communication de l’ensemble des processus de l’application. 4. Injection du r´esultat de l’ordonnancement des communications dans les contraintes de chaque

processus. Si n´ecessaire, les processus sont ordonnanc´es ind´ependamment pour identifier tous les coefficients d’ordonnancement internes.

5. G´en´eration du code (e.g., avec CLOOG [18]) pour les nœuds ordonnanc´es de tous les processus de l’application.

6.2.1.2 Exemple

Afin de simplifier la compr´ehension de l’algorithme de Feautrier, nous d´eroulons ses cinq ´etapes pour l’exemple de la figure6.1, pr´esent´e dans la publication originale. Dans cet exemple, un r´eseau de processus est d´ecrit dans le langage d´edi´e (CRP2) propos´e par Feautrier, deux processus (P et

122 Chapitre 6. Espace conjoint de sp´ecialisation et d’optimisation de code Q) y communiquent par l’interm´ediaire d’un canal A. Nous d´etaillons maintenant les contraintes de communication de chaque processus afin de faire apparaˆıtre leur aspect modulaire : chaque ensemble de contraintes peut ˆetre construit ind´ependamment, mais l’ordonnancement des processus doit ˆetre r´esolu conjointement.

`

A chaque nœud du PRDG issu du r´eseau de processus, on associe un prototype d’ordonnancement et un domaine de d´efinition.

• θW(i) = µW 1i+ µW 2 avec DW : i ≥ 0

• θZ(i) = µZ2 avec DZ : i = 0

• θM(i) = µM 1i+ µM 2 avec DM : i ≥ 0

´

Etape 1 : Construction des contraintes de l´egalit´e

Cas du producteur (processus P ) Ce processus ne contient aucune d´ependance de donn´ees interne. Ses contraintes ne portent donc que sur l’´ecriture d’une donn´ee dans le canal A. Son domaine de d´efinition DW −>Aest :

DW −>A: { i | i ≥ 0 }

En appliquant la contrainte6.2`a l’´ecriture de W dans le canal A on obtient :

i(µA1− µW 1) + (µA2− µW 2) ≥ 0

La forme matricielle du domaine DW −>A de la d´ependance illustre les multiplieurs de Farkas (un

multiplieur par contrainte affine du domaine) : 

i 1

i ≥0 :: λ1 1 0

 En utilisant la forme affine du lemme de Farkas, on en d´eduit que :

i(µA1− µW 1) + (µA2− µW 2) = λ0+ iλ1≥0

(

µA1− µW 1 = λ1 ≥ 0

µA2− µW 2 = λ0 ≥ 0

(6.4) Apr`es avoir ´elimin´e, par projection, les multiplieurs de Farkas, on obtient :

(

µA2≥ µW 2 µA1≥ µW 1

(6.5) Cas du consommateur (processus Q) Le processus contient deux nœuds (Z et M ) ainsi que deux d´ependances de donn´ees internes.

La d´ependance entre Z et M a pour domaine DZ−>M : { i | i = 0 }, sa causalit´e est respect´ee si

et seulement si :

6.2. Ordonnancement modulaire 123 En appliquant la forme affine du lemme de Farkas et apr`es avoir ´elimin´e les multiplieurs, on en d´eduit que :

µM 21 + µZ2 (6.6)

D’autre part, la d´ependance cyclique sur M et qui a pour domaine DM −>M : { i | i ≥ 1 }, est

uniforme. On en d´eduit que µM 1 ≥1.

Le processus Q est associ´e `a deux d´ependances de communication. La premi`ere est une lecture de la donn´ee A[i + 2]. Le respect de la contrainte6.3 implique que :

θM(i) − θA(i + 2) − 1 ≥ 0

i(µM 1− µA1) + (µM 22µA1− µA2−1) ≥ 0

En appliquant la forme affine du lemme de Farkas et apr`es avoir ´elimin´e les multiplieurs de Farkas, on en d´eduit que :

(

µM 21 + 2µA1+ µA2 µM 1µA1

(6.7) En proc´edant de mˆeme pour la d´ependance de communication correspondant `a la lecture de A[i] on obtient : (

µM 21 + µA2 µM 1µA1

(6.8) ´

Etape 2 : ´Elimination des coefficients d’ordonnancement internes Une fois les contraintes obtenues pour chaque processus, on ´elimine les coefficients internes de chaque ensemble de contraintes. Cas du producteur (processus P) Les coefficients internes d’ordonnancement de P sont µW 1

et µW 2, leur ´elimination de (6.5) forme l’ensemble des contraintes de l´egalit´e des communications de P. Dans ce cas, il ne reste aucune contrainte apr`es projection.

Cas du consommateur (processus Q) L’ensemble des contraintes de l´egalit´e de Q construit `a partir de (6.7) et (6.8) est :                µM 21 + µZ2 µM 1 ≥ 1 µM 21 + 2µA1+ µA2 µM 1µA1 µM 21 + µA2 (6.9)

De mˆeme que pour P , apr`es l’´elimination des coefficients internes de Q, il ne reste aucune contrainte. ´

Etape 3 : Ordonnancement des canaux Dans cet exemple, il n’y a aucune contrainte d’impos´ee sur les ordonnancements des canaux. La solution d’ordonnancement des canaux s´electionn´ee par Feautrier est µA1= µA2= 0.

´

Etape 4 : Ordonnancement des nœuds Une fois les coefficients d’ordonnancement des canaux d´etermin´es, on injecte l’information dans les contraintes construites lors de la premi`ere ´etape pour

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

chaque processus.

Ainsi, pour P , on obtient l’ensemble de contraintes suivantes : (

0 ≥ µW 2

0 ≥ µW 1

(6.10) L’ordonnancement de W est donc θW(i) = 0.

De mˆeme, pour le processus Q, l’ensemble des contraintes devient :      µM 21 + µZ2 µM 1 ≥ 1 µM 2 ≥ 1 (6.11) Les ordonnancements s´electionn´es pour M et Z sont θM(i) = i + 1 et θZ = 0.

On d´eduit de ces ordonnancements que l’int´egralit´e des it´erations du nœud W sont ex´ecut´ees `a la mˆeme date (θW(i) = 0), toutes les donn´ees produites sont donc ´ecrites simultan´ement dans le canal A.

Ce constat am`ene `a consid´erer des contraintes suppl´ementaires pour cibler une mise en œuvre concr`ete sur une m´emoire dont la taille est limit´ee. L’approche de Feautrier sur ces contraintes m´emoires fait l’objet de la sous-section suivante.