• Aucun résultat trouvé

G´en´eration de l’arbre d’´evaluation

5.3 Bilan interm´ediaire

6.1.1 G´en´eration de l’arbre d’´evaluation

Evaluation : nous d´ecrirons dans cette section la partie la plus algorithmique de Dynamic Graph : la g´en´eration de l’arbre d’´evaluation et les diff´erentes techniques utilis´ees pour la rendre accessible et efficace ;

Pr´ecision : nous d´etaillerons ici la notion de pr´ecision qui sert notamment dans le crit`ere d’ar-rˆet de la g´en´eration de l’arbre d’´evaluation. Nous introduirons aussi la maturit´e qui est une normalisation de la pr´ecision pour la rendre plus utilisable par le cr´eateur lors d’une transformation continue d’un niveau de d´etail `a l’autre ;

Visibilit´e : nous expliquerons l’algorithme de d´etection d’occultation ;

6.1 Evaluation´

Nous verrons dans cette section les m´ecanismes complexes mis en œuvre durant la g´en´era-tion de l’arbre d’´evaluag´en´era-tion. Nous verrons ensuite comment Dynamic Graph assure une certaine connaissance des informations anciennes, notamment grˆace `a l’utilisation d’identifieurs. Nous d´ecri-rons enfin l’arbre permanent qui, contrairement `a un arbre d’´evaluation, contient des informations permanentes. Enfin, nous dresserons un bilan de la m´ethode d’´evaluation et proposerons deux am´eliorations potentielles.

6.1.1 G´en´eration de l’arbre d’´evaluation

La g´en´eration de l’arbre d’´evaluation est dirig´ee par l’organiseur, via un visiteur particulier : le g´en´erateur. L’´evaluation d’un amplifieur est r´ealis´ee de fa¸con s´equentielle : elle ne se termine qu’apr`es plusieurs phases d’ex´ecution. Pour permettre cela, un dialogue a lieu entre le g´en´erateur et un amplifieur : le g´en´erateur donne des requˆetes auxquelles l’amplifieur essaie de r´epondre. Organiseur et visiteur

`

A chaque pas de temps, l’´evaluation de la forme est effectu´ee par la cr´eation d’un arbre d’´eva-luation. La cr´eation de cet arbre est rythm´ee par l’organiseur. D’embl´ee, on distingue deux sortes d’´ev´enements temporels (cf. figure 6.1) :

´

evaluation : une ´evaluation commence au d´ebut du calcul de la forme pour une nouvelle obser-vation et s’ach`eve lorsque l’arbre d’´evaluation est compl`etement g´en´er´e ;

´

etapes de l’´evaluation : l’organiseur cadence l’´evaluation en ´etapes de calcul entre lesquelles il reprend la main.

t t + δt t + 2.δt t + 3.δt Affichage Etape de calcul ´ Evaluation Etapes

Fig. 6.1 – On appelle pas de temps les dates auxquelles une nouvelle observation est calcul´ee. Chaque affichage est le fruit d’une ´evaluation, laquelle est divis´ee en ´etapes par l’organiseur.

G´en´erateur Cr´eation d’enfant arbre d’´evaluation OU 1 3 2 4 5 6 1 2 3 4 5 6 Affichage Deux fa¸cons de voir les choses :

- Les amplifieurs bougent - Le g´en´erateur bouge

pas de fils

G G

G g´en´erateur :

Fig. 6.2 – Il est plus facile de rendre compte de l’architecture en pipe-line lorsque ce sont les noeuds (les amplifieurs) qui bougent. Attention, ceci n’est qu’une vue de l’esprit. Concr`etement, ni le visiteur ni les noeuds ne changent de place en m´emoire.

Le g´en´erateur est le visiteur qui s’occupe de “d´evelopper” l’arbre d’´evaluation jusqu’`a sa com-plexion. On peut voir un visiteur est une entit´e qui se d´eplace sur un graphe pour appliquer un traitement `a chaque noeud. Mais dans Dynamic Graph, il est plus intuitif de voir le ph´enom`ene “dual” : ce sont les noeuds du graphe qui vont visiter le visiteur (cf. figure 6.2).

Cette diff´erence est importante pour d´ecrire l’´evaluation avec une architecture en pipe-line. Plutˆot que de visualiser un arbre dont les noeuds ne bougent pas, il est pr´ef´erable d’imaginer qu’un amplifieur, lors de son traitement, entame un sorte de p`elerinage qui le m`enera ´eventuellement `a la carte graphique.

´

Evaluation d’un amplifieur

Comme on l’a vu, un amplifieur, lorsqu’il est ´evalu´e, ajoute de la pr´ecision `a la forme. L’organiseur s’occupe de lancer le calcul des amplifieurs via le visiteur g´en´erateur. Afin de bien contrˆoler l’´eva-luation, l’organiseur reprend la main entre deux ´evaluations. Ceci est essentiel pour assurer un certain parall´elisme entre le processeur central et la carte graphique (nous verrons en section 6.3 pourquoi un tel parall´elisme est n´ecessaire).

Comme toute action sur un ordinateur, l’´evaluation d’un amplifieur n’est pas instantan´ee et il faut un certain nombre de cycles d’horloge pour que le processeur la termine. Lorsqu’un amplifieur est construit, il est dans son ´etat initial : seule l’initialisation de l’´evaluation a lieu. Lorsque

l’´evaluation est termin´ee, l’amplifieur est dans son ´etat final : il a termin´e tous ses calculs.

´etat final ´etat initial

t t + δt

G´en´eration d’un amplifieur

Tˆaches r´egl´ees par l’organiseur

Fig. 6.3 – L’organiseur cadence le g´en´erateur pour que celui-ci ´evalue un amplifieur en plusieurs fois. En cons´equence, l’organiseur reprend non seulement la main `a la fin d’une ´evaluation, mais ´eventuellement plusieurs fois durant une mˆeme ´evaluation.

´

Evaluation s´equentielle

Cette ´evaluation s´equentielle est mise en œuvre pour permettre `a un amplifieur d’attendre la fin de tˆaches parall`eles sans bloquer le processeur courant. En effet, imaginons que l’´evaluation d’un amplifieur requiert une certaine information qui n’est pas encore prˆete : l’amplifieur devient alors bloquant. Plutˆot que d’attendre inutilement, l’amplifieur peut rendre la main `a l’organiseur qui va aller “stimuler” d’autres amplifieurs non-bloquants.

En th´eorie, Dynamic Graph est donc parfaitement con¸cu pour tourner en parall`ele sur plusieurs processeurs. Pourtant, ce n’est pas ce type de parall´elisme qui est vis´e en premier. Les ´evaluations s´equentielles sont initialement pr´evues pour assurer une bonne synchronisation entre le processeur principal et le processeur graphique (cf. section 6.3).

Les amplifieurs bloquants sont r´ef´erenc´es dans une liste appel´ee la salle d’attente (cf. figure 6.4). Elle r´einjecte les amplifieurs qui se sont d´ebloqu´es vers le g´en´erateur. Une priorit´e est attribu´ee aux amplifieurs d´ebloqu´es afin de lib´erer plus vite d’autres amplifieurs.

Si tous les amplifieurs sont bloquants, l’organiseur attend. Il est donc, par exemple, plus impor-tant de lib´erer un amplifieur dont on estime que les enfants sont nombreux. En effet, tout nouvel amplifieur est par d´efaut non bloquant. Plus le nombre d’amplifieurs non-bloquants est grand, plus l’organiseur peut organiser son travail efficacement. Remarquez que ce m´ecanisme permet de diminuer les dur´ee de blocage, mais non de les supprimer.

Requˆetes du visiteur

On peut formaliser l’´echange complexe qui a lieu entre un visiteur et un amplifieur de la fa¸con suivante : pour d´eclencher l’´evaluation d’un amplifieur, le visiteur lance une requˆete. Lorsque l’amplifieur lui rend la main, le visiteur v´erifie si la requˆete est satisfaite. Dans le cas contraire, il envoie cet amplifieur dans la salle d’attente.

Diff´erentes sortes de requˆetes sont possibles. La plus courante est la requˆete de complexion : ”Dessine la forme ou g´en`ere des enfants si n´ecessaire”. D’autres requˆetes sont possibles. Par exemple, le g´en´erateur peut forcer certains calculs : ”g´en`ere tes enfants quoiqu’il arrive”.

On peut repr´esenter les diff´erentes fonctions qu’un amplifieur peut r´ealiser par un graphe de d´ependance des r´esultats qu’il peut produire (cf. figure 6.5). Au cours d’une mˆeme observation, l’amplifieur se souvient des fonctions qu’il a d´ej`a ex´ecut´ees. De cette fa¸con, lors d’une reprise des calculs, l’´evaluation peut reprendre l`a o`u elle s’´etait arrˆet´ee.

Salle d’attente ´ Evaluation termin´ee ´ Evaluation incompl`ete arbre d’´evaluation G´en´erateur

Fig. 6.4 – La salle d’attente r´ecup`ere les r´ef´erences des amplifieurs dont l’´evaluation est incompl`ete et attend le bon moment pour les remettre dans le circuit.

visibilit´e

Chargement texture

Affichage Pr´ecision

Animation Cr´eation des enfants

Affichage boite englobante

Fig. 6.5 – Au contact d’un visiteur, un amplifieur peut ex´ecuter diff´erentes fonctions. Celle-ci d´ependent les unes des autres. Par exemple, l’affichage ne peut ˆetre effectu´e qu’apr`es le calcul de l’animation.

G´en´eralement, le g´en´erateur demande la requˆete de complexion `a tous les amplifieurs. La complexion d’un amplifieur entraˆıne souvent la cr´eation de nouveaux amplifieurs qui doivent ˆetre ´evalu´es `a leur tour. Lorsque tous les amplifieurs satisfont la requˆete de complexion, l’´evaluation est termin´ee.