User Tools

Site Tools


tesi:tesi

Proposte di Tesi di Laurea

In questa sezione sono raccolti alcuni argomenti per tesi triennali e magistrali. Sono sempre disponibile a valutare argomenti diversi da quelli elencati sotto, proposti direttamente dagli studenti. Per avere un'idea degli argomenti di cui mi occupo (e quindi sui quali sono in grado di seguire tesi) puo' essere utile dare un'occhiata alla mia pagina delle pubblicazioni.

Le proposte per tesi triennali sono etichettate con LT e quelle magistrali sono etichettate con LM. Queste indicazioni non sono vincolanti: nulla vieta ad un laureando triennale di scegliere un argomento marcato LM; in tal caso la portata della tesi potrà essere rimodulata in base all'impegno richiesto.

Progettazione/implementazione/test di algoritmi paralleli su cluster, processori multi-core o GPU

Questo argomento si colloca nell'ambito della programmazione parallela, tema di particolare interesse visto il proliferare di procesori multicore e il successo di architetture di calcolo come le GPU. In particolare, sono interessato a seguire tesi che riguardano lo sviuppo di algoritmi paralleli per il calcolo di metriche su reti sociali (ae esempio, betweenness centrality, http://en.wikipedia.org/wiki/Clustering_coefficient!clustering coefficient, cammini minimi, eccetera).

Questa tesi richiede l'uso del linguaggio C/C++ e (in base al tipo di architettura che si andrà a considerare) delle librerie MPI, OpenMP o CUDA/OpenCL.

Riferimenti:

[LM] Implementazione di protocolli di autenticazione "anonimi"

Implementare meccanismi di autenticazione “anonimi” che consentano agli utenti di usare “identità” diverse nei confronti di siti Web diversi, impedendo quindi ai fornitori di servizi di colludere per scambiarsi informazioni di tracciamento degli utenti. Un altro argomento di interesse potrebbe essere l'implementazione di una applicazione Android per il pagamento anonimo tramite NFC.

Riferimenti:

NetLogo è un linguaggio di programmazione che consente di realizzare in maniera semplice simulazioni ad agenti. NetLogo estende il linguaggio di programmazione Logo implementando più “tartarughe” che operano concorrentemente secondo il paradigma SPMD (Single Program Multiple Data). La versione attuale di NetLogo è implementata in Java e sfrutta un singolo core del processore; è però interessante osservare che NetLogo deriva da StarLogo, un linguaggio di programmazione parallelo implementato in *Lisp sulla Connection Machine 2, un supercomputer parallelo con 65K processori.

Scopo di questa tesi è lo sviluppo di un prototipo di una versione “realmente” parallela di NetLogo, in grado di sfruttare tutti i core presenti su un sistema multiprocessore a memoria condivisa. Data la complessità di NetLogo, sarà utile realizzare un prototipo ex novo in linguaggio C/C++, anche privo di interfaccia grafica e considerando solo un sottoinsieme limitato delle primitive di NetLogo. Un possibile punto di partenza potrebbe essere il software UCBlogo, implementazione C del linguaggio Logo.

Riferimenti

[LT/LM] Implementazione di algoritmi paralleli sulla GPU del Raspberry PI

Il SoC utilizzato nel Raspberry PI include una GPU di cui è stata rilasciata la documentazione. Programmare la GPU del Raspberry PI è al momento piuttosto difficoltoso, perché bisogna operare in assembler (niente CUDA, OpenMP e simili…). Ciononostante è possibile, e iniziano ad essere sviluppate librerie che ne fanno uso. Scopo di questa tesi è l'implementazione di ulteriori (semplici) algoritmi paralleli sulla GPU del Raspberry PI, ad esempio nell'ambito dell'algebra lineare, dell'elaborazione di segnali o della crittografia.

Riferimenti:

[LT/LM] Implementazione di algoritmi paralleli su Parallella Board

La scheda Parallella (non è un errore, si scrive proprio così) è un dispositivo nel quale il processore è affiancato da un coprocessore parallelo composto da 16 core interconnessi a formare una mesh di dimensione 4×4. L'architettura di tale dispositivo è abbastanza peculiare, ma può rivelarsi interessante per certe applicazioni. Lo scopo di questa tesi è di familiarizzare con l'architettura della scheda Parallella e con gli strumenti di sviluppo, nonché valutarne le prestazioni realizzando una implementazione parallela di qualche algoritmo seriale relativo ad un'area di proprio interesse (es., algoritmi su grafi, per visione artificiale, di simulazione, ecc.).

Riferimenti

tesi/tesi.txt · Last modified: 2017/04/22 18:21 by moreno