previous up next top index
Précédent : Régularité et transformations de programmes Remonter : Régularité et transformations de programmes Suivant : b) Détection du parallélisme.


a) Dépendances et régularité.

 

Une transformation de code est valide si elle ne change pas la sémantique du code, c'est-à-dire si elle respecte certaines contraintes de précédence (appelées dépendances) entre calculs. En général, on exprime ces dépendances par une structure finie, qui peut fournir une description exacte des dépendances du code séquentiel lorsque le code lui-même est régulier, mais qui en est, en général, une sur-approximation. Plus l'approximation est fine, plus il est coûteux de la construire, mais plus grand est l'ensemble des transformations valides et plus grandes sont les possibilités d'optimisation. Cependant, pour un objectif donné, élargir l'ensemble des transformations valides peut être inutile s'il contient déjà la transformation optimale.

Pour tenter de mieux comprendre ce problème de représentation par une structure régulière, nous avons caractérisé, pour une représentation donnée, l'algorithme le plus simple permettant de détecter le parallélisme maximal implicite décrit par la structure régulière. Nous avons montré l'optimalité d'un algorithme bien connu, l'algorithme d'Allen et Kennedy, pour la représentation par niveaux de dépendance [39, 15]. Nous avons proposé une classification des algorithmes de détection de parallélisme, en fonction de leur optimalité pour une représentation donnée [37].

Le lien existant entre la complexité d'une structure régulière et le parallélisme maximal qu'elle peut implicitement décrire est maintenant parfaitement clair pour la représentation par un graphe étiqueté par niveaux (algorithme d'Allen et Kennedy) et pour la représentation par vecteurs de direction, sans structure de graphe (algorithme de Wolf et Lam). Le problème reste ouvert pour les dépendances affines, du fait du saut de complexité entre les différentes représentations des dépendances. On peut cependant en dire plus en définissant une structure régulière intermédiaire, les graphes réduits polyédriques : ceux-ci permettent d'exploiter la structure de graphe et l'information sur les vecteurs de distance. Nous avons proposé un algorithme optimal pour cette représentation [40].