Speculative Rewriting of Recursive Programs as Loop Candidates for Efficient Parallelization and Optimization Using an Inspector-Executor Mechanism
Réécriture spéculative de programmes récursifs en boucles candidates à une parallélisation et une optimisation efficaces utilisant un mécanisme inspecteur-exécuteur
Résumé
In this thesis, we introduce Rec2Poly, a framework for speculative rewriting of recursive
programs as affine loops that are candidates for efficient optimization and paralleliza-
tion. Rec2Poly seeks a polyhedral-compliant run-time control and memory behavior in
recursions making use of an offline profiling technique. When it succeeds to model the
behavior of a recursive program as affine loops, it can use the affine loop model to automatically generate an optimized and parallelized code based on the inspector-executor
strategy for the next executions of the program. The inspector involves a light version of
the original recursive program whose role is to collect, generate and verify run-time in-
formation that is crucial to ensure the correctness of the equivalent affine iterative code.
The executor is composed of the affine loops that can be parallelized or even optimized
using the polyhedral model.
Dans cette thèse, nous proposons Rec2Poly, un cadriciel pour la réécriture spéculative
des programmes récursifs sous forme de boucles affines qui sont candidates à une parallélisation et une optimisation efficaces. Rec2Poly cherche un flot de contrôle dyna-
mique et un comportement mémoire conformes au modèle polyédrique dans les récursions, en utilisant une technique de profilage hors ligne. Lorsqu’il réussit à modéliser le
comportement d’un programme récursif sous forme de boucles affines, il peut utiliser le
modèle de boucle affine pour générer automatiquement un code optimisé et parallélisé
basé sur la stratégie inspecteur-exécuteur pour les prochaines exécutions du programme.
L’inspecteur implique une version allégée du programme récursif d’origine dont le rôle est
de collecter, générer et vérifier les informations d’exécution qui sont essentielles pour garantir l’exactitude du code itératif affine équivalent. L’exécuteur est composé des boucles
affines qui peuvent être parallélisées voire optimisées à l’aide du modèle polyédrique.
Origine | Fichiers produits par l'(les) auteur(s) |
---|