User Tools

Site Tools


tesi:tesi

Proposte di Tesi di Laurea

In questa sezione sono raccolti alcuni argomenti per tesi di laurea triennali e magistrali. Sono comunque disponibile a valutare anche argomenti diversi da quelli elencati sotto, purché non troppo distanti dalla mia attività di ricerca.

Se volete fare la tesi con me è utile prendere visione delle regole per lo svolgimento di una tesi.

Programmazione parallela con Halide

Halide è un linguaggio di programmazione (DSL, Domain-Specific Language) specializzato per lo sviluppo di algoritmi di tipo stencil, frequentemente utilizzati nella programmazione grafica; ad esempio, vari tipi di filtri applicabili su immagini bitmap possono essere rappresentati da computazioni di tipo stencil che è possibile realizzare con Halide.

Halide non è un linguaggio autonomo, ma sfrutta i costrutti di metaprogrammazione del linguaggio C++ per consentire all'utente di includere i kernel computazionali direttamente nei programmi in C++ che vengono poi compilati dal compilatore di sistema. Halide genera automaticamente codice ottimizzato per vari tipi di CPU e GPU, in quest'ultimo caso usando CUDA oppure OpenCL.

Lo scopo della tesi è di valutare Halide dal punto di vista dell'efficienza e della facilità d'uso, sia considerando le applicazioni per le quali è stato pensato (computazioni di tipo stencil), sia per applicazioni parallele generiche.

Questa tesi richiede un minimo di dimestichezza con il linguaggio C++, sebbene non dovrebbe essere necessario scrivere codice ad oggetti e quindi si possa utilizzare il C++ come se fosse una sorta di “linguaggio C più potente”.

Riferimenti:

Algoritmi paralleli per analisi di reti complesse

L'analisi delle reti complesse è un tema di ricerca sempre attuale. Una rete complessa è rappresentata da un grafo di cui interessa calcolare una serie di metriche standard (es., betweenness centrality, node centrality, numero di “triangoli”, diametro della rete, distribuzione dei gradi dei nodi, eccetera). Esistono algoritmi sequenziali efficienti per il calcolo di tali metriche, che sono prontamente disponibili in diversi software liberi; uno dei più usati è probabilmente NetworkX per il linguaggio Python.

Dato che l'analisi di reti di grandi dimensioni può richiedere molto tempo, è naturale cercare di sfruttare il parallelismo multicore o basato su CUDA. Scopo della tesi è la valutazione delle prestazioni di implementazioni parallele di alcuni algoritmi per il calcolo di metriche su reti complesse presenti ad esempio nelle librerie seguenti:

L'obbiettivo ultimo è l'integrazione degli algoritmi paralleli nel tool DiLeNa sviluppato dall'Università di Bologna per l'analisi di vari tipi di DLT (Distributed Ledger Technologies) considerate come reti complesse. Il tool DiLeNa è scritto in Python ed èì liberamente disponibile su GitHub.

Riferimenti:

Sviluppo di codice CUDA per analisi di immagini per applicazioni in ambito biomedico

Questa tesi, in collaborazione con la collega prof. Elena Loli Piccolomini, riguarda la parallelizzazione tramite CUDA di algoritmi per la ricostruzione di immagini 3D provenienti da tomografia computerizzata (TAC) a scopi diagnostici.

Sono disponibili diversi tipi di algoritmi per applicazioni in specifici settori dell'imaging biomedico; abbiamo collaborazioni in atto con aziende del settore che sono interessate allo sviluppo e ottimizzazione di codice.

Riferimenti

Benchmarking di CPU multicore basate su architetture RISC-V

(Tesi da svolgere in collaborazione con il collega prof. Andrea Bartolini).

Sono disponibili alcuni prototipi di nodi di calcolo basati su processori con architettura RISC-V. Su tali server è installato Linux con la consueta toolchain (compilatore GCC, ecc.). Scopo della tesi è la realizzazione ed esecuzione di benchmark per testare l'efficienza del prototipo; si prevede di utilizzare OpenMP ed eventualmente MPI.

Analisi predittiva dello stato di job in sistemi di calcolo di grandi dimensioni

Nota: Si tratta di un argomento di tesi magistrale che richiede conoscenza di tecniche di machine learning.

Contesto: Il CNAF gestisce un grande centro di calcolo utilizzato da comunità di ricercatori di fisica delle particelle, astrofisica e altro. Il centro è composto da numerosi sistemi interagenti e per ciascuno esistono informazioni di stato già raccolte o raccoglibili tramite strumenti di monitoring. In questo scenario sono possibili diverse applicazioni di ML, orientate alla failure prediction o predictive maintenance o altro ancora. Alcuni esempi

Job classification. Un centro di calcolo con circa 40K cores in O(10^3) host fisici esegue job singlecore o multicore (1 o 8). I job appartengono a diversi gruppi di utenti (O(50)) e sono accodati da un batch system (HTCondor) che ne schedula l'esecuzione in base ad algoritmi di fairshare. Lo stato dei job durante l'esecuzione viene rappresentato da alcune grandezze (tra molte disponibili) quali per es. memoria, disco, cputime campionate ogni 3 minuti e raccolte in un database. I job di interesse hanno durata tipicamente compresa tra 4 ore e 4 giorni. Si desidera classificare la famiglia di appartenenza dei job osservando l'evoluzione del loro stato x(t) nelle fasi iniziali (per es. job I/O intensive oppure CPU intensive), oppure predire se i job termineranno con successo o fallimento (per il training sono disponibili dati di accounting per i job conclusi, compreso lo stato d'uscita).

WN failure. Lo stato dei nodi di calcolo (Worker Node) è campionato ogni tre minuti sia dal punto di vista del batch system che del S.O. I WN appartengono a circa 4 o 5 modelli distinti. si desidera prevedere se un particolare WN rischia di guastarsi per problema hardware o per le correnti condizioni di carico (in tal caso si considerano anche i job in esecuzione nella macchina e nell'intero cluster).

Algoritmi paralleli per il problema dell'impacchettamento di sfere

Il problema da affrontare riguarda il calcolo del volume minimo che è richiesto per contenere un insieme di _N_ sfere rigide in modo da eviare che si compenetrino. Questo problema ha molte applicazioni pratiche in ambito aerospaziale, e viene affrontato in collaborazione con il dipartimento di Ingegneria Aerospaziale dell'Università di Bologna.

È già stato realizzato un primo prototipo di algoritmo parallelo in C+OpenMP per la risoluzione di tale problema secondo un meccanismo iterativo combinato con un approccio “a forza bruta” per determinare e risolvere le compenetrazioni.

Scopo della tesi è la realizzazione di un analogo algoritmo usando CUDA oppure OpenCL.

Data Distribution Management su GPU

Il servizio di data distribution management viene utilizzato nei simulatori paralleli e distribuiti conformi allo standard High Level Architecture (HLA) per determinare in sostanza le intersezioni tra coppie di (iper-)rettangoli nello spazio. In questo lavoro, svolto in collaborazione con Gabriele D'Angelo, è stato proposto un algoritmo parallelo per architetture a memoria condivisa per risolvere efficientemente questo problema. Resta da esplorare la possibilità di implementare un analogo algoritmo sulle GPU usando CUDA.

Riferimenti:

tesi/tesi.txt · Last modified: 2023/11/08 13:48 by moreno

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki