XFOR (Multifor): A New Programming Structure to Ease the Formulation of Efficient Loop Optimizations - Inria - Institut national de recherche en sciences et technologies du numérique Access content directly
Theses Year : 2015

XFOR (Multifor): A New Programming Structure to Ease the Formulation of Efficient Loop Optimizations

XFOR (Multifor): Une nouvelle structure de programmation pour faciliter la formulation d'optimisations de boucles efficaces


We propose a new programming structure named "XFOR" or "Multifor", dedicated to data-reuse aware programming. It allows to handle several for-loops simultaneously and map their respective iteration domains onto each other according to a running frequency the grain) and a relative position (the offset). Additionally, XFOR eases loop transformations application and composition. Experiments show that XFOR codes provides significant speed-ups when compared to the original code versions, but also to the Pluto optimized versions. We implemented the XFOR structure through the development of three software tools: (1) a source-to-source compiler named IBB for Iterate-But-Better!, which automatically translates any C/C++ code containing XFOR-loops into an equivalent code where XFOR-loops have been translated into for-loops. IBB takes also benefit of optimizations implemented in the polyhedral code generator CLooG which is invoked by IBB to generate for-loops from an OpenScop specification; (2) an XFOR programming environment named XFOR-WIZARD that assists the programmer in re-writing a program with classical for-loops into an equivalent but more efficient program using XFOR-loops; (3) a tool named XFORGEN, which automatically generates XFOR-loops from any OpenScop representation of transformed loop nests automatically generated by an automatic optimizer.
Nous proposons une nouvelle structure de programmation appelée "XFOR" ou "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 des transformations (simples ou composées) de boucles d'une façon aisée et 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 oeuvre la structure XFOR par le développement de trois outils logiciels: (1) un compilateur source-à-source nommé IBB (Iterate-But-Better!), qui traduit automatiquement tout code basé sur le langage C contenant des boucles 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.
Fichier principal
Vignette du fichier
x-for.pdf (4.14 Mo) Télécharger le fichier

Dates and versions

tel-01251721 , version 1 (06-01-2016)


  • HAL Id : tel-01251721 , version 1


Imen Fassi. XFOR (Multifor): A New Programming Structure to Ease the Formulation of Efficient Loop Optimizations. Computation and Language [cs.CL]. Université de Strasbourg, 2015. English. ⟨NNT : ⟩. ⟨tel-01251721⟩
251 View
412 Download


Gmail Facebook Twitter LinkedIn More