Argomenti di tesi proposti dal docente.
PROPOSTE DI TESI TRIENNALI E MAGISTRALI IN VARI AMBITI DI RICERCA
La lista include gli argomenti su cui è possibile richiedere una tesi. I dettagli specifici vanno comunque discussi e concordati con il docente, anche in base al carico di lavoro previsto (tesi triennale/magistrale, di minimo/massimo impegno).
- "ALL WE NEED IS... CODE!"
Contesto. Le piattaforme embedded costituiscono il cuore di moltissimi sistemi moderni — dai dispositivi IoT ai sistemi di controllo industriale, fino all’elaborazione su sistemi autonomi. In questi contesti, le risorse di calcolo ed il budget energetico sono fortemente limitati, rendendo cruciale la capacità di ottimizzare il codice per ottenere le migliori prestazioni possibili. Tradizionalmente, l’ottimizzazione del codice C di riferimento (golden model) avviene tramite tecniche manuali o mediante strumenti di compilazione avanzati. Tuttavia, le moderne tecniche di intelligenza artificiale (AI) offrono nuove opportunità per automatizzare e guidare il processo di ottimizzazione, generando codice parallelo, vettorizzato o adattato a specifici acceleratori hardware, mantenendo la correttezza funzionale rispetto al modello originale.
Contesto. L’ottimizzazione automatica di codice per piattaforme embedded presenta numerose sfide:
- Parallelizzazione: suddividere un programma sequenziale in più flussi di esecuzione efficienti su architetture multicore, evitando dipendenze e colli di bottiglia.
- Vettorizzazione: trasformare operazioni scalari in elaborazioni vettoriali, sfruttando le unità SIMD disponibili.
- Accelerazione hardware: individuare e trasferire porzioni del codice su acceleratori specializzati (ad esempio per operazioni di convoluzione o moltiplicazione di matrici).
In tutti questi casi, è necessario che il codice generato sia sintatticamente corretto, funzionalmente equivalente al riferimento in C, e più efficiente in termini di tempo di esecuzione e risorse utilizzate.
Obiettivo. L’obiettivo è progettare e implementare un flusso di ottimizzazione automatizzato basato su tecniche di AI, in grado di trasformare un programma di riferimento scritto in C in versioni ottimizzate per l’esecuzione su piattaforme embedded.
In particolare:
- Analizzare le principali tecniche di ottimizzazione automatica (parallelizzazione, vettorizzazione, accelerazione) e i loro limiti.
- Sperimentare approcci per la generazione automatica di codice ottimizzato, valutandone la correttezza sintattica e funzionale.
- Implementare una pipeline automatizzata, utilizzabile tramite un’interfaccia standard (ad esempio script o API), per generare e validare il codice trasformato.
- Misurare i miglioramenti in prestazioni e risorse rispetto al codice originale, utilizzando metriche oggettive di efficienza.
Prerequisiti. Il progetto combina aspetti di intelligenza artificiale, ottimizzazione del software e sistemi embedded, e richiede familiarità con il linguaggio C e con le basi della programmazione parallela e vettoriale.
- "PARTICLES IN ACTION!"
Contesto. La localizzazione è un aspetto fondamentale della robotica autonoma: un robot deve poter stimare la propria posizione e l’ambiente circostante per muoversi in modo efficace.
Un approccio diffuso è quello dei particle filter (https://sassafras13.github.io/PF/), algoritmi basati su metodi probabilistici che permettono di stimare lo stato del robot (ad esempio posizione e orientamento) combinando i dati dei sensori con un modello del mondo.
Problema. La localizzazione in ambienti complessi non è banale:
- I sensori come il LIDAR forniscono dati rumorosi o incompleti.
- È necessario stimare la posizione del robot anche in presenza di incertezza.
- Bisogna integrare più fonti di informazione (movimento del robot e sensori) in maniera coerente.
Obiettivo. L’obiettivo è progettare e implementare un particle filter per la localizzazione robotica, testandolo con WeBots (https://cyberbotics.com/), uno strumento che consente di modellare ambienti virtuali e raccogliere misurazioni da sensori simulati.
In particolare:
- Modellare un mondo virtuale e un robot dotato di LIDAR.
- Implementare un algoritmo di particle filter in grado di aggiornare la stima della posizione del robot sulla base dei dati sensoriali e del modello di movimento.
- Valutare l’efficacia della localizzazione in diversi scenari simulati.
- "A PLAYGROUND FOR MODERN COMPILER TOOLCHAINS"
Contesto. Negli ultimi anni, lo sviluppo di strumenti per la generazione di codice efficiente ha visto una forte evoluzione muovendosi oltre al dominio dei compilatori tradizionali. Questa evoluzion è stata in buona parte supportata dall’introduzione di MLIR (Multi-Level Intermediate Representation), un’infrastruttura flessibile progettata per facilitare ottimizzazioni specifiche dei domini applicativi.
MLIR permette di definire dialetti (dialects) che rappresentano differenti livelli di astrazione, dal codice ad alto livello (ad esempio operazioni matematiche o tensoriali) fino al codice macchina. Questa flessibilità lo rende un elemento chiave nei moderni flussi di compilazione, specialmente in ambiti come l’ottimizzazione di modelli di machine learning o la generazione automatica di codice efficiente per architetture eterogenee.
Problema. Nonostante le opportunità derivanti dalla introduzione di MLIR, esprimere algoritmi generali o domini applicativi non legati all’intelligenza artificiale tramite dialetti di alto livello può risultare complesso per una serie di ragioni:
- La maggior parte degli strumenti e degli esempi disponibili si concentra sull’ambito dell’intelligenza artificiale e dell’elaborazione di tensori.
- Mancano strumenti open-source che facilitino la sperimentazione e l’apprendimento delle toolchains MLIR in contesti più generali.
- Scrivere manualmente dialetti o trasformazioni richiede una profonda conoscenza delle infrastrutture sottostanti e una significativa quantità di lavoro ingegneristico.
Obiettivo. L’obiettivo del progetto è realizzare un ambiente di sperimentazione per MLIR, che permetta di esplorare la definizione e l’integrazione di dialetti, trasformazioni e flussi di compilazione.
Le possibili attività includono:
- Fornire una serie di kernel implementati manualmente per illustrare la traduzione tra livelli di astrazione differenti (dal dialetto di alto livello al codice ottimizzato).
- Sviluppare strumenti o interfacce per semplificare la creazione di dialetti e la connessione con backend esistenti.
- Creare una base open-source utile come risorsa didattica e come punto di partenza per la ricerca e lo sviluppo di nuovi flussi di compilazione.
- "HLS+LLM+...: A SALAD OF ACRONYMS"
Contesto. La progettazione hardware assistita da intelligenza artificiale è un ambito emergente che mira a unire le potenzialità delle tecniche di High-Level Synthesis (HLS) con le capacità dei Large Language Model (LLM).
Le metodologie di HLS consentono di generare automaticamente descrizioni hardware (in linguaggi come Verilog o VHDL) a partire da specifiche di alto livello (ad esempio codice C/C++), riducendo tempi e complessità del design. Parallelamente, i modelli di linguaggio di grandi dimensioni stanno dimostrando una sorprendente abilità nella generazione di codice e nella comprensione del contesto di progetto, aprendo la strada a una nuova forma di co-design uomo–AI.
Negli ultimi anni, la ricerca si è concentrata sull’esplorazione di come gli LLM possano supportare le fasi di design space exploration, debugging, e sintesi automatica (si veda ad esempio questo studio: https://arxiv.org/abs/2503.15112).
Problema. Nonostante i progressi, l’integrazione pratica tra HLS e LLM presenta ancora diverse sfide:
- La generazione affidabile di moduli hardware tramite LLM è un problema aperto, sia per la correttezza sintattica che per la semantica del codice.
- Le tecniche di HLS sono spesso complesse da parametrizzare, e la collaborazione con LLM richiede un’interfaccia chiara tra linguaggio naturale e specifiche di sintesi.
- Mancano studi comparativi e strumenti open-source che analizzino sistematicamente le prestazioni e i limiti degli approcci basati su LLM per la progettazione hardware.
Obiettivo. Le possibili attività progettuali includono:
- Studiare e confrontare i principali approcci di HLS e le metodologie di integrazione con LLM.
- Svolgere esperimenti con i framework più promettenti, analizzandone accuratezza, efficienza e robustezza nella generazione di codice hardware.
- Utilizzare un LLM per generare un modulo hardware semplice compatibile con l’architettura PULP (https://pulp-platform.org/), sfruttando un’interfaccia standard come quella di HWPE (https://hwpe-doc.readthedocs.io/en/latest/). Validare il modulo prodotto, verificandone la correttezza funzionale e la qualità del codice rispetto a un’implementazione manuale.
Prerequisiti. L’attività richiede una conoscenza tudio preliminare del linguaggio SystemVerilog.
PROPOSTE DI TESI MAGISTRALI IN AMBITO INDUSTRIALE
- Sviluppo e/o modifica incrementale di compilatori, debugger and e ambienti di sviluppo per programmare microcontrollori prodotti da Infineon (plugin Eclipse, applicazioni cloud, GUI, ...)
- Sviluppo e/o modifica incrementale casi d'uso ed esempio per ambienti embedded (timer, virtualizzazione, controllo motore, e altri contesti analoghi)
- Contributi all'analisi di casi d'uso di interesse per l'industria Automotive
- Maggiori informazioni: Master Thesis at Infineon
Ultime tesi seguite dal docente
Al momento non ci sono titoli di tesi da prelevare in automatico.