PROGRAMMAZIONE PARALLELA SU ARCHITETTURE GPU
Anno accademico 2016/2017 - 3° anno - Curriculum A
Docente: Giuseppe BILOTTA
Crediti: 6
Organizzazione didattica: 150 ore d'impegno totale, 102 di studio individuale, 48 di lezione frontale
Semestre: 1°
Crediti: 6
Organizzazione didattica: 150 ore d'impegno totale, 102 di studio individuale, 48 di lezione frontale
Semestre: 1°
Obiettivi formativi
Fornire agli studenti le basi del calcolo massivamente parallelo su hardware moderno (GPU, CPU multicore, acceleratori) basati sul principio dello stream computing.
Alla conclusione del corso lo studente dovrebbe aver acquisito familiarità con le basi del calcolo parallelo e dei suo paradigmi fondamentali (problemi imbarazzantemente paralleli, riduzioni e scan) e dei principali framework per lo sviluppo di applicazioni massivamente parallele (CUDA e OpenCL).
Prerequisiti richiesti
Conoscenza del linguaggio C.
Contenuti del corso
- breve storia delle schede grafiche e nascita del GPGPU
- fondamenti di GPGPU; introduzione a CUDA
- programmazione in CUDA di alto livello: l'interfaccia CUDA runtime
- benchmarking, ottimizzazione e debugging
- programmazione in CUDA di basso livello: l'interfaccia driver CUDA
- introduzione all'OpenCL ed alla programmazione GPGPU eterogenea
- cenni su multi-GPU
Testi di riferimento
NVIDIA CUDA Programming Guide
OpenCL specification
Verifica dell'apprendimento
Modalità di verifica dell'apprendimento
Sono ammesse due modalità per l'esame di fine corso:
- esame di laboratorio: viene assegnato un problema, da affrontare scrivendo un programma per il calcolo parallelo; durata: 3 ore;
- progettino finale, da concordare con il docente, e da sviluppare in maniera individuale o al piú in coppia; il progetto va consegnato entro 3 mesi, insieme ad una relazione ed una presentazione orale.