Title: Mod
1Compilation avancée parallélisation et
transformations de programmes.
A suivre de préférence après (ou en parallèle
avec) les cours dYves Robert, Tanguy Risset et
Paul Feautrier
Alain Darte Chargé de recherches au CNRS Équipe
Compsys LIP, ENS-Lyon
2Plan
- Introduction.
- Problématique, questions.
- Quelques thèmes abordés.
- Outils mathématiques rencontrés.
- Organisation du cours.
- Pipeline logiciel.
- Transformations de boucles.
- Équations récurrentes uniformes.
3Problématique
- Comprendre ce qui peut se faire automatiquement
dans le domaine de la compilation (souvent avec
des problèmes liés à la mémoire et au
parallélisme) - Formalisation des problèmes (modèle, fonction
objective). - Étude des problèmes (NP-complétude?,
algorithmes). - Étude des modèles (limites, contre-exemples).
- Établir des liens entre différents
problèmes/théories. - Applications
- Parallélisation automatique (et compilation de
HPF). - Optimisations avancées en compilation
traditionnelle. - Compilation de circuits (ex compilateur PICO des
HP Labs).
4Évolution de la thématique
Équations récurrentes uniformes
Réseaux systoliques
Vectorisation de boucles
Parallélisation automatique Transformations de
boucles High Performance Fortran
Parallélisme au niveau des instructions
Langages de haut niveau (Matlab, F90)
Compilation de circuits spécialisés
5Sujets abordés
- Rappels dordonnancement de base graphes de
tâches acycliques, contraintes de ressources,
deadlines. - Ordonnancement cyclique et pipeline logiciel
liens avec le retiming et lalgorithme
out-of-kilter. Fonctionnalités des processeurs
modernes registres rotatifs, de prédication,
avec spéculation. Passage en et hors SSA,
allocation de registres. - Compilation-parallélisation premier pas
transformations de boucles. Algorithmes dAllen
et Kennedy, de Lamport. Transformation
unimodulaires. Réécriture de code. - Systèmes déquations récurrentes uniformes
calculabilité, ordonnancement, liens avec la
parallélisation. Synthèse de circuits méthode
systolique de base et extensions. - Localité et allocation mémoire fusion de
boucles, contraction de tableaux, repliement
mémoire.
6Outils mathématiques
- Modélisation
- Systèmes déquations récurrentes uniformes.
- Graphes de toutes sortes (control-flow, de
dominance, dínterférence, de dépendances, etc.). - Polyèdres, réseaux ( lattices ).
- Analyse
- NP-complétude.
- Algorithmes de graphes.
- Techniques dordonnancement.
- Algèbre linéaire. Formes dHermite et de Smith.
- Calculs sur polyèdres, programmation linéaire.
7Organisation du cours
- Choix des thèmes du cours en fonction de ce que
vous savez déjà (Mim2 notamment) et du nombre de
participants. - Une grosse moitié de cours magistraux pour
- donner les bases,
- présenter quelques techniques en détails,
- et introduire quelques problèmes.
- Une seconde partie de découverte de sujets plus
pointus par lecture et présentation darticles. - Évaluation 1 devoir à la maison, 1 examen final
éventuel (mais peu probable), attitude en cours,
rapport exposé.
8Plan
- Introduction.
- Pipeline logiciel
- exemple du LANai 3.0
- Transformations de boucles.
- Équations récurrentes uniformes.
9Quest-ce que le pipeline logiciel?
- Exemple du LANai 3.0
- une unité séquentielle (pipelinée) effectuant
loads, stores, branches, moves et opérations
arithmétiques. - latence apparente 1 cycle sauf pour le load et
les branches (2 cycles). - 1 seul type de control hazard
- r1 load (toto)
- r1 r2 1
- ? priorité pour le move entre registres.
10Exemple dordonnancement de code
- Code initial
- L400
- ldr26 ? r27
- nop
- add r27, 6740 ? r26
- ld 0x1A54r27 ? r27
- nop
- sub.f r27, r25 ? r0
- bne L400
- nop
- L399
- Temps 88n
Code compacté L400 ldr26 ? r27 nop ld
0x1A54r27 ? r27 add r27, 6740 ? r26 sub.f
r27, r25 ? r0 bne L400 nop L399 Temps 77n !
Code sofware pipeliné ldr26, r27 nop add
r27, 6740 ? r26 L400 ld 0x1A54r27 ? r27
ld26 ? r27 sub.f r27, r25 ? r0 bne L400
add r27, 6740 ? r26 L399 Temps 85n !!!
11Plan
- Introduction.
- Pipeline logiciel.
- Transformations de boucles.
- Détection du parallélisme.
- Fusion, décalage et mémoire.
- Équations récurrentes uniformes.
- Allocation de registres.
12Détection de parallélisme
- Quelles sont les transformations valides? Comment
représenter les contraintes? - Analyse et représentation des dépendances ? voir
le cours du DIF de Paul Feautrier. - Quel parallélisme peut-on espérer?
- Algorithmes de plus en plus complexes en fonction
des représentations des dépendances
(Allen-Callahan-Kennedy, Lamport, Wolf-Lam,
Feautrier, ...) ? suite du cours dYves Robert en
Mim2. - Optimalité, dans quel sens? Complexité?
Généralité des méthodes? Extensibilité?
13Exemple, Allen-Callahan-Kennedy
doseq k 1, n a(k,k) sqrt(a(k,k)) dopar
i k1, n a(i,k) a(i,k)/a(k,k) enddo
dopar i k1, n dopar j k1, i
a(i,j) a(i,j) a(i,k)a(j,k) enddo
enddo enddo
- do k 1, n
- a(k,k) sqrt(a(k,k))
- do i k1, n
- a(i,k) a(i,k)/a(k,k)
- do j k1, i
- a(i,j) a(i,j) a(i,k)a(j,k)
- enddo
- enddo
- enddo
doseq k 1, n a(k,k) sqrt(a(k,k)) do i
k1, n a(i,k) a(i,k)/a(k,k) do j
k1, i a(i,j) a(i,j) a(i,k)a(j,k)
enddo enddo enddo
doseq k 1, n a(k,k) sqrt(a(k,k)) doseq
i k1, n a(i,k) a(i,k)/a(k,k)
dopar j k1, i a(i,j) a(i,j)
a(i,k)a(j,k) enddo enddo enddo
14Allen-Callahan-Kennedy (suite)
- Dépendances par niveau.
- Transformations de boucles
- marquage (doseq/dopar) et distribution.
- Forces
- optimal pour les niveaux de dépendances
pourquoi? - souvent suffisant en pratique.
- Faiblesses
- insuffisant pour une description des dépendances
plus fine, - insuffisant pour appliquer plus de
transformations. - Exemple toutes les transformations
unimodulaires, le décalage dinstructions et la
fusion de boucles.
15Autres transformations (exemples)
do i 1,n do j 1,n a(i,j)
a(i,j-1)a(i-1,j-1) enddo enddo
do j 1,n dopar i 1,n a(i,j)
a(i,j-1)a(i-1,j-1) enddo enddo
do i 1,n1 dopar j 1,n1 if (i ? 1)
(j ? 1) b(i-1,j-1) a(i-1,j-1)
a(i-1,j-2) if (i ? n) (j ? n)
a(i,j) b(i-1,j-1) enddo enddo
do i 1,n dopar j 1,n a(i,j)
b(i-1,j-1) enddo dopar j 1,n
b(i,j) a(i,j)a(i,j-1) enddo enddo
do i 1,n do j 1,n a(i,j)
b(i-1,j-1) b(i,j) a(i,j)a(i,j-1)
enddo enddo
16Un exemple de problème de fusion pour la mémoire
la contraction de tableaux
- But transformer un tableau temporaire en
scalaire. - application Matlab, Fortran90, etc.
-
a d 1 b a/2 c(1..n) b(2..n1) a(1..n)
do i 1,n a(i) d(i) 1 enddo do i 1,n
b(i) a(i)/2 enddo do i 1,n c(i) b(i1)
a(i) enddo
prologue do i 2,n a(i) d(i) 1 b(i)
a(i)/2 c(i-1) b(i) a(i-1) enddo épilogue
prologue do i 2,n a(i) d(i) 1 b
a(i)/2 c(i-1) b a(i-1) enddo épilogue
do i 1,n a(i) d(i) 1 b(i) a(i)/2
c(i) b(i1) a(i) enddo
do i 1,n a d(i) 1 b(i) a/2 c(i)
b(i1) a enddo
17Plan
- Introduction.
- Pipeline logiciel.
- Transformations de boucles.
- Équations récurrentes uniformes.
- Principes.
- Exemple.
- Résultats et intérêts du modèle.
18Équations récurrentes uniformes
- Pour 1?? i,j,k ? n
- a(i,j,k) b(i,j-1,k) a(i,j,k-1)
- b(i,j,k) a(i-1,j,k) b(i,j,k1)
1 0 0
0 0 -1
0 0 1
0 1 0
- Description à assignation unique.
- Dépendances uniformes.
- Principe de calcul membre droit dabord.
- Dépendances explicites.
- Ordre dexécution implicite.
- Mémoire dépliée.
19SUREs principes généraux
- Analyse des unions de cycles de poids total nul
- calculabilité du système.
- degré de parallélisme du système.
- Analyse duale (en termes de programmation
linéaire) - ordonnancement du système.
- Attribution dune sémantique temps espace
- description dune architecture systolique lorsque
le temps est mono-dimensionnel. - pas de mémoire globale mais des temporisations.
20SURE, exemple
- Pour 1?? i,j,k ? n
- a(i,j,k) b(i,j-1,k) a(i,j,k-1)
- b(i,j,k) a(i-1,j,k) b(i,j,k1)
do i 1,n do k n,1,-1 dopar j 1,n
b(i,j,k) a(i-1,j,k) b(i,j,k1)
enddo enddo do k 1,n dopar j
1,n a(i,j,k) b(i,j-1,k) a(i,j,k-1)
enddo enddo enddo
21Pourquoi ce modèle?
- Avantages
- Modèle simplifié, plus simple à analyser.
- Flot de calcul explicite. Correspondance
calcul-mémoire. - Dépendances uniformes ? délais constants.
- Description propre à la fois proche de
lalgorithme et de larchitecture. - Possibilités de transformations dans le même
formalisme. - Inconvénients
- Langage correspondant (Alpha) restrictif.
- Langage loin des habitudes des programmeurs.
22Boucles, polyèdres, réseaux
j
i
23Outils mathématiques exemple des transformations
de boucles.
- Bornes de boucles ? Polyèdres.
- Points entiers (itérations) ? Réseaux,
sous-réseaux. - Transformations de boucles ? Changement de base.
- Représentations des dépendances ? Polyèdres.
- Allocation des données ? Algèbre linéaire,
réseaux. - Analyse et génération des communications en HPF ?
Polyèdres Presburger. - Optimisations ? Programmation linéaire.
- ...