Étude de la sensibilité aux jeux de données de la compilation itérative
L'analyse et l'optimisation statiques de code ont leurs limitations. En effet, un grand nombre d'informations indispensables à une génération efficace de code ne sont connues qu'à l'exécution (notamment, le comportement des accès mémoire et des instructions de contrôle). Les techniques d'optimisations itératives permettent d'intégrer dans l'optimisation du code ces informations dynamiques. Ces techniques utilisent plusieurs exécutions d'un même code pour analyser son comportement et en déduire comment le transformer efficacement. Cependant, ces techniques peuvent être dépendantes des jeux de données utilisés dans le processus d'optimisation itérative. Dans cet article, nous étudions la sensibilité aux jeux de données d'une technique de compilation itérative. Nous montrons que pour certaines applications, les optimisations générées à partir d'un jeu de données ne sont pas toujours efficaces pour les autres jeux de données. Pour ces applications, nous étudions la représentativité des jeux de données. Nous déterminons s'il est possible d'exhiber un ensemble de jeux de données à partir duquel réaliser des optimisations performantes et stables pour les autres jeux de données.
Static code optimization for modern complex processors suffers from the lack of information about application runtime behavior to generate highly optimized code (memory access and control instruction behaviors for example). Iterative compilation overcomes this limitation by executing the code to analyze its dynamic behavior and then by using this information to select the appropriate code transformations. However, the optimizations selected at the end of the process might not be relevant for a data set not used during the iterative compilation process since runtime behavior may vary with the data set. In this paper, we study the data set sensitivity of an iterative compilation process. We show that for some applications, the generated code is not efficient with a data set different from those used during the optimization process. For these applications, we study the data set representativeness to quantify whether it is possible to choose a small set of input data to use during the iterative process in order to generate efficient code for the unselected input data.
A.COVELIERS, K.HEYDEMANN, N.DRACH
Reçu le 7 mars 2007.
Accepté le 25 octobre 2007.
optimisation de code, compilation itérative, jeu de données, données d'entrée, variation de performances.
code optimisation, iterative compilation, data set, input data, variation in performance.
Français
|