Semi-Automatic Performance Optimization of HPC Kernels - Inria - Institut national de recherche en sciences et technologies du numérique Accéder directement au contenu
Mémoires D'étudiants -- Hal-Inria+ Année : 2016

Semi-Automatic Performance Optimization of HPC Kernels

Résumé

High Performance Computing platforms are made to answer the need of huge computing power, however, taking advantage of their power is difficult as they are complex machines and each platform has a unique set of characteristics. Thus, the developer must program them with care and write specialized code. Tools exist to help the developer in this tricky task to generate optimized versions of an appli- cation. Finding high performing versions is the main concern because the search space can be huge (e.g GCC has about 500 compilation flags) and an exhaustive search is prohibitive. Hence, auto-tuning considers this as a mathematical opti- mization problem. To the best of our knowledge most auto-tuning frameworks mostly resort to generic optimization techniques combined to fully automatic ex- plorations. However, this approach excludes the user from the optimization pro- cess. Hence, it is difficult to know if further improvement can be made and the quality evaluation of the solution is complicated. To answer this problem we pro- pose a semi-automatic approach that gives power back to the user. This approach is based on linear regression techniques to predict the computation kernel perfor- mances. More precisely we used both least square regression and quantile regres- sion. It is also combined to techniques inspired from design of experiments which aim to reduce the experimental cost. We evaluated our approach using the case of a Laplacian kernel and compared it with other classical optimization techniques used in the auto-tuning literature. Our method gives very good results by finding almost every time near-optimal solutions. We provide an in depth analysis of the reason why our approach is much more effective than previously proposed one.
Les plate-formes de calcul haute performance ont été conçues pour répondre à des besoins important en terme de puissance de calcul, cependant, exploiter correctement toute leur puissance n’est pas simple car ce sont des machines complexes et chaque plate-forme a des caractéristiques qui lui sont propres. Il est donc nécéssaire que le développeur écrive un code avec attention et qu’il soit spécifique à la plate-forme cible. Des outils de generation de code existent permettant d’assister le développeur dans cette tâche fastidieuse. Cependant trouver les versions les plus performantes est le principal problème du fait d’un espace de recherche trop important (ex: les 500 options de compilation de GCC )et pour lequel une recherche exhaustive n’est pas practicable. L’auto-tuning aborde ce problème comme un problème d’optimisation mathématique. À notre connaissance la plupart des frameworks d’auto-tuning utilisent des techniques d’optimisations génériques associées à une exploration complètement automatisée. Cependant avec une telle approche, l’utilisateur se retrouve exclu du processus d’optimisation. En effet, il lui est difficile de savoir si des ameliorations sont encore possible et évaluer la qualité d’une solution peut être compliqué. Pour répondre à ce problème, nous proposons une approche semi-automatique dans laquelle l’utilisateur a le contrôle. Cette approche se base sur des méthodes de régressions linéaires pour prédire les performances d’un noyau de calcul. Plus précisément, nous utilisons la régression des moindres carrés et la régression de quantile. Cette approche est utilisée en combinaison avec des techniques inspirées de plans expérimentaux ayant pour but de réduire le coût expérimental. Nous avons évalué notre approche avec le cas d’un noyau Laplacien en la comparant avec d’autres techniques d’optimisation généralement utilisées en auto-tuning. Notre approche donne de très bon résultats en trouvant presque à chaque fois des solutions très proche de l’optimal. Nous avons également analysé pourquoi notre solution est plus efficace.
Fichier principal
Vignette du fichier
report_M2.pdf (1.2 Mo) Télécharger le fichier
Loading...

Dates et versions

hal-01579422 , version 1 (31-08-2017)

Identifiants

  • HAL Id : hal-01579422 , version 1

Citer

Steven Quinito Masnada. Semi-Automatic Performance Optimization of HPC Kernels. Performance [cs.PF]. 2016. ⟨hal-01579422⟩
143 Consultations
149 Téléchargements

Partager

Gmail Facebook X LinkedIn More