Lezione 1

[ 15 mar 2018 ] Introduzione al corso. introduzione al concetto GP-GPU, uso delle GPU in contesti HPC, sistemi paralleli e tassonomia di Flynn, esercitazione su allocazione dinamica in C, prodotto di matrici diagonali a blocco


Lezione 2

[ 21 mar 2018 ] modelli di sistemi di paralelli, processi e thread, elementi architetturali e di programmazione parallela di CUDA, organizzazione gerarchica dei thread, esecuzioni di kernel, uso della memoria, esercitazione su grid, block, thread ID e somma vettori 1D e matrici 2D


Lezione 3

[ 5 apr 2018 ] modello di esecuzione CUDA, elementi architettura GPU: streaming multiprocessor, warp e loro gestione, architetture fermi e kepler, esercitazione su query del device e prodotto matriciale 2D


Lezione 4

[ 12 apr 2018 ]warp divergence, limiti imposti dalle risorse hw su registri e shared memory, sincronizzazione di thread, parallel reduction, operazioni atomiche, esercitazione su divergenza e parallel reduction


Lezione 5

[ 19 apr 2018 ]gerarchia di memorie CUDA, tipi di memorie programmabili e loro caratteristiche in CUDA, pattern di accesso alla global memory, accessi allineati e coalescenti, esercitazioni su strutture ed array e trasposizione di matrice


Lezione 6

[ 26 apr 2018 ]Memoria shared, uso come cache programmbile, pattern di accesso: bank e conflitti, allocazione statica e dinamica, constant memory, esercitazioni su uso della shared memory con trasposizione, prodotto e convoluzione di matrici


Lezione 7

[ 3 mag 2018 ]Strean ed eventi, uso in pratica e aspetti di scheduling, misura del tempo mediante eventi, sincronizzazione tra stream nullo e stream non nulli, aspetti di concorrenza, esercitazione su tabulazione funzione trigonometrica e matrici diagonali a blochhi con uso di stream