Optimisation itérative de bibliothèques de calculs par division hiérarchique de codes
Institution:
Versailles-St Quentin en YvelinesDisciplines:
Directors:
Abstract EN:
The increasing complexity of hardware features incorporated in modern processors makes high performance code generation very challenging. Library generators such as ATLAS, FFTW and SPIRAL overcome this issue by empirically searching in the space of possible program versions for the one that performs the best. This thesis explores fully automatic solution to adapt a compute-intensive application to the target architecture. We show that generative programming is a practical tool to implement a new hierarchical compilation approach for the generation of high performance code. Our general-purpose approach can be applied to generic loop structures. Our approach relies on the decomposition of the original loop nest into simpler kernels. These kernels are much simpler to optimize and furthermore, using such codes makes the performance trade off problem much simpler to express and to solve. We propose a new approach for the generation of performance libraries based on this decomposition method.
Abstract FR:
La complexité grandissante des architectures ne simplifie pas la tâche des compilateurs à générer du code performant. Les générateurs de bibliothèques comme ATLAS, FFTW et SPIRAL ont réussi à intégrer cette difficulté par l'utilisation de recherche itérative. Cette dernière génère différentes versions de programmes et sélectionne la meilleure d'entre elles. Cette thèse explore une solution automatique pour adapter les applications de calculs intensifs à l'architecture complexe des machines. Nous montrerons qu'une approche générative peut être un outil utile à l'implémentation d'une nouvelle approche de compilation hiérarchique pour la génération de code efficace. Cette approche, non spécifique, peut être appliquée sur des structures de boucle générales qu'elle divisera en des fragments de code plus simples à optimiser pour un compilateur. Nous proposerons une nouvelle approche de génération de bibliothèques qui s'appuiera sur la recomposition de ces codes avec un modèle très simplifié.