PORTALE DELLA DIDATTICA

Ricerca CERCA
  KEYWORD

Progettazione di back-end LLVM configurabile per la compilazione di codice su piattaforme embedded eterogenee

Parole chiave COMPILER, HETEROGENEOUS HARDWARE, GPU, FPGA, EMBED

Riferimenti ANDREA ACQUAVIVA, ENRICO MACII

Riferimenti esterni Gianvito Urgese, Francesco Barchi

Gruppi di ricerca ELECTRONIC DESIGN AUTOMATION - EDA

Tipo tesi SPERIMENTALE

Descrizione Diversi dispositivi eterogenei sono attualmente disponibili sul mercato come Xilinx Zynq e Nvidia Jetson TX1. Spesso questi dispositivi includono acceleratori hardware (HW) capaci di offrire prestazioni vantaggiose in termini di potenza computazionale e risparmio energetico durante l’esecuzione di task particolari.
Sulla carta questi dispositivi offrono alte prestazioni a patto che si sappiano sfruttare le caratteristiche specifiche dell’HW scelto in fase di programmazione.
In questo contesto si propone il lavoro di tesi che concerne la progettazione e lo sviluppo di un back-end LLVM configurabile in grado di compilare software finalizzandolo ad una piattaforma HW eterogenea.
Il lavoro di tesi prevede una prima fase di studio sulle tecnologie di compilazione allo stato dell’arte, tecniche di parallelizzazione automatica e linguaggi di rappresentazione intermedia (LLVM-IR).
In una seconda fase il candidato dovrà usare tools capaci di identificare zone di software parallelizzabili (kernels) e sviluppare un back-end di compilazione in grado di adattare ogni kernel all’hardware disponibile sull’architettura target.
Il back-end, nel scegliere come e dove eseguire ogni kernel, dovrà tenere conto di alcuni requisiti di compilazione; ad esempio sacrificare le performance per ottenere un basso consumo o viceversa tentare di ottenere il massimo delle performance a scapito del risparmio energetico.

Conoscenze richieste • Ottima conoscenza dei linguaggi di programmazione C, C++ e Python
• Conoscenza di Linguaggi formali, grammatiche e automi
• Conoscenza della struttura e del funzionamento di un compilatore
• Buone capacità di lavoro in team
• Flessibilità, proattività ed indipendenza nell’approccio alla ricerca

Note Hardware
Per lo sviluppo del back-end si dovrà studiare e scegliere dell’hardware provvisto di acceleratori (GPU, Graphics core, DSP, FPGA, ecc..) da usare come banco di prova. Alcune delle architetture da prendere in considerazione sono listate di seguito:
• PULP [Cluster di CPU] http://www.pulp-platform.org/
• Xilinx Zynq [CPU+GPU+FPGA] https://www.xilinx.com/products/silicon-devices/soc.html
• STMicroElettronics STCOMET [CPU+DSP] http://www.st.com/
• Nvidia Jetson TX1 [GPU+CPU] http://www.nvidia.com/object/jetson-tx1-dev-kit.html


Software
Durante lo svolgimento della tesi è previsto l’utilizzo delle API di LLVM.
Sarà inoltre necessario studiare la rappresentazione intermedia di LLVM ed il parco software messo a disposizione dal framework.


Scadenza validita proposta 31/12/2017      PROPONI LA TUA CANDIDATURA