logo SBA

ETD

Archivio digitale delle tesi discusse presso l’Università di Pisa

Tesi etd-11252009-234644


Tipo di tesi
Tesi di laurea specialistica
Autore
RIGHETTI, GIACOMO
URN
etd-11252009-234644
Titolo
Esecuzione di codice intermedio su GPU: le VM incontrano i processori grafici
Dipartimento
SCIENZE MATEMATICHE, FISICHE E NATURALI
Corso di studi
TECNOLOGIE INFORMATICHE
Relatori
relatore Cisternino, Antonio
relatore Dittamo, Cristian
controrelatore Vanneschi, Marco
Parole chiave
  • .NET
  • ATI
  • CLR
  • data parallel
  • GPGPU
  • metaprogrammazione
  • Nvidia
Data inizio appello
11/12/2009
Consultabilità
Completa
Riassunto
Oggi giorno le macchine virtuali come il .NET CLR sono usate con successo in molte aree. Tuttavia forniscono un modello ben noto di computazione sequenziale che non può essere direttamente mappato su architettture GPU, poichè queste ultime implementano un differente modello computazionale basato sul paradigma data parallel. D’altra parte sarebbe comodo che questo mapping fosse realizzato perché renderebbe possibile usufruire in un ambiente managed (che offre già di per sè diversi vantaggi per gli sviluppatori) della grande potenza di calcolo messa a disposizione dalle GPU.
In questa tesi è stato realizzato un metaprogramma in grado di generare una versione per GPU di una computazione .NET. Questo metaprogramma effettua analisi di bytecode e genera un programma semanticamente equivalente. L’approccio seguito si basa sulla trasformazione di programmi compilati in formato binario (Assembly). Il programmatore sviluppa la sola versione sequenziale, ritardando la decisione di cosa, quando e come parallelizzare a runtime. La tesi è culminata nello sviluppo di PBricks, una libreria che realizza un mapping tra il CLR e le GPU individuando un preciso modello di memoria e un traduttore da bytecode MSIL a ATI IL (ma la soluzione è estendibile a tutti quegli ambienti d’esecuzione virtuale aventi capacità di introspezione, come ad esempio la JVM di Java, ed è al tempo stesso sufficientemente generica per permettere la generazione di codice eseguibile dalle GPU di Nvidia).
File