La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Efficient Code Generation for Automatic Parallelization and Optimization Cédric Bastoul Proposé par : Albert Cohen Présenté par : L.Landwerlin, J.Rahmé,

Présentations similaires


Présentation au sujet: "Efficient Code Generation for Automatic Parallelization and Optimization Cédric Bastoul Proposé par : Albert Cohen Présenté par : L.Landwerlin, J.Rahmé,"— Transcription de la présentation:

1 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

2 2 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

3 Efficient Code Generation for Automatic Parallelization and Optimization 3 Plan Introduction Représentation polyédrique Schéma de génération Travaux antérieurs Génération 1.Algorithme de génération de code 2.Problèmes de génération IV.Expérimentations Implémentation Résultats V.Conclusion

4 Efficient Code Generation for Automatic Parallelization and Optimization 4 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

5 Efficient Code Generation for Automatic Parallelization and Optimization 5 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;

6 Efficient Code Generation for Automatic Parallelization and Optimization 6 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)

7 Efficient Code Generation for Automatic Parallelization and Optimization 7 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

8 Efficient Code Generation for Automatic Parallelization and Optimization 8 Schéma de génération Analyser Générer du code réordonnancé Optimisations locales Code Code optimisé Trouver un nouvel ordre d'exécution

9 Efficient Code Generation for Automatic Parallelization and Optimization 9 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é

10 Efficient Code Generation for Automatic Parallelization and Optimization 10 Plan Introduction Représentation polyédrique Schéma de génération Travaux antérieurs Génération 1.Algorithme de génération de code 2.Problèmes de génération IV.Expérimentations Implémentation Résultats V.Conclusion

11 Efficient Code Generation for Automatic Parallelization and Optimization 11 Algorithme de génération de code (1) Liste des polyèdres Algorithme de génération de Code Contexte Dimension Boucles imbriqués Entrées Sortie - Liste des polyèdres transformés : - Contexte : lensemble des contraintes sur les paramètres globaux - Boucles imbriqués : qui implémentent lordre dexécution de la fonction de ré- ordonnancement

12 Efficient Code Generation for Automatic Parallelization and Optimization 12 Algorithme de génération de code (2) Le polyèdre transformé de S1 quon doit parcourir Figure 1 Figure 2 Le polyèdre transformé de S2 quon doit parcourir

13 Efficient Code Generation for Automatic Parallelization and Optimization 13 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

14 Efficient Code Generation for Automatic Parallelization and Optimization 14 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 lespace dorigine : fonction de transformation ayant pour matrice T = [1 2]

15 Efficient Code Generation for Automatic Parallelization and Optimization 15 Boucles à pas non unitaires (2) Transformation en utilisant lalgorithme modifié par les auteurs Algorithme initialAlgorithme modifié par les auteurs

16 Efficient Code Generation for Automatic Parallelization and Optimization 16 Indépendance des degrés(1) Définition Indépendance entre les compteurs utilisés par les instructions considérées ou à exécuter. Exemple 4 matrices A, B, C, D dans M[n,n]. On doit calculer E= A x B & F= C x D

17 Efficient Code Generation for Automatic Parallelization and Optimization 17 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: 2n 3 + 2n 2 + 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: 2n 3 + n 2 + n

18 Efficient Code Generation for Automatic Parallelization and Optimization 18 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: n 3 + n 2 + n

19 Efficient Code Generation for Automatic Parallelization and Optimization 19 Plan Introduction Représentation polyédrique Schéma de génération Travaux antérieurs Génération 1.Algorithme de génération de code 2.Problèmes de génération IV.Expérimentations Implémentation Résultats V.Conclusion

20 Efficient Code Generation for Automatic Parallelization and Optimization 20 Implantation Sous le nom CLooG (Chunky Loop Generator) Disponible sous licence GNU à (http://www.prism.uvsq.fr)http://www.prism.uvsq.fr Applicable à plusieurs systèmes Avoir au préalable PIP/PipLib

21 Efficient Code Generation for Automatic Parallelization and Optimization 21 Tests Infos générales sur les données dentrée infos sur la forme des polyèdres Résultats

22 Efficient Code Generation for Automatic Parallelization and Optimization 22 Résultats(1) Génération de code initial suboptimal dupliqué temps Apsi Art Lucas Quake Comparaison entre ces deux colonnes nous donne un facteur de duplication de lordre de 3.4

23 Efficient Code Generation for Automatic Parallelization and Optimization 23 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

24 Efficient Code Generation for Automatic Parallelization and Optimization 24 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 larticle 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é


Télécharger ppt "Efficient Code Generation for Automatic Parallelization and Optimization Cédric Bastoul Proposé par : Albert Cohen Présenté par : L.Landwerlin, J.Rahmé,"

Présentations similaires


Annonces Google