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.
[ 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.
[ 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)
[ 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
[ 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)
[ 21 mar 2024 ] modello di esecuzione CUDA, streaming multiprocessor, warp e loro gestione, divergenza nei warp, sincronizzazione di thread, parallel reduction, operazioni atomiche
[ 21 mar 2024 ] divergenza, parallel reduction, istogramma di un'immagine e operazioni atomiche, prodotto MQDB parallelo
Esercitazione: Lab3 (github)
[ 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
[ 4 apr 2024 ] esercitazione su parallel reduction, prodotto di matrici e di convoluzione
Esercitazione: Lab4 (github)
[ 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
[ 11 apr 2024 ] esercitazione su unrolling e parallelismo dinamico
Esercitazione: Lab5 (github)
[ 18 apr 2024 ] La global memory, pinned & unified memory, Memory bandwidth, coalescenza e pattern di accesso alla global memory
[ 18 apr 2024 ] esercitazione su uso della memoria, strutture e matrice trasposta
Esercitazione: Lab6 (github)
[ 2 mag 2024 ] Gradi di concorrenza in CUDA, CUDA stream: creazione, uso e sincronizzazione, uso tipico: sovrapporre trasferimento dati ed esecuzione kernel, scheduling di eventi e Hyper Q, CUDA eventi: creazione, uso e sincronizzazione, misura del tempo mediante eventi
[ 2 mag 2024 ] esercitazione su stream ed eventi in tabular e prodotti MQDB
Esercitazione: Lab7 (github)
[ 9 mag 2024 ] Librerie CUDA, cuBLAS per calcoli di algebra lineare, cuRAND per la generazione di dati random, cuFFT per il calcolo veloce della trasformata di Fourier
[ 9 mag 2024 ] esercitazione su librerie CUDA
Esercitazione: Lab8 (github)
[ 16 mag 2024 ] misure di complessità negli algoritmi paralleli, Parallel patterns: algoritmi su grafi e sorting, algoritmo parallelo Breadth-First Search (BFS), algoritmo algoritmo greedy parallelo Luby per Graph Coloring (GC), grafo del WEB con pagerank
[ 16 mag 2024 ] esercitazione su algoritmi su grafi.
Esercitazione: Lab9 (github)
[ 23 mag 2024 ] Parallel patterns: aperazioni scan, prefix sum, algoritmi di sorting QuickSort, mergeSort e bitonicSort
[ 23 mag 2024 ] esercitazione su algoritmi di sorting
Esercitazione: Lab10 (github)
[ 30 mag 2024 ] Linear neural networks, Multilayer perceptron, Implementazione CUDA e python, Kernel python con Numba e Cupy con moltiplicazione matrici, istogramma, MQDB
[ 30 mag 2024 ] esercitazione su NN CUDA e python
Esercitazione: Lab11 (github)