In the last years, the huge amount of available data leads data scientists to look for increasingly powerful systems to process them. Within this context, Field Programmable Gate Arrays (FPGAs) are a promising solution to improve performance of the system while keeping low energy consumption. Nevertheless, exploiting FPGAs is very challenging due to the high level of expertise required to program them. A lot of High Level Synthesis tools have been produced to help programmers during the flow of acceleration of their algorithms through the hardware architecture. However, these tools often use languages considered low level from the point of view of data scientists and are still much too difficult to use for software developers. This complexity limits FPGAs usage in a number of fields, from Data Science to Signal Processing. One way to overcome this problem is to realize Hardware Libraries of widely used algorithms that transparently offload the computation to the FPGA device from high level languages commonly used by data scientists. This work presents different methodologies to create Hardware Libraries for Desktop and Embedded systems. We have chosen to focus on R, MATLAB and Python languages. For what concerns MATLAB and R, the hardware libraries are developed for Desktop systems by the Reusable Integration Framework for FPGA Accelerators to send and receive data to the FPGA connected via PCI-Express. We have implemented and tested an optimized hardware implementation of the Autocorrelation Function on a Xilinx VC707 board and we reached a speedup of 7x with respect to the execution on an Intel i7-4710HQ. Python, instead, is exploited by using the recently released Xilinx PYNQ platform to create Hardware Libraries for Embedded systems. We have implemented different optimized versions of some NumPy library functions for the PYNQ-Z1 Board, that support the PINQ platform. We are able to achieve a speedup of 3.95x for the Integer Matrices Dot Product algorithm implementation and a speedup of 10x for the Correlation function.

Negli ultimi anni, la grande quantita’ di dati disponibili ha portato gli scienziati di dati a cercare sistemi di calcolo che possano elaborare grandi moli di informazioni ad una velocita’ sempre maggiore. All’interno di questo contesto, una soluzione promettente e’ rappresentata dalle FPGA, architetture hardware riconfigurabili che consentono di raggiungere elevate performance, pur mantenendo un basso consumo di energia. Tuttavia queste architetture sono difficili da utilizzare a causa dell’alto livello di esperienza richiesto per riuscire ad implementare vesioni hardware ottimizzate degli algoritmi. Per far fronte a questo problema, i maggiori produttori di FPGA hanno sviluppato tool di sintesi ad alto livello, in grado di tradurre codice scritto in linguaggi software di alto livello, in codice che descrive i componenti hardware da configurare sulla FPGA. Ma anche questi tool mirano ad aiutare esperti di design hardware, durante il processo implementativo, e risultano quindi difficilmente utilizzabili da chi non ha conoscenze specifiche del settore, come scienziati di dati o sviluppatori software. Questa barriera d’ingresso sta limitando l’uso delle FPGA in settori dove potrebbero portare enormi vantaggi, come il settore della scienza dei dati e del calcolo scientifico. Un modo per risolvere questo problema e’ quello di implementare Librerie Hardware di funzioni largamente usate in questi settori che consentano di utilizzare la FPGA in maniera trasparente all’utente finale. Un Libreria Hardware e’, infatti, formata non solo dal codice necessario per configurare la board con la funzione desiderata, ma anche dall’infrastruttura necessaria per eseguire la funzione direttamente dalle applicazioni degli utenti finali, scritte in linguaggi di programmazione a piu’ alto livello, quindi facilmente utilizzabili da scienziati di dati e sviluppatori di software. Il nostro lavoro propone diverse metodologie per implementare Librerie Hardware sia per Sistemi Desktop che per Sistemi Integrati. Abbiamo deciso di focalizzarci sui linguaggi a piu’ alto livello R, MATLAB e Python, per la loro diffusione nei settori della scienza dei dati e del calcolo scientifico. In particolare, per quanto riguarda R e MATLAB, l’interfaccia e l’implementazione sono state sviluppate per un sistema Desktop, sfruttando lo strumento chiamato RIFFA che consente di comunicare dalla CPU alla FPGA, e viceversa, attraverso un cavo di collegamento PCI-Express. Come caso di studio abbiamo implementato e testato una versione ottimizzata della funzione di Autocorrelazione presente in una delle librerie standard del linguaggio R. Grazie alle tecniche di parallelizzazione utilizzate siamo stati in grado di ottenere un tempo di esecuzione della funzione, eseguita sulla board Xilinx VC707, 7 volte superiore all’esecuzione software sul processore Intel i7-4710HQ. Per quanto riguarda Python, abbiamo sfruttato la tecnologia PYNQ, recentemente rilasciata da Xilinx, per creare una Libreria Hardware integrata in un sistema Embedded, composta da alcune funzioni della libreria NumPy. Dopo aver testato sia le versioni software che quelle hardware sulla board PYNQ-Z1 abbiamo misurato uno speedup pari a 3.95x, per quanto riguarda l’implementazione del prodotto tra matrici di numeri interi, e uno speedup del 10x per quanto riguarda la funzione di correlazione. Il resto della tesi e’ organizzato come segue: - il Capitolo 1 dà una visione di insieme del contesto di questo lavoro e brevemente introduce la soluzione proposta; - il Capitolo 2 fornisce le conoscenze necessarie per capire il lavoro e presenta una visione di lavori collegati, sottolineandone i punti forti e le limitazioni; - il Capitolo 3 mostra l’implementazione hardware ottimizzata della funzione di Autocorrelazione e l’implementazione della libreria hardware per sistemi Desktop; - il Capitolo 4 fornisce i dettagli dell’implementazione della Libreria Hardware per il sistema integrato sulla board PYNQ-Z1, la quale supporta la piattaforma PYNQ; - il Capitolo 5 riporta i risultati dei test effettuati sulle versioni ottimizzate degli algoritmi selezionati; - il Capitolo 6 discute i risultati e le limitazioni del nostro lavoro, e descrive i possibili lavori futuri.

Exploiting FPGA from data science programming languages

STORNAIUOLO, LUCA
2016/2017

Abstract

In the last years, the huge amount of available data leads data scientists to look for increasingly powerful systems to process them. Within this context, Field Programmable Gate Arrays (FPGAs) are a promising solution to improve performance of the system while keeping low energy consumption. Nevertheless, exploiting FPGAs is very challenging due to the high level of expertise required to program them. A lot of High Level Synthesis tools have been produced to help programmers during the flow of acceleration of their algorithms through the hardware architecture. However, these tools often use languages considered low level from the point of view of data scientists and are still much too difficult to use for software developers. This complexity limits FPGAs usage in a number of fields, from Data Science to Signal Processing. One way to overcome this problem is to realize Hardware Libraries of widely used algorithms that transparently offload the computation to the FPGA device from high level languages commonly used by data scientists. This work presents different methodologies to create Hardware Libraries for Desktop and Embedded systems. We have chosen to focus on R, MATLAB and Python languages. For what concerns MATLAB and R, the hardware libraries are developed for Desktop systems by the Reusable Integration Framework for FPGA Accelerators to send and receive data to the FPGA connected via PCI-Express. We have implemented and tested an optimized hardware implementation of the Autocorrelation Function on a Xilinx VC707 board and we reached a speedup of 7x with respect to the execution on an Intel i7-4710HQ. Python, instead, is exploited by using the recently released Xilinx PYNQ platform to create Hardware Libraries for Embedded systems. We have implemented different optimized versions of some NumPy library functions for the PYNQ-Z1 Board, that support the PINQ platform. We are able to achieve a speedup of 3.95x for the Integer Matrices Dot Product algorithm implementation and a speedup of 10x for the Correlation function.
ING - Scuola di Ingegneria Industriale e dell'Informazione
3-ott-2017
2016/2017
Negli ultimi anni, la grande quantita’ di dati disponibili ha portato gli scienziati di dati a cercare sistemi di calcolo che possano elaborare grandi moli di informazioni ad una velocita’ sempre maggiore. All’interno di questo contesto, una soluzione promettente e’ rappresentata dalle FPGA, architetture hardware riconfigurabili che consentono di raggiungere elevate performance, pur mantenendo un basso consumo di energia. Tuttavia queste architetture sono difficili da utilizzare a causa dell’alto livello di esperienza richiesto per riuscire ad implementare vesioni hardware ottimizzate degli algoritmi. Per far fronte a questo problema, i maggiori produttori di FPGA hanno sviluppato tool di sintesi ad alto livello, in grado di tradurre codice scritto in linguaggi software di alto livello, in codice che descrive i componenti hardware da configurare sulla FPGA. Ma anche questi tool mirano ad aiutare esperti di design hardware, durante il processo implementativo, e risultano quindi difficilmente utilizzabili da chi non ha conoscenze specifiche del settore, come scienziati di dati o sviluppatori software. Questa barriera d’ingresso sta limitando l’uso delle FPGA in settori dove potrebbero portare enormi vantaggi, come il settore della scienza dei dati e del calcolo scientifico. Un modo per risolvere questo problema e’ quello di implementare Librerie Hardware di funzioni largamente usate in questi settori che consentano di utilizzare la FPGA in maniera trasparente all’utente finale. Un Libreria Hardware e’, infatti, formata non solo dal codice necessario per configurare la board con la funzione desiderata, ma anche dall’infrastruttura necessaria per eseguire la funzione direttamente dalle applicazioni degli utenti finali, scritte in linguaggi di programmazione a piu’ alto livello, quindi facilmente utilizzabili da scienziati di dati e sviluppatori di software. Il nostro lavoro propone diverse metodologie per implementare Librerie Hardware sia per Sistemi Desktop che per Sistemi Integrati. Abbiamo deciso di focalizzarci sui linguaggi a piu’ alto livello R, MATLAB e Python, per la loro diffusione nei settori della scienza dei dati e del calcolo scientifico. In particolare, per quanto riguarda R e MATLAB, l’interfaccia e l’implementazione sono state sviluppate per un sistema Desktop, sfruttando lo strumento chiamato RIFFA che consente di comunicare dalla CPU alla FPGA, e viceversa, attraverso un cavo di collegamento PCI-Express. Come caso di studio abbiamo implementato e testato una versione ottimizzata della funzione di Autocorrelazione presente in una delle librerie standard del linguaggio R. Grazie alle tecniche di parallelizzazione utilizzate siamo stati in grado di ottenere un tempo di esecuzione della funzione, eseguita sulla board Xilinx VC707, 7 volte superiore all’esecuzione software sul processore Intel i7-4710HQ. Per quanto riguarda Python, abbiamo sfruttato la tecnologia PYNQ, recentemente rilasciata da Xilinx, per creare una Libreria Hardware integrata in un sistema Embedded, composta da alcune funzioni della libreria NumPy. Dopo aver testato sia le versioni software che quelle hardware sulla board PYNQ-Z1 abbiamo misurato uno speedup pari a 3.95x, per quanto riguarda l’implementazione del prodotto tra matrici di numeri interi, e uno speedup del 10x per quanto riguarda la funzione di correlazione. Il resto della tesi e’ organizzato come segue: - il Capitolo 1 dà una visione di insieme del contesto di questo lavoro e brevemente introduce la soluzione proposta; - il Capitolo 2 fornisce le conoscenze necessarie per capire il lavoro e presenta una visione di lavori collegati, sottolineandone i punti forti e le limitazioni; - il Capitolo 3 mostra l’implementazione hardware ottimizzata della funzione di Autocorrelazione e l’implementazione della libreria hardware per sistemi Desktop; - il Capitolo 4 fornisce i dettagli dell’implementazione della Libreria Hardware per il sistema integrato sulla board PYNQ-Z1, la quale supporta la piattaforma PYNQ; - il Capitolo 5 riporta i risultati dei test effettuati sulle versioni ottimizzate degli algoritmi selezionati; - il Capitolo 6 discute i risultati e le limitazioni del nostro lavoro, e descrive i possibili lavori futuri.
Tesi di laurea Magistrale
File allegati
File Dimensione Formato  
2017_10_Stornaiuolo.pdf

accessibile in internet solo dagli utenti autorizzati

Descrizione: Thesis text
Dimensione 2.55 MB
Formato Adobe PDF
2.55 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/136027