XFOR (Multifor) : A new programming structure to ease the formulation of efficient loop optimizations
Auteur / Autrice : | Imen Fassi |
Direction : | Philippe Clauss |
Type : | Thèse de doctorat |
Discipline(s) : | Informatique |
Date : | Soutenance le 27/11/2015 |
Etablissement(s) : | Strasbourg |
Ecole(s) doctorale(s) : | École doctorale Mathématiques, sciences de l'information et de l'ingénieur (Strasbourg ; 1997-....) |
Partenaire(s) de recherche : | Laboratoire : Laboratoire des sciences de l'ingénieur, de l'informatique et de l'imagerie (Strasbourg ; 2013-....) |
Jury : | Président / Présidente : Steven Derrien |
Rapporteurs / Rapporteuses : François Irigoin, Denis Barthou |
Résumé
Nous proposons une nouvelle structure de programmation appelée XFOR (Multifor), dédiée à la programmation orientée réutilisation de données. XFOR permet de gérer simultanément plusieurs boucles "for" ainsi que d’appliquer/composer des transformations de boucles d’une façon intuitive. Les expérimentations ont montré des accélérations significatives des codes XFOR par rapport aux codes originaux, mais aussi par rapport au codes générés automatiquement par l’optimiseur polyédrique de boucles Pluto. Nous avons mis en œuvre la structure XFOR par le développement de trois outils logiciels: (1) un compilateur source-à-source nommé IBB, qui traduit les codes XFOR en un code équivalent où les boucles XFOR ont été remplacées par des boucles for sémantiquement équivalentes. L’outil IBB bénéficie également des optimisations implémentées dans le générateur de code polyédrique CLooG qui est invoqué par IBB pour générer des boucles for à partir d’une description OpenScop; (2) un environnement de programmation XFOR nommé XFOR-WIZARD qui aide le programmeur dans la ré-écriture d’un programme utilisant des boucles for classiques en un programme équivalent, mais plus efficace, utilisant des boucles XFOR; (3) un outil appelé XFORGEN, qui génère automatiquement des boucles XFOR à partir de toute représentation OpenScop de nids de boucles transformées générées automatiquement par un optimiseur automatique.