GPU Programming Basics - PhD course
This course is offered to PhD students of the Smart Computing program and of the "Ingegneria dell'Informazione" program. Lectures are delivered in English.
Novità
- 25 Gennaio 2018: Aggiornamento registro lezioni a.a. 2017-2018, aggiunta materiale per esercitaizone.
- 10 Gennaio 2018: aggiornamento di tutti i lucidi. Creazione nuovo registro lezioni a.a. 2017-2018.
- 26 Gennaio 2017: aggiornamento registro lezioni; aggiunto esercizio su convoluzione 2D di immagini e piccoli aggiornamenti di lucidi.
- 25 Gennaio 2017: aggiornamento registro lezioni; primo esercizio di programmazione.
- 24 Gennaio 2017: creazione pagina web e registro lezioni e laboratorio.
Orario e aule - Ricevimento - Annunci su lezioni
Inizio lezioni 2018: 10 Gennaio 2017. Termine lezioni: 26 Gennaio 2018.
- Gennaio 10, 18, 19: ore 10:00-13:00 aula 108; Gennaio 25: ore 10:00-13:00 aula 115
- Gennaio 26: 09.30 - 13.15 Laboratorio Ex-forno S. Marta.
- Sito web dell'orario.
- Registro lezioni 2018: riporta l'argomento di ogni lezione, i riferimenti ai lucidi usati ed ai programmi delle esercitazioni.
Vacanze: -
Ricevimento: Lunedì dalle 17:00 alle 19:00 presso l'ufficio a S. Marta - fissare comunque l'appuntamento per email: marco.bertini@unifi.it
Assenze:
Date esame
L'esame, per gli studenti che ne hanno bisogno ai fini del riconsocimento dei crediti, consiste in un esercizio di programmazione assegnato l'ultimo giorno. Il risultato deve essere inviato per mail entro due settimane.
Lucidi lezioni e materiale collegato
I collegamenti sono generalmente fatti a materiale scritto in inglese, a meno di diversa indicazione. I lucidi sono in formato PDF.
Il programma fatto durante le lezioni è riportato nella pagina web: Registro lezioni 2018.
Lucidi e materiale 2017
- GPU CUDA 1: GPU architecture - comparison w.r.t CPU architecture - SIMT - NVIDIA GPU families - What is CUDA - Hello World in CUDA - CUDA Memory organization: introduction - Threads organization and setup - Exercises: - summing vectors - matrix multiplication.
Read "Programming Massively Parallel Processors: A Hands-on Approach - 3rd edition", D. B. Kirk and W-M. W. Hwu, Morgan Kaufman - Chapt. 1-2 - GPU CUDA 2: Grids, blocks and threads - thread scheduling - Warps - Threads and divergence - Good practices in blocks and threads organization - 2D CUDA kernels - 3D CUDA kernels - CUDA memory hierarchy - shared, device and constant memory - Pinned memory - Unified memory
Read "Programming Massively Parallel Processors: A Hands-on Approach - 3rd edition" D. B. Kirk and W-M. W. Hwu, Morgan Kaufman - Chapt. 3-4 - GPU CUDA 3: Efficient CUDA programming - tiling: introduction - tiling: how to - synchronization barriers - phase-based processing - shared memory and threading - border checking
Read "Programming Massively Parallel Processors: A Hands-on Approach - 3rd edition" D. B. Kirk and W-M. W. Hwu, Morgan Kaufman - Chapt. 3-5 - GPU CUDA 4: Performance considerations - DRAM burst - coalescing - divergence
Read "Programming Massively Parallel Processors: A Hands-on Approach," D. B. Kirk and W-M. W. Hwu, Morgan Kaufman - Chapt. 4-5 - GPU CUDA 5: atomic instructions - privatization - lock and warps - exercises: - histogram computation - 1D convolution - how to use constant memory - tiling - 2D convolution - tiling - Tiling performance evaluation - parallel patterns: map/gather/scatter/reduction
Read "Programming Massively Parallel Processors: A Hands-on Approach - 3rd edition" D. B. Kirk and W-M. W. Hwu, Morgan Kaufman - Chapt. 4, 7 and 8 - GPU CUDA 6: Lab activity: 2D convolution for image filtering - handling 2D borders - using constant memory for convolution weights - conditions for tiling and computation
Read "Programming Massively Parallel Processors: A Hands-on Approach - 3rd edition" D. B. Kirk and W-M. W. Hwu, Morgan Kaufman - Chapt. 7 - GPU CUDA libraries: Thrust, CuBLAS, C++
Read "Programming Massively Parallel Processors: A Hands-on Approach - 3rd edition" D. B. Kirk and W-M. W. Hwu, Morgan Kaufman - Appendix B
Lucidi e materiale anni precedenti:
- Consultare il registro lezioni 2017
Modalità di svolgimento dell'esame
L'esame si compone di una prova di programmazione.
Link utili
CUDA SDK: SDK per la programmazione di GPU con CUDA
Ambienti di sviluppo/compilatori consigliati
Per lo sviluppo con CUDA è consigliato l'uso di NVIDIA Nsight che รจ basato su Eclipse. Nsight è disponibile anche come plugin per Visual Studio.
Libri di testo
D.B. Kirk, W.-m. W. Hwu, "Programming Massively Parallel Processors: A Hands-on Approach", Morgan Kaufmann, 2016
Libri consigliati
J. Cheng, M. Grossman, T. McKercher, “Professional Cuda C Programming”, Wrox, 2014