Thèse soutenue

Une approche combinée langage-polyédrique pour la programmation parallèle hétérogène

FR  |  
EN
Auteur / Autrice : Jie Zhao
Direction : Albert Henri Cohen
Type : Thèse de doctorat
Discipline(s) : Informatique
Date : Soutenance le 13/12/2018
Etablissement(s) : Paris Sciences et Lettres (ComUE)
Ecole(s) doctorale(s) : École doctorale Sciences mathématiques de Paris centre (Paris ; 2000-....)
Partenaire(s) de recherche : Laboratoire : École normale supérieure (Paris ; 1985-....). Département d'informatique
établissement opérateur d'inscription : École normale supérieure (Paris ; 1985-....)
Equipe de recherche : Parallélisme de Kahn synchrone (Paris)
Jury : Président / Présidente : Claude Tadonki
Examinateurs / Examinatrices : Albert Henri Cohen, Claude Tadonki, Mary Wolcott Hall, Cédric Bastoul, Francesco Zappa Nardelli, William Finlay McColl
Rapporteurs / Rapporteuses : Mary Wolcott Hall, Cédric Bastoul
DOI : 10.70675/9a4b7e14za7f4z4a6ezb5f1z795b20080783

Mots clés

FR  |  
EN

Mots clés contrôlés

Résumé

FR  |  
EN

De nos jours, l'optimisation des compilateurs est de plus en plus mise à l'épreuve par la diversité des langages de programmation et l'hétérogénéité des architectures. Le modèle polyédrique est un puissant cadre mathématique permettant aux programmes d’exploiter la parallélisation automatique et l’optimisation de la localité, jouant un rôle important dans le domaine de l’optimisation des compilateurs. Une limite de longue date du modèle réside dans sa restriction aux programmes affines à contrôle statique, ce qui a entraîné une demande émergente de prise en charge d'extensions non affines. Cela est particulièrement aigu dans le contexte d'architectures hétérogènes où une variété de noyaux de calcul doivent être analysés et transformés pour répondre aux contraintes des accélérateurs matériels et pour gérer les transferts de données à travers des espaces mémoire. Nous explorons plusieurs extensions non affines du modèle polyhédral, dans le contexte d'un langage intermédiaire bien défini combinant des éléments affines et syntaxiques. D'un côté, nous expliquons comment les transformations et la génération de code pour des boucles avec des limites de boucle dynamiques non dépendantes des données et dynamiques sont intégrées dans un cadre polyédrique, élargissant ainsi le domaine applicable de la compilation polyédrique dans le domaine des applications non affines. D'autre part, nous décrivons l'intégration du pavage en recouvrement pour les calculs de pochoir dans un cadre polyhédral général, en automatisant les transformations non affines dans la compilation polyhédrique. Nous évaluons nos techniques sur des architectures de CPU et de GPU, en validant l'efficacité des optimisations en effectuant une comparaison approfondie des performances avec des frameworks et des librairies écrites à la pointe de la technologie.