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 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:

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

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:

tesi/tesi.txt · Last modified: 2020/08/11 23:00 by moreno