Recent technical challenges in the semiconductor manufacturing process prevent performance of General Purpose Processors (GPPs) to scale with increasing clock frequencies and transistor density. Modern computing systems address these limitations by offloading compute-intensive tasks onto dedicated coprocessors implementing hardware specialization for an efficient computation. Among the coprocessors currently on the market, Field-Programmable Gate Arrays (FPGAs) are performant, power-efficient and cost-competitive solutions increasingly considered in several domains. For this reason, the increasing amount and variety of users approaching those devices requires sophisticated yet intuitive toolchains to develop FPGA-based applications. Despite modern High-Level Synthesis (HLS) tools drastically improved the FPGA development flow, designing optimal implementations still requires hardware knowledge and substantial effort from the developer perspective. In this context, this thesis proposes a toolchain guiding the developer from the early critical stage of kernel selection down to the whole HLS optimization process. For a best user experience, this guidance is provided by means of an FPGA formulation of the Berkeley Roofline performance model. At first, we use the Roofline model to visualize attainable FPGA performance of an HLS kernel with respect to its data locality. Then, we use the obtained performance framework to guide the optimization process in terms of HLS directives selection and manual code restructuring. The directive-based optimization is guided by means of an automated Design Space Exploration (DSE) engine searching the optimization space and reporting on the Roofline model the performance of the most promising configuration. The manual optimization process, instead, is guided by visualizing the performance impact of code restructuring strategy as computed by means of benchmarks and analytical models. In this way, the developer can iteratively optimize a kernel by selecting the HLS-directive configuration returned by the DSE engine or manually restructuring the code under the guidance of the Roofline model. The overall toolchain has been validated on real-life applications from several domains as well as on some standard benchmarks for a state-of-the-art comparison. The obtained results show that the proposed optimization methodology outperforms previous automated approaches up to 14.36x and produces designs having performance comparable to state-of-the-art bespoke implementations yet significantly reducing the engineering effort.

Recenti problematiche nel processo di fabbricazione di circuiti integrati impediscono di ottenere delle prestazioni proporzionali all’aumento delle frequenza di clock e la densità dei circuiti. Per sopperire a queste limiazioni, i moderni sistemi di computazione delegano i processi computazionalemnte più pesanti a coprocessori capaci di migliorare l’efficienza computazionale tramite specializzazione di risorse hardware. Tra gli acceleratori hardware sul mercato, le Field-Programmable Gate Array (FPGA) offrono una soluzione ad alte prestazioni, efficiente e competitiva in termini di costi sempre più considerata in diversi domini. Per questo motivo, la quantità e varietà di utenti che si stanno avvicinando a questi dispositivi richiede degli strumenti di sviluppo sofisticati ma al contempo intuitivi. Malgrado i moderni strumeti di High-Level Synthesis (HLS) hanno migliorato drasticamente lo sviluppo di applicazioni per FPGA, ottenere prestazioni ideali richiede notevoli conoscenze hardware e un sostanziale sforzo da parte dell’utente. In questo scenario, questa tesi propone un insieme di strumenti di sviluppo per guidare lo sviluppatore dalle prime fasi di selezione della porzione di codice da accelerare fino al completo processo di ottimizzazione. Per una migliore esperienza utente, proponiamo di guidare il programmatore attraverso un modello di prestazione Roofline adattato per FPGA. In primo luogo, utilizziamo il modello Roofline per visualizzare le prestazioni FPGA ottenibili da un kernel HLS rispetto alla località dei dati presentata. Successivamente, utilizziamo questo grafico per guidare l’ottimizzazione tramite l’inserimento di direttive HLS e modifiche manuali al codice. L’ottimizzazione tramite direttive è guidata tramite un processo di Design Space Exploration (DSE) che ne cerca la miglior configurazione e ne riporta le performance sullo stesso modello Roofline. Il processo di ottimizzazione manuale, invece, viene guidato visualizzando l’impatto in performance di modifiche mirate al codice calcolate tramite benchmark e modelli analitici. In questo modo, lo sviluppatore può iterativamente ottimizzare un kernel selezionando una configurazione ottimale delle direttive HLS oppure modificare manualmente il codice secondo le indicazioni date dal modello Roofline. L’intera metodologia e gli strumenti sono stati validati su applicazioni di diversi domini e su benchmark noti. I risultati ottenuti mostrano che la nostra metodologia produce soluzioni con prestazioni fino a 14.36x migliori a precedenti metodologie automatiche e permette di ottenere prestazioni paragonabili ad implementazioni dedicate presenti stato dell’arte sebbene ottenute in un tempo nettamente ridotto.

A toolchain to optimize HLS applications via the Roofline model

SIRACUSA, MARCO
2019/2020

Abstract

Recent technical challenges in the semiconductor manufacturing process prevent performance of General Purpose Processors (GPPs) to scale with increasing clock frequencies and transistor density. Modern computing systems address these limitations by offloading compute-intensive tasks onto dedicated coprocessors implementing hardware specialization for an efficient computation. Among the coprocessors currently on the market, Field-Programmable Gate Arrays (FPGAs) are performant, power-efficient and cost-competitive solutions increasingly considered in several domains. For this reason, the increasing amount and variety of users approaching those devices requires sophisticated yet intuitive toolchains to develop FPGA-based applications. Despite modern High-Level Synthesis (HLS) tools drastically improved the FPGA development flow, designing optimal implementations still requires hardware knowledge and substantial effort from the developer perspective. In this context, this thesis proposes a toolchain guiding the developer from the early critical stage of kernel selection down to the whole HLS optimization process. For a best user experience, this guidance is provided by means of an FPGA formulation of the Berkeley Roofline performance model. At first, we use the Roofline model to visualize attainable FPGA performance of an HLS kernel with respect to its data locality. Then, we use the obtained performance framework to guide the optimization process in terms of HLS directives selection and manual code restructuring. The directive-based optimization is guided by means of an automated Design Space Exploration (DSE) engine searching the optimization space and reporting on the Roofline model the performance of the most promising configuration. The manual optimization process, instead, is guided by visualizing the performance impact of code restructuring strategy as computed by means of benchmarks and analytical models. In this way, the developer can iteratively optimize a kernel by selecting the HLS-directive configuration returned by the DSE engine or manually restructuring the code under the guidance of the Roofline model. The overall toolchain has been validated on real-life applications from several domains as well as on some standard benchmarks for a state-of-the-art comparison. The obtained results show that the proposed optimization methodology outperforms previous automated approaches up to 14.36x and produces designs having performance comparable to state-of-the-art bespoke implementations yet significantly reducing the engineering effort.
RABOZZI, MARCO
ING - Scuola di Ingegneria Industriale e dell'Informazione
24-lug-2020
2019/2020
Recenti problematiche nel processo di fabbricazione di circuiti integrati impediscono di ottenere delle prestazioni proporzionali all’aumento delle frequenza di clock e la densità dei circuiti. Per sopperire a queste limiazioni, i moderni sistemi di computazione delegano i processi computazionalemnte più pesanti a coprocessori capaci di migliorare l’efficienza computazionale tramite specializzazione di risorse hardware. Tra gli acceleratori hardware sul mercato, le Field-Programmable Gate Array (FPGA) offrono una soluzione ad alte prestazioni, efficiente e competitiva in termini di costi sempre più considerata in diversi domini. Per questo motivo, la quantità e varietà di utenti che si stanno avvicinando a questi dispositivi richiede degli strumenti di sviluppo sofisticati ma al contempo intuitivi. Malgrado i moderni strumeti di High-Level Synthesis (HLS) hanno migliorato drasticamente lo sviluppo di applicazioni per FPGA, ottenere prestazioni ideali richiede notevoli conoscenze hardware e un sostanziale sforzo da parte dell’utente. In questo scenario, questa tesi propone un insieme di strumenti di sviluppo per guidare lo sviluppatore dalle prime fasi di selezione della porzione di codice da accelerare fino al completo processo di ottimizzazione. Per una migliore esperienza utente, proponiamo di guidare il programmatore attraverso un modello di prestazione Roofline adattato per FPGA. In primo luogo, utilizziamo il modello Roofline per visualizzare le prestazioni FPGA ottenibili da un kernel HLS rispetto alla località dei dati presentata. Successivamente, utilizziamo questo grafico per guidare l’ottimizzazione tramite l’inserimento di direttive HLS e modifiche manuali al codice. L’ottimizzazione tramite direttive è guidata tramite un processo di Design Space Exploration (DSE) che ne cerca la miglior configurazione e ne riporta le performance sullo stesso modello Roofline. Il processo di ottimizzazione manuale, invece, viene guidato visualizzando l’impatto in performance di modifiche mirate al codice calcolate tramite benchmark e modelli analitici. In questo modo, lo sviluppatore può iterativamente ottimizzare un kernel selezionando una configurazione ottimale delle direttive HLS oppure modificare manualmente il codice secondo le indicazioni date dal modello Roofline. L’intera metodologia e gli strumenti sono stati validati su applicazioni di diversi domini e su benchmark noti. I risultati ottenuti mostrano che la nostra metodologia produce soluzioni con prestazioni fino a 14.36x migliori a precedenti metodologie automatiche e permette di ottenere prestazioni paragonabili ad implementazioni dedicate presenti stato dell’arte sebbene ottenute in un tempo nettamente ridotto.
File allegati
File Dimensione Formato  
tesi_Siracusa_20200709.pdf

non accessibile

Dimensione 1.37 MB
Formato Adobe PDF
1.37 MB 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/167199