Title: Efficient Code Generation for Automatic Parallelization and Optimization
1Efficient 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
2Intérêt
- 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
- Code efficace
- Processeurs de haut niveau
- pipelines
- MMX (Matrix Math eXtention), SSE (Streaming SIMD
Extensions), Altivec, ... - ...
2/18
Efficient Code Generation for Automatic
Parallelization and Optimization
3Plan
- 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(No Transcript)
5Formalisme
- 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
6Formalisme
- int i, j
- for (i 1 i lt n i)
- for (j 1 j lt n j)
- if (i lt -j n 2)
- S1
6/18
Efficient Code Generation for Automatic
Parallelization and Optimization
7Formalisme
- 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
8Plan
- 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(No Transcript)
10Algorithme de génération
10/18
Efficient Code Generation for Automatic
Parallelization and Optimization
11Problèmes de génération
trous
Polyèdre de départ
Transformation traditionnelle
Problème T est non uni modulaire (déterminant
? 1 )
Transformation utilisant lalgorithme de
larticle
11/18
Efficient Code Generation for Automatic
Parallelization and Optimization
12Problèmes de génération
12/18
Efficient Code Generation for Automatic
Parallelization and Optimization
13Plan
- 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(No Transcript)
15Expérimentation
- Méthodologie
- Ensemble représentatif dexemples
- 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
16Résultats
Résultats SpecFP 2000
16/18
Efficient Code Generation for Automatic
Parallelization and Optimization
17Ré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
18Ré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 - Larticle solutionne ces 3 dernières limites
18/18
Efficient Code Generation for Automatic
Parallelization and Optimization
19Conclusion
- Problème en Compilation
- Optimisation
- Parallélisme
- Solution méthode du polyèdre
- Apport de larticle
- 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
20Perspectives
- Améliorer la qualité du code généré
- Deux défis majeurs
- Pas non unitaire
- Chevauchement des polyèdres
- Défi toujours lié à lexplosion en temps et en
espace
20/18
Efficient Code Generation for Automatic
Parallelization and Optimization