PROGRAMMAZIONE PARALLELA SU ARCHITETTURE GPU

Anno accademico 2016/2017 - 3° anno - Curriculum A
Docente: Giuseppe BILOTTA
Crediti: 6
SSD: INF/01 - Informatica
Organizzazione didattica: 150 ore d'impegno totale, 102 di studio individuale, 48 di lezione frontale
Semestre:

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.