Gabriele Belluardo
Studio comparativo tra CUDA e Vulkan in ambito GPGPU = Comparative study between CUDA and Vulkan for GPGPU.
Rel. Giovanni Malnati. Politecnico di Torino, Corso di laurea magistrale in Ingegneria Informatica (Computer Engineering), 2024
|
PDF (Tesi_di_laurea)
- Tesi
Licenza: Creative Commons Attribution Non-commercial No Derivatives. Download (5MB) | Preview |
Abstract: |
L'elaborato di tesi si propone l'obiettivo di confrontare soluzioni basate su Cuda con omologhe basate su Vulkan e Rust, per la realizzazione di applicativi GPGPU in un contesto orientato ai microservizi, e, in particolare, per accelerare la risoluzione di problemi di ottimizzazione sfruttando l'elevato parallelismo delle GPU. Viene posto il focus sulla comparazione delle performance, della development experience, e della presenza, o meno, di tool per lo sviluppo e il debug. L'approccio proposto basato su Vulkan e Rust si pone come un'alternativa moderna, performante e portabile per lo sviluppo di applicativi su GPU, mantenendo alto il livello di astrazione dall'hardware e garantendo un'esecuzione del programma memory safe. Queste proprietà derivano dalle caratteristiche intrinseche degli strumenti sopra citati e dell'ecosistema su cui si basano: fornite quindi senza costo, non richiedendo allo sviluppatore particolari accortezze o revisioni aggiuntive. Nella prima parte dell'elaborato vengono presentati i concetti fondamentali della GPGPU. Vengono introdotte le API CUDA e Vulkan e l'adozione da parte dell'industria software. Segue una brave introduzione al linguaggio Rust e ai vantaggi che porta in termini di usabilità e produttività per lo sviluppatore, oltre che per l'utente finale. Nella seconda parte viene illustrata la suite di benchmark creati per comparare le performance e i risultati ottenuti. Viene, infine, fornita un'analisi dell'esperienza di sviluppo, la trattazione dei punti di forza e debolezza delle due soluzioni e l'elenco dei contesti in cui è più indicato usare l'una o l'altra soluzione. Nella terza parte, infine, viene illustrato lo sviluppo di un risolutore di matrici QUBO, che integra i benefici di entrambi gli approcci. L'applicativo è nella forma di un microservizio, per facilitare la comunicazione machine-to-machine, e sfrutta, per la parte di rete, il linguaggio Rust con il framework async `Axum', e le API CUDA, per la parte di GPU computing. La scelta di adottare questo tipo di soluzione, come si vedrà, ha portato vantaggi sia in termini di velocità sviluppo che di prestazioni. Inoltre, grazie all'ottimo supporto della FFI di Rust ai linguaggi C/C++, l'integrazione con CUDA è stata agevole, al netto di un preliminare passo di configurazione. |
---|---|
Relatori: | Giovanni Malnati |
Anno accademico: | 2023/24 |
Tipo di pubblicazione: | Elettronica |
Numero di pagine: | 78 |
Soggetti: | |
Corso di laurea: | Corso di laurea magistrale in Ingegneria Informatica (Computer Engineering) |
Classe di laurea: | Nuovo ordinamento > Laurea magistrale > LM-32 - INGEGNERIA INFORMATICA |
Aziende collaboratrici: | DATA Reply S.r.l. con Unico Socio |
URI: | http://webthesis.biblio.polito.it/id/eprint/31038 |
Modifica (riservato agli operatori) |