PROGRAMMAZIONE PARALLELA SU ARCHITETTURE GPU
Anno accademico 2024/2025 - Docente: GIUSEPPE BILOTTARisultati di apprendimento attesi
Conoscenza e capacità di comprensione: acquisire i fondamenti del calcolo massivamente parallelo su hardware moderno (GPU, CPU multicore, acceleratori) e dello stream computing.
Capacità di applicare conoscenza e comprensione: acquisire le competenze necessarie all'applicazione di quanto appreso per lo sviluppo di software parallelo sfruttando i principali framework per lo sviluppo di applicazioni massivamente parallele (CUDA e OpenCL).
Autonomia di giudizio: acquisire la capacità di identificare paradigmi fondamentali (problemi imbarazzantemente paralleli, riduzioni e scan) e relative opportunità di parallelizzazione.
Abilità comunicative: acquisire la capacità di descrivere con proprietà di linguaggio gli aspetti teorici ed implementativi del calcolo parallelo sulle moderne architetture.
Capacità di apprendimento: acquisire la capacita di comprendere testi specialisitici sull'argomento.
Modalità di svolgimento dell'insegnamento
Il corso è composto da lezioni frontali ed applicative, con lo sviluppo in tempo reale del codice di esempio per la presentazione dei vari argomenti, per permettere agli studenti di acquisire già durante le lezioni la necessaria familiarità con gli aspetti pratici del programma e degli esami.
Qualora l'insegnamento venisse impartito in modalità mista o a distanza potranno essere introdotte le necessarie variazioni rispetto a quanto dichiarato in precedenza, al fine di rispettare il programma previsto e riportato nel syllabus
Prerequisiti richiesti
Conoscenza del linguaggio C.
Frequenza lezioni
Contenuti del corso
- breve storia delle schede grafiche e nascita del GPGPU
- fondamenti di GPGPU; introduzione a CUDA ed OpenCL
- programmi imbarazzentemente paralleli in CUDA ed OpenCL
- benchmarking, ottimizzazione e debugging
- primitive parallele per riduzioni e scan; implementazione OpenCL e/o CUDA
- cenni su multi-GPU
Testi di riferimento
NVIDIA CUDA Programming Guide
OpenCL specification
Programmazione del corso
Argomenti | Riferimenti testi | |
---|---|---|
1 | Concetti generali della programmazione GPU | NVIDIA CUDA Programming Guide |
2 | Aspetti tecnici della programmazione OpenCL | 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;
- la consegna della relazione del progettino e la presentazione potranno anche essere effettuati per via telematica.
La valutazione dell'esame di laboratorio o del progettino finale porterà all'assegnazione di un voto secondo il seguente schema:
- non approvato: l'elaborato finale dimostra una insufficiente conoscenza dei concetti di base della programmazione GPU (distinzione host/device, accodamento di kernel imbarazzantemente paralleli);
- 18-23: l'elaborato finale dimostra una padronanza minima dei concetti di base della programmazione GPU, sufficiente alla loro applicazione nel contesto del compito assegnato;
- 24-27: l'elaborato finale dimostra una buona conoscenza del programma del corso, inclusa la capacità di identificare parti non imbarazzantemente parallele degli algoritmi e l'applicazione di procedure standard per l'implementazione degli stessi;
- 28-30 e lode: l'elaborato finale dimostra un'ottima conoscenza del contenuti del corso e la capacità dello/a studente/ssa di padroneggiarli in maniera critica, con un occhio di riguardo sui costi computazionali dei diversi approcci possibili nell'ottimizzazione dell'implementazione di un algoritimo.
Studenti/esse con disabilità e/o DSA dovranno contattare con sufficiente anticipo rispetto alla data dell'esame il docente e il referente CInAP del DMI per comunicare che intendono sostenere l'esame fruendo delle opportune misure compensative.
Esempi di domande e/o esercizi frequenti
http://www.dmi.unict.it/~bilotta/gpgpu/esami/