Speculative rewriting of recursive programs as loop candidates for efficient parallelization and optimization using and inspector-executor mechanism
Réécriture spéculative de srogrammes 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 parallelization. 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 information 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 dynamique 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 : Version validée par le jury (STAR)