polyhedral liveness analysiscompilfr.ens-lyon.fr/wp-content/uploads/2015/02/jdc10-aisoard1.pdf ·...

23
Polyhedral Liveness Analysis Alexandre Isoard with Alain Darte Compsys Team, LIP 21 septembre 2015 Alexandre Isoard (ENS de Lyon) Polyhedral Liveness Analysis 21 septembre 2015 1 / 18

Upload: others

Post on 15-Jul-2020

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Polyhedral Liveness Analysiscompilfr.ens-lyon.fr/wp-content/uploads/2015/02/JdC10-aisoard1.pdf · Alexandre Isoard (ENS de Lyon) Polyhedral Liveness Analysis 21 septembre 2015 8

Polyhedral Liveness Analysis

Alexandre Isoard

with Alain DarteCompsys Team, LIP

21 septembre 2015

Alexandre Isoard (ENS de Lyon) Polyhedral Liveness Analysis 21 septembre 2015 1 / 18

Page 2: Polyhedral Liveness Analysiscompilfr.ens-lyon.fr/wp-content/uploads/2015/02/JdC10-aisoard1.pdf · Alexandre Isoard (ENS de Lyon) Polyhedral Liveness Analysis 21 septembre 2015 8

Durée de vie

Utilisation de l’analyse des durées de vie :Nécessaire à l’allocation mémoire :

I Allocation de registresI Contraction de tableaux

Fournit des informations cruciales :I Live-in/live-out (inlining, offloading)I Empreinte mémoire (prédiction des effets de cache)

Deux types d’analyses :Basée sur les valeurs (value based)Basée sur la mémoire (memory based)

Alexandre Isoard (ENS de Lyon) Polyhedral Liveness Analysis 21 septembre 2015 2 / 18

Page 3: Polyhedral Liveness Analysiscompilfr.ens-lyon.fr/wp-content/uploads/2015/02/JdC10-aisoard1.pdf · Alexandre Isoard (ENS de Lyon) Polyhedral Liveness Analysis 21 septembre 2015 8

Allocation de registres (cas simple)

Durée de vie, conflit/interférence, réutilisation

x = ...;y = x + ...;... = y;

x = ...;x = x + ...;... = x;

write xread xwrite yread y

x

y

write xread xwrite xread x

x

x

Alexandre Isoard (ENS de Lyon) Polyhedral Liveness Analysis 21 septembre 2015 3 / 18

Page 4: Polyhedral Liveness Analysiscompilfr.ens-lyon.fr/wp-content/uploads/2015/02/JdC10-aisoard1.pdf · Alexandre Isoard (ENS de Lyon) Polyhedral Liveness Analysis 21 septembre 2015 8

Repliement de tableau (cas simple)

Affine (polyédrique) : déroulage et analyse symbolique

c[0] = 0;for(int i = 0; i < n; ++i)

c[i+1] = c[i] + ...;return c[n];

c = 0;for(int i = 0; i < n; ++i)

c = c + ...;return c;

...write ci−1read ci−1write ciread ci

write ci+1read ci+1

...

c[i-1]

c[i]

c[i+1]

...write cread cwrite cread cwrite cread c...

c

c

c

Alexandre Isoard (ENS de Lyon) Polyhedral Liveness Analysis 21 septembre 2015 4 / 18

Page 5: Polyhedral Liveness Analysiscompilfr.ens-lyon.fr/wp-content/uploads/2015/02/JdC10-aisoard1.pdf · Alexandre Isoard (ENS de Lyon) Polyhedral Liveness Analysis 21 septembre 2015 8

Exemple stencil

for(int i = 0; i < T-1; ++i)for(int j = 1; j < N; ++j)

a[i+1][j] = a[i][j-1] + a[i][j] + a[i][j+1];

j

i

a[i][j] 7→ a[(j-i)%N]

Alexandre Isoard (ENS de Lyon) Polyhedral Liveness Analysis 21 septembre 2015 5 / 18

Page 6: Polyhedral Liveness Analysiscompilfr.ens-lyon.fr/wp-content/uploads/2015/02/JdC10-aisoard1.pdf · Alexandre Isoard (ENS de Lyon) Polyhedral Liveness Analysis 21 septembre 2015 8

Exemple stencil (parallélisme interne)

for(int i = 0; i < T-1; ++i)#pragma omp parallel forfor(int j = 1; j < N; ++j)

a[i+1][j] = a[i][j-1] + a[i][j] + a[i][j+1];

j

i

a[i][j] 7→ a[i%2][j]

Alexandre Isoard (ENS de Lyon) Polyhedral Liveness Analysis 21 septembre 2015 6 / 18

Page 7: Polyhedral Liveness Analysiscompilfr.ens-lyon.fr/wp-content/uploads/2015/02/JdC10-aisoard1.pdf · Alexandre Isoard (ENS de Lyon) Polyhedral Liveness Analysis 21 septembre 2015 8

Double buffering (déjà un peu plus compliqué)

time step

(C , i − 1)(L, i)

(S, i − 1)

(C , i)

(L, i + 1)

(S, i)(C , i + 1)

iteration i

(S, i − 1) ./ (C , i)

(C , i) ./ (L, i + 1)

mais(S, i − 1) 6./ (L, i + 1)

Alexandre Isoard (ENS de Lyon) Polyhedral Liveness Analysis 21 septembre 2015 7 / 18

Page 8: Polyhedral Liveness Analysiscompilfr.ens-lyon.fr/wp-content/uploads/2015/02/JdC10-aisoard1.pdf · Alexandre Isoard (ENS de Lyon) Polyhedral Liveness Analysis 21 septembre 2015 8

Méthode standard : papillon avec ordonnancement θ

θ(S[~i ]) = temps auquel on exécute l’instruction S[~i ]

θ(S[~i ]) = θ(S[~j]) =⇒ S[~i ] en parallèle de S[~j]

Wa Ra

Wb Rb

2 write, 2 read =⇒ O(#access4)

Gestion du parallélisme = cas d’égalitéinstance différente =⇒ conflitmême instance =⇒ pas conflit

* s’étend au parallélisme série parallèle

Alexandre Isoard (ENS de Lyon) Polyhedral Liveness Analysis 21 septembre 2015 8 / 18

Page 9: Polyhedral Liveness Analysiscompilfr.ens-lyon.fr/wp-content/uploads/2015/02/JdC10-aisoard1.pdf · Alexandre Isoard (ENS de Lyon) Polyhedral Liveness Analysis 21 septembre 2015 8

Méthode standard : papillon avec ordonnancement θ

θ(S[~i ]) = temps auquel on exécute l’instruction S[~i ]

θ(S[~i ]) = θ(S[~j]) =⇒ S[~i ] en parallèle de S[~j]

Wa Ra

Wb Rb

2 write, 2 read =⇒ O(#access4)

Gestion du parallélisme = cas d’égalitéinstance différente =⇒ conflitmême instance =⇒ pas conflit

* s’étend au parallélisme série parallèle

Alexandre Isoard (ENS de Lyon) Polyhedral Liveness Analysis 21 septembre 2015 8 / 18

Page 10: Polyhedral Liveness Analysiscompilfr.ens-lyon.fr/wp-content/uploads/2015/02/JdC10-aisoard1.pdf · Alexandre Isoard (ENS de Lyon) Polyhedral Liveness Analysis 21 septembre 2015 8

Méthode standard : papillon avec ordonnancement θ

θ(S[~i ]) = temps auquel on exécute l’instruction S[~i ]

θ(S[~i ]) = θ(S[~j]) =⇒ S[~i ] en parallèle de S[~j]

Wa Ra

Wb Rb

2 write, 2 read =⇒ O(#access4)

Gestion du parallélisme = cas d’égalitéinstance différente =⇒ conflitmême instance =⇒ pas conflit

* s’étend au parallélisme série parallèle

Alexandre Isoard (ENS de Lyon) Polyhedral Liveness Analysis 21 septembre 2015 8 / 18

Page 11: Polyhedral Liveness Analysiscompilfr.ens-lyon.fr/wp-content/uploads/2015/02/JdC10-aisoard1.pdf · Alexandre Isoard (ENS de Lyon) Polyhedral Liveness Analysis 21 septembre 2015 8

Objectifs

Analyse de durée de vie / conflits mémoire :Algorithmiquement plus performante (cf allocation de registres)Supportant une spécification parallèle générale (graphe de tâches)Profitant des propriétés du programme (évidence syntaxique)Supportant l’approximation du contrôle (if non déterminés)Des propriétés sur le graphe d’interférence ? Parfait ?

Alexandre Isoard (ENS de Lyon) Polyhedral Liveness Analysis 21 septembre 2015 9 / 18

Page 12: Polyhedral Liveness Analysiscompilfr.ens-lyon.fr/wp-content/uploads/2015/02/JdC10-aisoard1.pdf · Alexandre Isoard (ENS de Lyon) Polyhedral Liveness Analysis 21 septembre 2015 8

live x live (séquentiel)

live(t) = pour chaque temps, la liste des variables en vie

Wa Ra

t

Wb Rb

1 write, 1 read, 1 time =⇒ O(#prgm×#access2)

2 mem, 1 time =⇒ O(#prgm×mem2)

Séquentiel =⇒ graphe d’interférence = graphe d’intervalles

Alexandre Isoard (ENS de Lyon) Polyhedral Liveness Analysis 21 septembre 2015 10 / 18

Page 13: Polyhedral Liveness Analysiscompilfr.ens-lyon.fr/wp-content/uploads/2015/02/JdC10-aisoard1.pdf · Alexandre Isoard (ENS de Lyon) Polyhedral Liveness Analysis 21 septembre 2015 8

live x live (séquentiel)

live(t) = pour chaque temps, la liste des variables en vie

Wa Ra

t

Wb Rb

1 write, 1 read, 1 time =⇒ O(#prgm×#access2)

2 mem, 1 time =⇒ O(#prgm×mem2)

Séquentiel =⇒ graphe d’interférence = graphe d’intervalles

Alexandre Isoard (ENS de Lyon) Polyhedral Liveness Analysis 21 septembre 2015 10 / 18

Page 14: Polyhedral Liveness Analysiscompilfr.ens-lyon.fr/wp-content/uploads/2015/02/JdC10-aisoard1.pdf · Alexandre Isoard (ENS de Lyon) Polyhedral Liveness Analysis 21 septembre 2015 8

live x write

Inspirée de l’allocation de registres

Wa Ra

t

Wb

2 write, 1 read =⇒ O(#access3)

En général plus précisÉquivalent au précédent en SSA avec dominance

Alexandre Isoard (ENS de Lyon) Polyhedral Liveness Analysis 21 septembre 2015 11 / 18

Page 15: Polyhedral Liveness Analysiscompilfr.ens-lyon.fr/wp-content/uploads/2015/02/JdC10-aisoard1.pdf · Alexandre Isoard (ENS de Lyon) Polyhedral Liveness Analysis 21 septembre 2015 8

live x write

Inspirée de l’allocation de registres

Wa Ra

t

Wb

2 write, 1 read =⇒ O(#access3)

En général plus précisÉquivalent au précédent en SSA avec dominance

Alexandre Isoard (ENS de Lyon) Polyhedral Liveness Analysis 21 septembre 2015 11 / 18

Page 16: Polyhedral Liveness Analysiscompilfr.ens-lyon.fr/wp-content/uploads/2015/02/JdC10-aisoard1.pdf · Alexandre Isoard (ENS de Lyon) Polyhedral Liveness Analysis 21 septembre 2015 8

live x write : double diamant

if ...

write x write y

if ...

read x read y

true

true

false

false

x ylive x live = conflit

live x write = pas de conflit* Correct : pas de chemin valide oùles deux sont en vie en même temps

Alexandre Isoard (ENS de Lyon) Polyhedral Liveness Analysis 21 septembre 2015 12 / 18

Page 17: Polyhedral Liveness Analysiscompilfr.ens-lyon.fr/wp-content/uploads/2015/02/JdC10-aisoard1.pdf · Alexandre Isoard (ENS de Lyon) Polyhedral Liveness Analysis 21 septembre 2015 8

Papillon parallèle

Relation happens-before : S[i ] ≺hb S[j] = ∀ trace, S[i ] avant S[j].

Wa Ra

Wb Rb

6

6

6

6

2 write, 2 read =⇒ O(#access4)

Règle de base : si happens-before ne l’interditpas, ça peut arriver.

Alexandre Isoard (ENS de Lyon) Polyhedral Liveness Analysis 21 septembre 2015 13 / 18

Page 18: Polyhedral Liveness Analysiscompilfr.ens-lyon.fr/wp-content/uploads/2015/02/JdC10-aisoard1.pdf · Alexandre Isoard (ENS de Lyon) Polyhedral Liveness Analysis 21 septembre 2015 8

Papillon parallèle

Relation happens-before : S[i ] ≺hb S[j] = ∀ trace, S[i ] avant S[j].

Wa Ra

Wb Rb

6

6

6

6

2 write, 2 read =⇒ O(#access4)

Règle de base : si happens-before ne l’interditpas, ça peut arriver.

Alexandre Isoard (ENS de Lyon) Polyhedral Liveness Analysis 21 septembre 2015 13 / 18

Page 19: Polyhedral Liveness Analysiscompilfr.ens-lyon.fr/wp-content/uploads/2015/02/JdC10-aisoard1.pdf · Alexandre Isoard (ENS de Lyon) Polyhedral Liveness Analysis 21 septembre 2015 8

live x live (parallèle)

[maylive(i)]2 ne fonctionne pas.Par exemple sur le double buffering (conflit non transitif).

Pas de notion de temps !Plus un graphe d’intervalles !Même plus un graphe chordal !

Alexandre Isoard (ENS de Lyon) Polyhedral Liveness Analysis 21 septembre 2015 14 / 18

Page 20: Polyhedral Liveness Analysiscompilfr.ens-lyon.fr/wp-content/uploads/2015/02/JdC10-aisoard1.pdf · Alexandre Isoard (ENS de Lyon) Polyhedral Liveness Analysis 21 septembre 2015 8

maylive x write

Relation happens-before : S[i ] ≺hb S[j] = ∀ trace, S[i ] avant S[j].

Wa Ra

Wb

6

6 6

2 write, 1 read =⇒ O(#access3)

Propriétésa ./ b ssi il existe une trace où a et b sont simultanément en vie.Une allocation respecte ./ ssi elle est valide quelle que soit l’exécution.

Note : différent de trouver le nombre minimum de registres nécessairequelle que soit l’exécution (NP-complet).

Alexandre Isoard (ENS de Lyon) Polyhedral Liveness Analysis 21 septembre 2015 15 / 18

Page 21: Polyhedral Liveness Analysiscompilfr.ens-lyon.fr/wp-content/uploads/2015/02/JdC10-aisoard1.pdf · Alexandre Isoard (ENS de Lyon) Polyhedral Liveness Analysis 21 septembre 2015 8

Propriétés du graphe d’interférence

Si basic block :graphe d’intervalles* Coloration complexité linéaire

Parallélisme ordre partiel :complémentaire d’un graphe de comparabilité (graphe de réutilisation)* Coloration polynomiale (graphe parfait)

Parallélisme avec atomic :plus compliqué (quelconque ?)* Probablement NP-complet à colorier

Alexandre Isoard (ENS de Lyon) Polyhedral Liveness Analysis 21 septembre 2015 16 / 18

Page 22: Polyhedral Liveness Analysiscompilfr.ens-lyon.fr/wp-content/uploads/2015/02/JdC10-aisoard1.pdf · Alexandre Isoard (ENS de Lyon) Polyhedral Liveness Analysis 21 septembre 2015 8

Task graph vs control flow graph

Definition (Task graph)Tous les nœuds sont exécutés ; tout chemin est exécuté dans l’ordre ; lesnœuds en parallèle créent en général des conflits

Definition (Control flow graph)Un seul chemin voit ses nœuds exécutés ; le chemin est exécuté dansl’ordre ; les nœuds en parallèle ne créent en général pas de conflits

Première étape pour réconcilier les deux.Lien avec la thèse d’Albert Cohen (expansion).

Alexandre Isoard (ENS de Lyon) Polyhedral Liveness Analysis 21 septembre 2015 17 / 18

Page 23: Polyhedral Liveness Analysiscompilfr.ens-lyon.fr/wp-content/uploads/2015/02/JdC10-aisoard1.pdf · Alexandre Isoard (ENS de Lyon) Polyhedral Liveness Analysis 21 septembre 2015 8

Conclusion

Calcul des durées de vie pour nimporte quel ordre partiel(tant qu’il est exprimable)

I code séquentielI ordonnancement multi-dimensionnel (parallélisme interne)I boucles parallèles à la OpenMP (série parallèle)I parallélisme à la async voire clock de X10I dépendances de flot. . . mais

Cloture transitive du happens-before nécessaireI dépendances uniformes des UOV : Strout & al. 1998I ordonnancement affine des AOV : Thies, Vivien, Amarasinghe 2007I dépendances uniformes pour code tuilé : Yuki, Rajopadhye 2013

Interaction avec le contrôleI liens avec la thèse d’Albert Cohen

* vers une extension des analyses polyédriques aux langages parallèles.

Alexandre Isoard (ENS de Lyon) Polyhedral Liveness Analysis 21 septembre 2015 18 / 18