User Tools

Site Tools


tesi:tesi

Proposte di Tesi di Laurea

(ultimo aggiornamento: 19 gennaio 2022)

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.

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).

Un algoritmo parallelo 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. L'argomento della tesi consiste nel completare il programma in conformità ad una versione MATLAB precedente, aggiungere alcune caratteristiche che al momento mancano (gestione di condizioni al contorno cicliche oppure “a parete” in modo definibile dall'utente), in modo da dare risposta ad una serie di quesiti pratici legati al problema in questione.

Per questa tesi è necessaria una buona padronanza della programmazione parallela su architetture a memoria condivisa usando OpenMP; sono richieste conoscenze di base di architettura dei calcolatori (utili per l'ottimizzazione del codice) e di algoritmi e strutture dati (per l'ottimizzazione della parte algoritmica).

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:

Programmazione parallela con Chapel

Chapel è un linguaggio per la programmazione parallela sviluppato da Cray. Il linguaggio mette a disposizione costrutti di alto livello che consentono di sviluppare applicazioni parallele per sistemi multicore e cluster in modo relativamente semplice (più semplice rispetto ai classici MPI+OpenMP). Il compilatore Chapel è disponibile come software libero ed è liberamente scaricabile qui.

Scopo di questa tesi è di familiarizzare con il linguaggio, e implementare qualche (semplice) algoritmo parallelo in Chapel, magari simile a qualcuno di quelli visti a lezione o in laboratorio, in modo da confrontare le prestazioni di Chapel con quelle di MPI+OpenMP.

Riferimenti:

Progettazione/implementazione/test di algoritmi paralleli

Questo argomento si colloca nell'ambito della programmazione parallela, tema di particolare interesse visto il proliferare di processori multicore e il successo di architetture di calcolo come le GPU. Sono interessato allo sviluppo di programmi paralleli in qualunque ambito; alcuni esempi:

Le tesi su questi argomenti richiedono l'uso di OpenMP, MPI oppure CUDA/OpenCL.

Riferimenti:

Stereo Matching su GPU

Nel capitolo 4 del rapporto tecnico Introduction to Data Level Parallelism (il link si trova sotto) viene descritto un algoritmo parallelo per tracciare le linee di livello di un'area geografica partendo da due immagini stereo. L'algoritmo era stato pensato per la Connection Machine CM-2 ed è espresso in *Lisp, una estensione parallela del linguaggio Lisp. Sebbene tale linguaggio non sia più utilizzato, l'algoritmo risulta comunque comprensibile, anche grazie alla spiegazione dettagliata fornita nel testo. L'obbiettivo di questo lavoro di tesi è l'implementazione dell'algoritmo su una GPU utilizzando CUDA/C.

Riferimenti:

tesi/tesi.txt · Last modified: 2022/01/19 20:42 by moreno