User Tools

Site Tools


tesi:tesi

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revisionBoth sides next revision
tesi:tesi [2019/11/11 15:48] morenotesi:tesi [2020/08/11 23:00] moreno
Line 2: Line 2:
  
 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 [[http://www.moreno.marzolla.name/publications/|attività di ricerca]]. 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 [[http://www.moreno.marzolla.name/publications/|attività di ricerca]].
- 
-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. 
  
 Se volete fare la tesi con me è utile prendere visione delle [[tesi:suggerimenti|regole per lo svolgimento di una tesi]].  Se volete fare la tesi con me è utile prendere visione delle [[tesi:suggerimenti|regole per lo svolgimento di una tesi]]. 
Line 18: Line 16:
 === Progettazione/implementazione/test di algoritmi paralleli  ===  === Progettazione/implementazione/test di algoritmi paralleli  === 
  
-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. Sono interessato allo sviluppo di programmi paralleli in qualunque ambito, con particolare interesse al calcolo di metriche su reti sociali (es. [[http://en.wikipedia.org/wiki/Betweenness_centrality|betweenness centrality]], [[http://en.wikipedia.org/wiki/Clustering_coefficient!clustering coefficient]], cammini minimi, eccetera).  +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: 
 +  * calcolo di metriche su reti sociali (es. [[http://en.wikipedia.org/wiki/Betweenness_centrality|betweenness centrality]], [[http://en.wikipedia.org/wiki/Clustering_coefficient!clustering coefficient]], cammini minimi, eccetera)
 +  * allineamento di immagini astronomiche (il problema tecnicamente si chiama [[https://en.wikipedia.org/wiki/Image_registration|image registration]]);  
 +  * etichettare le componenti connesse di una immagine ([[https://en.wikipedia.org/wiki/Connected-component_labeling|connected component labeling]]).
  
 Le tesi su questi argomenti richiedono l'uso di OpenMP, MPI oppure CUDA/OpenCL. Le tesi su questi argomenti richiedono l'uso di OpenMP, MPI oppure CUDA/OpenCL.
Line 28: Line 29:
   * E. Barbieri, [[http://amslaurea.unibo.it/16759/|Analisi dell'efficienza di System on Chip su applicazioni parallele]]   * E. Barbieri, [[http://amslaurea.unibo.it/16759/|Analisi dell'efficienza di System on Chip su applicazioni parallele]]
  
-=== [LM] Implementazione di protocolli di autenticazione "anonimi" ===+=== 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. 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.
Line 36: Line 37:
   * D. Chaum, [[http://www.chaum.com/articles/Security_Wthout_Identification.htm|Security without identification: Card Computers to make Big Brother Obsolete]].    * D. Chaum, [[http://www.chaum.com/articles/Security_Wthout_Identification.htm|Security without identification: Card Computers to make Big Brother Obsolete]]. 
  
-=== [LM] Implementazione di una versione parallela del linguaggio NetLogo ===+=== Implementazione di una versione parallela del linguaggio NetLogo ===
  
 [[http://ccl.northwestern.edu/netlogo/|NetLogo]] è un linguaggio di programmazione che consente di realizzare in maniera semplice simulazioni ad agenti. NetLogo estende il linguaggio di programmazione [[http://el.media.mit.edu/logo-foundation/logo/programming.html|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 [[http://en.wikipedia.org/wiki/StarLogo|StarLogo]], un linguaggio di programmazione parallelo implementato in *Lisp sulla [[http://en.wikipedia.org/wiki/Connection_Machine|Connection Machine 2]], un supercomputer parallelo con 65K processori.  [[http://ccl.northwestern.edu/netlogo/|NetLogo]] è un linguaggio di programmazione che consente di realizzare in maniera semplice simulazioni ad agenti. NetLogo estende il linguaggio di programmazione [[http://el.media.mit.edu/logo-foundation/logo/programming.html|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 [[http://en.wikipedia.org/wiki/StarLogo|StarLogo]], un linguaggio di programmazione parallelo implementato in *Lisp sulla [[http://en.wikipedia.org/wiki/Connection_Machine|Connection Machine 2]], un supercomputer parallelo con 65K processori. 
Line 47: Line 48:
   * [[https://dl.acm.org/citation.cfm?id=2043637|A Distributed Platform for Global-Scale Agent-Based Models of Disease Transmission]]   * [[https://dl.acm.org/citation.cfm?id=2043637|A Distributed Platform for Global-Scale Agent-Based Models of Disease Transmission]]
  
-=== [LT/LM] Implementazione di algoritmi paralleli sulla GPU del Raspberry PI ===+=== Implementazione di algoritmi paralleli sulla GPU del Raspberry PI ===
  
 Il SoC utilizzato nel [[http://www.raspberrypi.org/|Raspberry PI]] include una GPU di cui è stata [[http://www.broadcom.com/docs/support/videocore/VideoCoreIV-AG100-R.pdf|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. Il SoC utilizzato nel [[http://www.raspberrypi.org/|Raspberry PI]] include una GPU di cui è stata [[http://www.broadcom.com/docs/support/videocore/VideoCoreIV-AG100-R.pdf|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.
Line 53: Line 54:
 //Riferimenti:// //Riferimenti://
  
 +  * Simone Magnani, [[https://amslaurea.unibo.it/19100/|Analisi delle prestazioni del sistema grafico videocore iv applicato al calcolo generico]]
   * [[http://rpiplayground.wordpress.com/2014/05/03/hacking-the-gpu-for-fun-and-profit-pt-1/|Hacking the GPU for fun and profit]]   * [[http://rpiplayground.wordpress.com/2014/05/03/hacking-the-gpu-for-fun-and-profit-pt-1/|Hacking the GPU for fun and profit]]
   * [[http://petewarden.com/2014/08/07/how-to-optimize-raspberry-pi-code-using-its-gpu/|How to optimize Raspberry Pi code using its GPU]]   * [[http://petewarden.com/2014/08/07/how-to-optimize-raspberry-pi-code-using-its-gpu/|How to optimize Raspberry Pi code using its GPU]]
Line 58: Line 60:
   * [[http://www.raspberrypi.org/forums/viewtopic.php?f=72&t=79430&p=578470|GEMM example on the QPU]]   * [[http://www.raspberrypi.org/forums/viewtopic.php?f=72&t=79430&p=578470|GEMM example on the QPU]]
  
-=== [LT/LM] Implementazione di algoritmi paralleli su Parallella Board === 
- 
-La scheda [[https://www.parallella.org/|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 4x4. 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// 
  
-  * [[https://www.parallella.org/2015/05/25/how-the-do-i-program-the-parallella/|Parallella programming]] 
-  * A. Cardace, [[http://amslaurea.unibo.it/14383/|Implementazione del modello di Biham-Middleton-Levine sulla Parallella Board]] 
tesi/tesi.txt · Last modified: 2024/03/18 13:00 by moreno

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki