User Tools

Site Tools


tesi:tesi

Proposte di Tesi di Laurea

(ultimo aggiornamento: 23 ottobre 2021)

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.

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 C+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: 2021/10/23 14:58 by moreno