Efficient Code Generation for Automatic Parallelization and Optimization Cédric Bastoul Proposé...
-
Upload
cendrillon-joseph -
Category
Documents
-
view
105 -
download
0
Transcript of Efficient Code Generation for Automatic Parallelization and Optimization Cédric Bastoul Proposé...
![Page 1: Efficient Code Generation for Automatic Parallelization and Optimization Cédric Bastoul Proposé par : Albert Cohen Présenté par : L.Landwerlin, J.Rahmé,](https://reader035.fdocuments.net/reader035/viewer/2022062622/551d9da2497959293b8d20c8/html5/thumbnails/1.jpg)
Efficient Code Generation for Automatic Parallelization and Optimization
Efficient Code Generation for Automatic Parallelization and Optimization
Cédric Bastoul
Proposé par : Albert Cohen
Présenté par : L.Landwerlin, J.Rahmé, M.Thiam
Efficient Code Generation for Automatic Parallelization and Optimization
![Page 2: Efficient Code Generation for Automatic Parallelization and Optimization Cédric Bastoul Proposé par : Albert Cohen Présenté par : L.Landwerlin, J.Rahmé,](https://reader035.fdocuments.net/reader035/viewer/2022062622/551d9da2497959293b8d20c8/html5/thumbnails/2.jpg)
2Efficient Code Generation for Automatic Parallelization and
Optimization
Code efficace Processeurs complexes
pipelines MMX (Matrix Math
eXtention), SSE (Streaming SIMD Extensions), Altivec, ...
...
Intérêt
Génération automatique Langages de
programmation ne permettant pas l'accès à ces fonctionnalitées
Opération pénible Dépendant du matériel
![Page 3: Efficient Code Generation for Automatic Parallelization and Optimization Cédric Bastoul Proposé par : Albert Cohen Présenté par : L.Landwerlin, J.Rahmé,](https://reader035.fdocuments.net/reader035/viewer/2022062622/551d9da2497959293b8d20c8/html5/thumbnails/3.jpg)
3Efficient Code Generation for Automatic Parallelization and
Optimization
Plan
I. Introduction
1. Représentation polyédrique
2. Schéma de génération
II. Travaux antérieurs
III.Génération
1.Algorithme de génération de code
2.Problèmes de génération
IV.Expérimentations
1. Implémentation
2. Résultats
V.Conclusion
![Page 4: Efficient Code Generation for Automatic Parallelization and Optimization Cédric Bastoul Proposé par : Albert Cohen Présenté par : L.Landwerlin, J.Rahmé,](https://reader035.fdocuments.net/reader035/viewer/2022062622/551d9da2497959293b8d20c8/html5/thumbnails/4.jpg)
4Efficient Code Generation for Automatic Parallelization and
Optimization
Représentation polyèdrique
Un polyèdre est un solide délimité par des faces polygonales.
Représentation d'une classe de boucles (for/while) “nids de boucles” par des -polyèdres paramètrés
![Page 5: Efficient Code Generation for Automatic Parallelization and Optimization Cédric Bastoul Proposé par : Albert Cohen Présenté par : L.Landwerlin, J.Rahmé,](https://reader035.fdocuments.net/reader035/viewer/2022062622/551d9da2497959293b8d20c8/html5/thumbnails/5.jpg)
5Efficient Code Generation for Automatic Parallelization and
Optimization
Représentation polyèdrique
int i, j;for (i = 1 ; i < n ; i++)
for (j = 1 ; j < n ; j++)if (i <= -j + n + 2)
I1;
![Page 6: Efficient Code Generation for Automatic Parallelization and Optimization Cédric Bastoul Proposé par : Albert Cohen Présenté par : L.Landwerlin, J.Rahmé,](https://reader035.fdocuments.net/reader035/viewer/2022062622/551d9da2497959293b8d20c8/html5/thumbnails/6.jpg)
6Efficient Code Generation for Automatic Parallelization and
Optimization
Représentation polyèdrique
Condition de modélisation par un polyèdre : limites et conditions doivent déprendre de :
compteur d'une boucle englobante constante paramètres formels
SCoP (Static Control Part)
![Page 7: Efficient Code Generation for Automatic Parallelization and Optimization Cédric Bastoul Proposé par : Albert Cohen Présenté par : L.Landwerlin, J.Rahmé,](https://reader035.fdocuments.net/reader035/viewer/2022062622/551d9da2497959293b8d20c8/html5/thumbnails/7.jpg)
7Efficient Code Generation for Automatic Parallelization and
Optimization
Représentation polyèdrique
int i, j;for (i = 1 ; i < n ; i++)
for (j = 1 ; j < n ; j++)if (i <= -j + n + 2)
I1;I1
![Page 8: Efficient Code Generation for Automatic Parallelization and Optimization Cédric Bastoul Proposé par : Albert Cohen Présenté par : L.Landwerlin, J.Rahmé,](https://reader035.fdocuments.net/reader035/viewer/2022062622/551d9da2497959293b8d20c8/html5/thumbnails/8.jpg)
8Efficient Code Generation for Automatic Parallelization and
Optimization
Schéma de génération
AnalyserGénérerdu code
réordonnancé
Optimisationslocales
Code
Code optimisé
Trouverun nouvel
ordred'exécution
![Page 9: Efficient Code Generation for Automatic Parallelization and Optimization Cédric Bastoul Proposé par : Albert Cohen Présenté par : L.Landwerlin, J.Rahmé,](https://reader035.fdocuments.net/reader035/viewer/2022062622/551d9da2497959293b8d20c8/html5/thumbnails/9.jpg)
9Efficient Code Generation for Automatic Parallelization and
Optimization
Travaux antérieurs
Méthode de Quilleré et al. - Donne de bons résultats quand il faut générer un code pour
plusieurs polyèdres
- Possède plusieurs limitations :
- la complexité
- Génération de code avec pas unitaire seulement
- Code non optimisé
![Page 10: Efficient Code Generation for Automatic Parallelization and Optimization Cédric Bastoul Proposé par : Albert Cohen Présenté par : L.Landwerlin, J.Rahmé,](https://reader035.fdocuments.net/reader035/viewer/2022062622/551d9da2497959293b8d20c8/html5/thumbnails/10.jpg)
10Efficient Code Generation for Automatic Parallelization and
Optimization
PlanI. Introduction
1. Représentation polyédrique
2. Schéma de génération
II. Travaux antérieurs
III.Génération
1.Algorithme de génération de code
2.Problèmes de génération
IV.Expérimentations
1. Implémentation
2. Résultats
V.Conclusion
![Page 11: Efficient Code Generation for Automatic Parallelization and Optimization Cédric Bastoul Proposé par : Albert Cohen Présenté par : L.Landwerlin, J.Rahmé,](https://reader035.fdocuments.net/reader035/viewer/2022062622/551d9da2497959293b8d20c8/html5/thumbnails/11.jpg)
11Efficient Code Generation for Automatic Parallelization and
Optimization
Algorithme de génération de code (1)
Liste des polyèdresAlgorithme de génération
de CodeContexte
Dimension
Boucles imbriqués
Entrées Sortie
- Liste des polyèdres transformés :- Contexte : l’ensemble des contraintes sur les paramètres globaux - Boucles imbriqués : qui implémentent l’ordre d’exécution de la fonction de ré-ordonnancement
![Page 12: Efficient Code Generation for Automatic Parallelization and Optimization Cédric Bastoul Proposé par : Albert Cohen Présenté par : L.Landwerlin, J.Rahmé,](https://reader035.fdocuments.net/reader035/viewer/2022062622/551d9da2497959293b8d20c8/html5/thumbnails/12.jpg)
12Efficient Code Generation for Automatic Parallelization and
Optimization
Algorithme de génération de code (2)
Le polyèdre transformé de S1 qu’on doit parcourir
Figure 1 Figure 2
Le polyèdre transformé de S2 qu’on doit parcourir
![Page 13: Efficient Code Generation for Automatic Parallelization and Optimization Cédric Bastoul Proposé par : Albert Cohen Présenté par : L.Landwerlin, J.Rahmé,](https://reader035.fdocuments.net/reader035/viewer/2022062622/551d9da2497959293b8d20c8/html5/thumbnails/13.jpg)
13Efficient Code Generation for Automatic Parallelization and
Optimization
Algorithme de génération du code (3)
-Séparer les projections en polyèdres disjoints-Génération du code de parcours pour ‘i’ -Génération des boucles imbriqués
S1 et S2
S1 do i = 1 6 (pas = 2)
do i = 7 n (pas = 2)
do i = 1 6 (pas = 2)
do i = 7 n (pas = 2)
do j = 1 7-i S1 S2
do j = 1 n S1
Etapes : do j = 8-i n S1
![Page 14: Efficient Code Generation for Automatic Parallelization and Optimization Cédric Bastoul Proposé par : Albert Cohen Présenté par : L.Landwerlin, J.Rahmé,](https://reader035.fdocuments.net/reader035/viewer/2022062622/551d9da2497959293b8d20c8/html5/thumbnails/14.jpg)
14Efficient Code Generation for Automatic Parallelization and
Optimization
Boucles à pas non unitaires (1)
Efficient Code Generation for Automatic Parallelization and Optimization
Polyèdre de départ Transformation
Il peut être parfois nécessaire de ne pas parcourir certaines valeurs dans certaines dimensions
Problème survient : quand T est non uni-modulaire (dét ≠ 1 )
Les Trous : points avec des images rationnelles dans l’espace d’origine
: fonction de transformation ayant pour matrice T = [1 2]
![Page 15: Efficient Code Generation for Automatic Parallelization and Optimization Cédric Bastoul Proposé par : Albert Cohen Présenté par : L.Landwerlin, J.Rahmé,](https://reader035.fdocuments.net/reader035/viewer/2022062622/551d9da2497959293b8d20c8/html5/thumbnails/15.jpg)
15Efficient Code Generation for Automatic Parallelization and
Optimization
Boucles à pas non unitaires (2)
Transformation en utilisant l’algorithme modifié par les auteurs
Algorithme initial Algorithme modifié par les auteurs
![Page 16: Efficient Code Generation for Automatic Parallelization and Optimization Cédric Bastoul Proposé par : Albert Cohen Présenté par : L.Landwerlin, J.Rahmé,](https://reader035.fdocuments.net/reader035/viewer/2022062622/551d9da2497959293b8d20c8/html5/thumbnails/16.jpg)
16Efficient Code Generation for Automatic Parallelization and
Optimization
Indépendance des degrés(1)
DéfinitionIndépendance entre les compteursutilisés par les instructions considéréesou à exécuter.
Exemple 4 matrices A, B, C, D dans M[n,n]. On doit calculer E= A x B & F= C x D
![Page 17: Efficient Code Generation for Automatic Parallelization and Optimization Cédric Bastoul Proposé par : Albert Cohen Présenté par : L.Landwerlin, J.Rahmé,](https://reader035.fdocuments.net/reader035/viewer/2022062622/551d9da2497959293b8d20c8/html5/thumbnails/17.jpg)
17Efficient Code Generation for Automatic Parallelization and
Optimization
Indépendance des degrés(2)
Exemple (suite1)
pour t=1 à n
Pour i=1 à n
Pour j=1 à n
E[i,j] += A[i,t] * B[t,j]
Pour i=1 à n
Pour j=1 à n
F[i,j] += C[i,t] * D[t,j]
Itérations: 2n3 + 2n2 + n
Exemple (suite2)
pour t=1 à n
Pour i=1 à n
Pour j=1 à n
E[i,j] += A[i,t] * B[t,j]
Pour j=1 à n
F[i,j] += C[i,t] * D[t,j]
Itérations: 2n3 + n2 + n
![Page 18: Efficient Code Generation for Automatic Parallelization and Optimization Cédric Bastoul Proposé par : Albert Cohen Présenté par : L.Landwerlin, J.Rahmé,](https://reader035.fdocuments.net/reader035/viewer/2022062622/551d9da2497959293b8d20c8/html5/thumbnails/18.jpg)
18Efficient Code Generation for Automatic Parallelization and
Optimization
Indépendance des degrés (3)
Exemple (Fin)
pour t=1 à n
Pour i=1 à n
Pour j=1 à n
E[i,j] += A[i,t] * B[t,j]
F[i,j] += C[i,t] * D[t,j]
Itérations: n3 + n2 + n
![Page 19: Efficient Code Generation for Automatic Parallelization and Optimization Cédric Bastoul Proposé par : Albert Cohen Présenté par : L.Landwerlin, J.Rahmé,](https://reader035.fdocuments.net/reader035/viewer/2022062622/551d9da2497959293b8d20c8/html5/thumbnails/19.jpg)
19Efficient Code Generation for Automatic Parallelization and
Optimization
PlanI. Introduction
1. Représentation polyédrique
2. Schéma de génération
II. Travaux antérieurs
III.Génération
1.Algorithme de génération de code
2.Problèmes de génération
IV.Expérimentations
1. Implémentation
2. Résultats
V.Conclusion
![Page 20: Efficient Code Generation for Automatic Parallelization and Optimization Cédric Bastoul Proposé par : Albert Cohen Présenté par : L.Landwerlin, J.Rahmé,](https://reader035.fdocuments.net/reader035/viewer/2022062622/551d9da2497959293b8d20c8/html5/thumbnails/20.jpg)
20Efficient Code Generation for Automatic Parallelization and
Optimization
Implantation
Sous le nom CLooG (Chunky Loop Generator)
Disponible sous licence GNU à (http://www.prism.uvsq.fr)
Applicable à plusieurs systèmes
Avoir au préalable PIP/PipLib
![Page 21: Efficient Code Generation for Automatic Parallelization and Optimization Cédric Bastoul Proposé par : Albert Cohen Présenté par : L.Landwerlin, J.Rahmé,](https://reader035.fdocuments.net/reader035/viewer/2022062622/551d9da2497959293b8d20c8/html5/thumbnails/21.jpg)
21Efficient Code Generation for Automatic Parallelization and
Optimization
Tests
ScoPstous riche Paramétrique
apsi 109 80 80(14)art 62 28 27(8)
lucas 11 4 4(13)quake 40 20 14(7)
Domaine d'itérationtous point rectangle prisme autre
apsi 2192 1156 1036 0 0art 499 331 142 0 0
lucas 2070 317 1753 0 0quake 639 367 216 9 0
Génération de codesuboptimal dupliqué temps
apsi 1 9118 58art 0 623 2
lucas 1 6832 127quake 0 740 8
Infos générales sur les données
d’entrée
infos sur la forme des polyèdres
Résultats
![Page 22: Efficient Code Generation for Automatic Parallelization and Optimization Cédric Bastoul Proposé par : Albert Cohen Présenté par : L.Landwerlin, J.Rahmé,](https://reader035.fdocuments.net/reader035/viewer/2022062622/551d9da2497959293b8d20c8/html5/thumbnails/22.jpg)
22Efficient Code Generation for Automatic Parallelization and
Optimization
Résultats(1)
Génération de code
initial suboptimal dupliqué temps
Apsi
Art
Lucas
Quake
2192 1 9118 58
499 0 623 2
2070 1 6832 127
639 0 740 8
Comparaison entre ces deux colonnes nous donne un facteur de duplication de l’ordre de 3.4
![Page 23: Efficient Code Generation for Automatic Parallelization and Optimization Cédric Bastoul Proposé par : Albert Cohen Présenté par : L.Landwerlin, J.Rahmé,](https://reader035.fdocuments.net/reader035/viewer/2022062622/551d9da2497959293b8d20c8/html5/thumbnails/23.jpg)
23Efficient Code Generation for Automatic Parallelization and
Optimization
Résultats(2)
Résultats encourageants Utilisation de la mémoire acceptable De même que le temps de génération du CC
Autres expériences montrent son efficacité ~10 polyèdres
Sans explosion Mémoire Temps
![Page 24: Efficient Code Generation for Automatic Parallelization and Optimization Cédric Bastoul Proposé par : Albert Cohen Présenté par : L.Landwerlin, J.Rahmé,](https://reader035.fdocuments.net/reader035/viewer/2022062622/551d9da2497959293b8d20c8/html5/thumbnails/24.jpg)
24Efficient Code Generation for Automatic Parallelization and
Optimization
Conclusion Compilation : Optimisation, Parallélisme Solution
plusieurs méthodes(naïve, étude des polyèdres 1 à 1, …) meilleure méthode : polyèdre (Quilleri et al.)
Apports de l’article Modèle de transformation générale
Matrices quelconques, Pas non unitaires Fonctions de parcours non entière
Montrer que la méthode donne des résultats optimaux avec des problèmes réels
Perspectives Chevauchement des polyèdres complexité