Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parLucille Louvet Modifié depuis plus de 10 années
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
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.