Approximate Loop Unrolling

Marcelino Rodriguez-Cancio 1 Benoit Combemale 1 Benoit Baudry 1
1 DiverSe - Diversity-centric Software Engineering
Inria Rennes – Bretagne Atlantique , IRISA-D4 - LANGAGE ET GÉNIE LOGICIEL
Abstract : We introduce Approximate Unrolling, a loop optimization that reduces execution time and energy consumption, exploiting the existence of code regions that can endure some degree of approximation while still producing acceptable results. This work focuses on a specific kind of forgiving region: counted loops that map a given functions over the elements of an array. Approximate Unrolling transforms loops in a similar way Loop Unrolling does. However, unlike its exact counterpart, our optimization does not unroll loops by adding exact copies of the loop's body. Instead, it adds interpolations. We describe our experimental implementation of Approximate Unrolling in the Server (C2) Compiler of the Open-JDK Hotspot JVM. The choice to implement our technique directly in the compiler reduced Phase Order problems and transformation overhead. It also proved that our technique could actually improve the performance of a production-ready compiler. Using our modified version of the compiler , we perform several experiments showing that Approximate Unrolling is able reduce execution time and energy consumption of the generated code by a factor of 50% with minimal accuracy losses.
Type de document :
Pré-publication, Document de travail
Liste complète des métadonnées

Littérature citée [40 références]  Voir  Masquer  Télécharger
Contributeur : Marcelino Rodriguez-Cancio <>
Soumis le : mercredi 23 novembre 2016 - 18:16:39
Dernière modification le : vendredi 11 janvier 2019 - 16:22:54
Document(s) archivé(s) le : mardi 21 mars 2017 - 00:52:12


Fichiers produits par l'(les) auteur(s)


  • HAL Id : hal-01401828, version 1


Marcelino Rodriguez-Cancio, Benoit Combemale, Benoit Baudry. Approximate Loop Unrolling. 2016. 〈hal-01401828〉



Consultations de la notice


Téléchargements de fichiers