Lezione 1

[ 7 mar 2024 ] Introduzione al corso, introduzione al concetto GP-GPU, uso delle GPU in contesti HPC, parallelismo dei dati e dei task, sistemi paralleli e tassonomia di Flynn, il modello SIMT, la piattaforma CUDA.

Lab 1

[ 7 mar 2024 ] Allocazione dinamica in C, prodotto di matrici diagonali a blocchi. HelloWorldGPU: primo programma CUDA, somma di vettori in CUDA.


Esercitazione: Lab1 (github)

Lezione 2

[ 14 mar 2024 ] programmazione multithreading, sistemi di calcolo paralleli, processi e thread, pthread in unix, modello di programmazione parallela CUDA, organizzazione gerarchica dei thread, esecuzioni di kernel, uso basilare della memoria


Lab 2

[ 14 mar 2024 ] gerarchia di thread in CUDA, grid, block e thread ID, somma di vettori 1D e matrici 2D, flipping di immagini con pthread e CUDA


Esercitazione: Lab2 (github)

Lezione 3

[ 21 mar 2024 ] modello di esecuzione CUDA, streaming multiprocessor, warp e loro gestione, divergenza nei warp, sincronizzazione di thread, parallel reduction, operazioni atomiche


Lab 3

[ 21 mar 2024 ] divergenza, parallel reduction, istogramma di un'immagine e operazioni atomiche, prodotto MQDB parallelo


Esercitazione: Lab3 (github)

Lezione 4

[ 4 apr 2024 ] Il modello di memoria CUDA, tipi di memoria: registri, shared memory, local memory, constant memory, texture memory e global memory, la shared memory: uso e patter di accesso, allocazione statica e dinamica di shared memory


Lab 4

[ 4 apr 2024 ] esercitazione su parallel reduction, prodotto di matrici e di convoluzione


Esercitazione: Lab4 (github)

Lezione 5

[ 11 apr 2024 ] unrolling, HW overview CPU/GPU, elementi base dell’architettura GPU, le famiglie di GPU e l’evoluzione delle (micro)architetture, prestazioni legate alle risorse architetturali, profiling, unrolling, parallelismo dinamico


Lab 5

[ 11 apr 2024 ] esercitazione su unrolling e parallelismo dinamico


Esercitazione: Lab5 (github)

Lezione 6

[ 18 apr 2024 ] La global memory, pinned & unified memory, Memory bandwidth, coalescenza e pattern di accesso alla global memory


Lab 6

[ 18 apr 2024 ] esercitazione su uso della memoria, strutture e matrice trasposta


Esercitazione: Lab6 (github)