This thesis presents a new approach to the problem of the High-Level Synthesis of parallel applications. High-Level synthesis is the process of generating a hardware design starting from a high-level description. In this work, the Bambu HLS tool, part of the Panda infrastructure, has been extended, adding support for the OpenMP runtime. The interface for the OpenMP runtime is preserved, allowing smooth integration of existing compiler-based optimizations. Moreover, all the existing compiler front-ends could be exploited to map OpenMP-defined parallel programs on the low-level runtime so that the high-level synthesis tool could be focused only on the synthesis of this layer. All the OpenMP runtime functions are mapped on low-level API partially described in C and Verilog. This approach enables the synthesis of generic applications starting from legacy OpenMP-based applications described by software developers. The effectiveness of the proposed solution has been tested using different benchmarks, including complex algorithms on graphs such as Page Rank and Triangle Count.

Questo tesi presenta un nuovo approccio al problema della Sintesi di Alto livello di applicazioni parallele. La sintesi di Alto Livello è un processo che permette di generare acceleratori hardware partendo da una descrizione di alto livello. In questo lavoro, lo stumento di sintesi Bambu, parte dell'infrastruttura Panda, è stato esteso aggiungendo supporto per il runtime di OpenMP. L'interfaccia del runtime di OpenMP è stata mantenuta, permettendo un'integrazione semplice delle ottimizazioni esistenti disponibili nel compilatore. Inoltre, il front-end del compilatore non deve essere cambiato permettendo allo strumento di sintesi ad alto livello di focalizzarsi solo sulla sintesi del runtime. Tutte le funzioni del runtime di OpenMP sono mappate su primitive di basso livello descritte parzialemente in C e Verilog. Questo approccio permette la sintesi di applicazioni già scritte utilizzando annotazioni OpenMP normalmente utilizzate dagli sviluppatori software. L'efficacia della soluzione proposta è stata verificata usando diversi casi di test, inclusi algoritmi complessi su grafi come Page Rank e Triangle Count.

Empowering high-level synthesis methodologies with an OpenMP runtime

GOZZI, GIOVANNI
2021/2022

Abstract

This thesis presents a new approach to the problem of the High-Level Synthesis of parallel applications. High-Level synthesis is the process of generating a hardware design starting from a high-level description. In this work, the Bambu HLS tool, part of the Panda infrastructure, has been extended, adding support for the OpenMP runtime. The interface for the OpenMP runtime is preserved, allowing smooth integration of existing compiler-based optimizations. Moreover, all the existing compiler front-ends could be exploited to map OpenMP-defined parallel programs on the low-level runtime so that the high-level synthesis tool could be focused only on the synthesis of this layer. All the OpenMP runtime functions are mapped on low-level API partially described in C and Verilog. This approach enables the synthesis of generic applications starting from legacy OpenMP-based applications described by software developers. The effectiveness of the proposed solution has been tested using different benchmarks, including complex algorithms on graphs such as Page Rank and Triangle Count.
FIORITO, MICHELE
ING - Scuola di Ingegneria Industriale e dell'Informazione
28-apr-2022
2021/2022
Questo tesi presenta un nuovo approccio al problema della Sintesi di Alto livello di applicazioni parallele. La sintesi di Alto Livello è un processo che permette di generare acceleratori hardware partendo da una descrizione di alto livello. In questo lavoro, lo stumento di sintesi Bambu, parte dell'infrastruttura Panda, è stato esteso aggiungendo supporto per il runtime di OpenMP. L'interfaccia del runtime di OpenMP è stata mantenuta, permettendo un'integrazione semplice delle ottimizazioni esistenti disponibili nel compilatore. Inoltre, il front-end del compilatore non deve essere cambiato permettendo allo strumento di sintesi ad alto livello di focalizzarsi solo sulla sintesi del runtime. Tutte le funzioni del runtime di OpenMP sono mappate su primitive di basso livello descritte parzialemente in C e Verilog. Questo approccio permette la sintesi di applicazioni già scritte utilizzando annotazioni OpenMP normalmente utilizzate dagli sviluppatori software. L'efficacia della soluzione proposta è stata verificata usando diversi casi di test, inclusi algoritmi complessi su grafi come Page Rank e Triangle Count.
File allegati
File Dimensione Formato  
tesiGozzi.pdf

non accessibile

Dimensione 8.74 MB
Formato Adobe PDF
8.74 MB Adobe PDF   Visualizza/Apri
summaryGozzi.pdf

non accessibile

Dimensione 536.01 kB
Formato Adobe PDF
536.01 kB Adobe PDF   Visualizza/Apri

I documenti in POLITesi sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/10589/187405