thesis

Transformations de programmes et optimisations de l'architecture mémoire pour la synthèse de haut niveau d'accélérateurs matériels

Defense date:

Jan. 1, 2010

Edit

Disciplines:

Directors:

Abstract EN:

The leitmotiv of this thesis was to study and to develop source-to-source strategies to improve the design of interfaces that connect the hardware designs generated using high-level synthesis (HLS) tools to the outside world. In the first part of the thesis, as a case study, we designed by hand, in VHDL, an intelligent glue logic implementing double-buffering and blocking, to interface an accelerator, for matrix-matrix multiplication, generated by the MMAlpha HLS tool. This increased significantly the performance of the system but required also a significant engineering effort. We then showed, on several multi-media applications and with another HLS tool, Spark, that the same benefit could be obtained with a preliminary semi-automatic source-to-source (here C-to-C) transformations step using Open64 compiler and WRaP-IT framework for polyhedral transformations. In the second part of the thesis, using the C2H HLS tool from Altera, which can synthesize hardware accelerators communicating to an external DDR-SDRAM memory, we showed that it is possible to automatically restructure the application code, to generate adequate communication processes in C, and to compile them all with C2H, so that the resulting application is highly-optimized, with full usage of the memory bandwidth. These transformations and optimizations, which combine techniques such as double buffering, array contraction, loop tiling, software pipelining, among others, were incorporated in an automatic source-to-source transformation tool, called Chuba, based on the polyhedral model representation. Our study shows that HLS tools can indeed be used as back-end optimizers for front-end optimizations, as it is the case for standard compilation with high-level transformations developed on top of assembly-code optimizers. We believe this is the way to go for making HLS tools viable.

Abstract FR:

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.