PROGRAMMAZIONE PARALLELA SU ARCHITETTURE GPU
INF/01 - 6 CFU - 1° semestre
Docente titolare dell'insegnamento
GIUSEPPE BILOTTA
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
Altro materiale didattico
Verifica dell'apprendimento
MODALITÀ DI VERIFICA DELL'APPRENDIMENTOSono 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.
PROVE IN ITINERENon sono previste prove in intinere. Gli studenti sono tuttavia caldamente consigliati di provare a cimentarsi con problemi, scelti dallo studente stesso o proposti dal docente, durante lo svolgimento del corso.
Apri in formato Pdf English version