Thèse soutenue

Program Transformations and Memory Architecture Optimizations for High-Level Synthesis of Hardware Accelerators

EN
Auteur / Autrice : Alexandru Plesco
Direction : Alain Darte
Type : Thèse de doctorat
Discipline(s) : Informatique
Date : Soutenance en 2010
Etablissement(s) : Lyon, Ecole normale supérieure

Résumé

FR  |  
EN

Le leitmotiv de cette thèse était d'étudier et d'élaborer des stratégies source-à-source pour améliorer la conception des interfaces des accélérateurs matériels généré par les outils de synthèse de haut niveau (HLS). Dans la première partie de la thèse, comme étude de cas, nous avons conçu à la main, en VHDL, une logique intelligente, permettant l'interfaçage d'un accélérateur, calculant la multiplication de deux matrices, généré par l'outil de synthèse MMAlpha. Ceci a permis d'augmenter de manière significative les performances du système, mais a également exigé un effort important de développement. Nous avons ensuite montré, sur plusieurs applications de type multimédia, avec un autre outil de HLS, Spark, que le même avantage pouvait être obtenu avec une étape préliminaire semi-automatique de transformations source-à-source (ici de C vers C) en utilisant l’outil WRaP-IT de transformations polyédrique et le compilateur Open64. Dans la deuxième partie de la thèse, en utilisant l'outil C2H HLS d'Altera qui peut synthétiser des accélérateurs matériels communiquant avec une mémoire externe DDR-SDRAM, nous avons montré qu'il était possible de restructurer automatiquement le code de l'application (en utilisant des techniques comme double tampon, la contraction de tableaux, le pavage, le pipeline logiciel, entre autres qui ont été intégrées dans l’outil Chuba), de générer des processus de communication adéquats, écrits entièrement en C, et de les compiler avec C2H, afin que l'application résultante soit hautement optimisée, avec utilisation maximale de la bande passante mémoire. Notre étude montre qu’ainsi qu'il est possible d'utiliser certains outils HLS comme des optimiseurs de niveau back-end pour les optimisations effectuées au niveau front-end. Nous pensons que ceci est la voie à suivre pour que les outils HLS deviennent viables.