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.Rahme,

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.Rahme,"— 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.Rahme, M.Thiam 1/18 Efficient Code Generation for Automatic Parallelization and Optimization

2 Code efficace  Processeurs de haut niveau :  pipelines  MMX (Matrix Math eXtention), SSE (Streaming SIMD Extensions), Altivec,... ... Intérêt 2/18 Efficient Code Generation for Automatic Parallelization and Optimization Génération automatique  Opération pénible  Dépendant du matériel  Langages de programmation ne permettant pas l'accès à ces fonctionnalitées

3 Plan  Introduction  Schéma de génération  Formalisme  Algorithme de génération de code  Problèmes de génération  Expérimentations  Implémentation  Résultats  Conclusion 3/18 Efficient Code Generation for Automatic Parallelization and Optimization

4 Schéma de génération 4/18 Changer l'ordre d'éxécution Générer du code réorganisé Optimisations locales Code réorganisé Code optimisé Fonction de réorganisatio n Code + informations de réorganisation Efficient Code Generation for Automatic Parallelization and Optimization

5 Formalisme  Représentation d'une boucle :  vecteur d'itération : x = (i1, i2,..., in)  Représentation du domaine d'itération :  SCoP : polyèdre définit par des inégalitées linéaires  limites et conditions doivent déprendre de :  compteur d'une boucle englobante  constante  paramètres formels 5/18 Efficient Code Generation for Automatic Parallelization and Optimization

6 Formalisme 6/18 int i, j; for (i = 1 ; i < n ; i++) for (j = 1 ; j < n ; j++) if (i <= -j + n + 2) S1; Efficient Code Generation for Automatic Parallelization and Optimization

7 Formalisme  Changer l'ordre d'exécution :  Union de polyèdre disjoints  x vecteur d'itération  p paramètres d'itération  A, A' et c constants  Fonction de réorganisation  T, T' et t constants  rôle :  répartir les itérations sur différents processeurs  réordonner les itérations dans le temps 7/18 Efficient Code Generation for Automatic Parallelization and Optimization

8 Plan  Introduction  Schéma de génération  Formalisme  Algorithme de génération de code  Problèmes de génération  Expérimentations  Implémentation  Résultats  Conclusion 8/18 Efficient Code Generation for Automatic Parallelization and Optimization

9 Algorithme de génération 9/18 Efficient Code Generation for Automatic Parallelization and Optimization  Entrées :  liste de polyèdres  contexte  Dimension  Sortie :  code réordonné Génération récursive des boucles imbriqués Génération des niveaux des boucles Séparer les projections en polyèdres disjoint Trier les polyèdres résultants

10 Algorithme de génération 10/18 Efficient Code Generation for Automatic Parallelization and Optimization

11 Problèmes de génération 11/18 Efficient Code Generation for Automatic Parallelization and Optimization Problème : T est non uni modulaire (déterminant ≠ 1 ) trous Polyèdre de départ Transformation traditionnelle Transformation utilisant l’algorithme de l’article

12 Problèmes de génération  Degrés de liberté 12/18 Efficient Code Generation for Automatic Parallelization and Optimization

13 Plan  Introduction  Schéma de génération  Formalisme  Algorithme de génération de code  Problèmes de génération  Expérimentations  Implémentation  Résultats  Conclusion 13/18 Efficient Code Generation for Automatic Parallelization and Optimization

14 Implémentation 14/18 PIP/PipLibYAKA Chunky CLanCLooG Code Optimisé  CLan : analyseur de code  PIP/PipLib : solveur de problèmes paramètrés de programmation linéaire en nombre entiers  Chunky : Trouve les meilleures transformations à appliquer  CLoog : générateur de code Efficient Code Generation for Automatic Parallelization and Optimization

15 Expérimentation Méthodologie –Ensemble représentatif d’exemples –Régénérer tous les SCoP –Fonction de transformation  Initialement = fonction de réordonnancement  Entrée : Code Original(CO)  Sortie : Code Cible(CC) –Sémantiquement CC = CO 15/18 Efficient Code Generation for Automatic Parallelization and Optimization

16 Résultats 16/18 Efficient Code Generation for Automatic Parallelization and Optimization Résultats SpecFP 2000

17 Résultats(3) Résultats encourageants –Utilisation de la mémoire acceptable –De même que le temps de génération du CC Autres expériences efficacité  ~10 polyèdres –Sans explosion  Mémoire  Temps 17/18 Efficient Code Generation for Automatic Parallelization and Optimization

18 Résumé Problème du balayage de plusieurs polyèdres –Approche naïve (suppression des redondances) –Générer le CC pour chaque polyèdre ensuite les regrouper  Problème contrôles redondants –Récursivement  Générer un ensemble de boucles imbriquées  Séparer en sous-ensembles de polyèdres disjoints  Analyser plusieurs unions de polyèdres –Meilleur solution : pas de redondances –Complexité, pas unitaires & ordre partiel arbitraire sur les polyèdres –L’article solutionne ces 3 dernières limites 18/18 Efficient Code Generation for Automatic Parallelization and Optimization

19 Conclusion Problème en Compilation –Optimisation –Parallélisme Solution : méthode du polyèdre Apport de l’article –Modèle de transformation générale  Nouvelles opportunités pour optimiser le CC  Bénéficier de plus de liberté –Montrer que la méthode donne des résultats  optimaux avec des problèmes réels  Malgré un pire cas de complexité exponentiel 19/18 Efficient Code Generation for Automatic Parallelization and Optimization

20 Perspectives Améliorer la qualité du code généré Deux défis majeurs –Pas non unitaire –Chevauchement des polyèdres Défi toujours lié à l’explosion en temps et en espace 20/18 Efficient Code Generation for Automatic Parallelization and Optimization


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.Rahme,"

Présentations similaires


Annonces Google