Crowdtuning : towards practical and reproducible auto-tuning via crowdsourcing and predictive analytict. (Crowdtuning : towards practical and reproducible auto-tuning via crowdsourcing and predictive analytics)

Le reglage des heuristiques d'optimisation de compilateur pour de multiples cibles ou implementations d’une meme architecture est devenu complexe. De plus, ce probleme est generalement traite de facon ad-hoc et consomme beaucoup de temps sans etre necessairement reproductible. Enfin, des erreurs de choix de parametrage d’heuristiques sont frequentes en raison du grand nombre de possibilites d’optimisation et des interactions complexes entre tous les composants materiels et logiciels. La prise en compte de multiples exigences, comme la performance, la consommation d'energie, la taille de code, la fiabilite et le cout, peut aussi necessiter la gestion de plusieurs solutions candidates. La compilation iterative avec profil d’execution (profiling feedback), le reglage automatique (auto tuning) et l'apprentissage automatique ont montre un grand potentiel pour resoudre ces problemes. Par exemple, nous les avons utilises avec succes pour concevoir le premier compilateur qui utilise l'apprentissage pour l'optimisation automatique de code. Il s'agit du compilateur Milepost GCC, qui apprend automatiquement les meilleures optimisations pour plusieurs programmes, donnees et architectures en se basant sur les caracteristiques statiques et dynamiques du programme. Malheureusement, son utilisation en pratique, a ete tres limitee par le temps d'apprentissage tres long et le manque de benchmarks et de donnees representatives. De plus, les modeles d'apprentissage «boite noire» ne pouvaient pas representer de facon pertinente les correlations entre les caracteristiques des programme ou architectures et les meilleures optimisations. Dans cette these, nous presentons une nouvelle methodologie et un nouvel ecosysteme d’outils(framework) sous la nomination Collective Mind (cM). L’objectif est de permettre a la communaute de partager les differents benchmarks, donnees d’entree, compilateurs, outils et autres objets tout en formalisant et facilitant la contribution participative aux boucles d’apprentissage. Une contrainte est la reproductibilite des experimentations pour l’ensemble des utilisateurs et plateformes. Notre cadre de travail open-source et notre depot (repository) public permettent de rendre le reglage automatique et l'apprentissage d’optimisations praticable. De plus, cM permet a la communaute de valider les resultats, les comportements inattendus et les modeles conduisant a de mauvaises predictions. cM permet aussi de fournir des informations utiles pour l'amelioration et la personnalisation des modules de reglage automatique et d'apprentissage ainsi que pour l'amelioration des modeles de prevision et l'identification des elements manquants. Notre analyse et evaluation du cadre de travail propose montre qu'il peut effectivement exposer, isoler et identifier de facon collaborative les principales caracteristiques qui contribuent a la precision de la prediction du modele. En meme temps, la formalisation du reglage automatique et de l'apprentissage nous permettent d'appliquer en permanence des techniques standards de reduction de complexite. Ceci permet de se contenter d'un ensemble minimal d'optimisations pertinentes ainsi que de benchmarks et de donnees d’entree reellement representatifs. Nous avons publie la plupart des resultats experimentaux, des benchmarks et des donnees d’entree a l'adresse http://c-mind.org tout en validant nos techniques dans le projet EU FP6 Milepost et durant un stage de these HiPEAC avec STMicroelectronics.