- Docente: Moreno Marzolla
- Crediti formativi: 6
- SSD: INF/01
- Lingua di insegnamento: Inglese
- Moduli: Moreno Marzolla (Modulo 1) Davide Rossi (Modulo 2)
- Modalità didattica: Convenzionale - Lezioni in presenza (Modulo 1) Convenzionale - Lezioni in presenza (Modulo 2)
- Campus: Bologna
- Corso: Laurea Magistrale in Artificial Intelligence (cod. 9063)
-
Orario delle lezioni (Modulo 1)
dal 16/09/2024 al 11/11/2024
-
Orario delle lezioni (Modulo 2)
dal 17/09/2024 al 29/10/2024
Conoscenze e abilità da conseguire
Al termine dell'attività formativa, lo studente ha una comprensione approfondita dei requisiti computazionali di workload dei metodi di machine learning. Lo studente conosce le principali architetture per accelerare tali workload, le principali architetture eterogenee per embedded machine learning, e le principali piattaforme in ambiente cloud per fornire supporto specifico ad applicazioni di machine/deep learning.
Contenuti
Modulo 1:
- Introduzione alla programmazione parallela.
- Pattern per la programmazione parallela: embarassingly parallel, decomposition, master/worker, scan, reduce, ...
- Programmazione di architetture a memoria condivisa con OpenMP.
- Il modello di programmazione OpenMP: il costrutto “omp parallel”, i costrutti di scoping, altri costrutti per la suddivisione del lavoro.
- Programmazione di GPU con CUDA.
Modulo 2:
- From ML to DNNs - a computational perspective
- Introduction to key computational kernels (dot-product, matrix multiply...)
- Inference vs training - workload analysis characterization
- The NN computational zoo: DNNs, CNNs, RNNs, GNNs, Attention-based Networks
- Running ML workloads on programmable processors
- recap of processor instruction set architecture (ISA) with focus on data processing
- improving processor ISAs for ML: RISC-V and ARM use cases
- fundamentals of parallel processor architecture and parallelization of ML workloads
- Algorithmic optimizations for ML
- Key bottlenecks taxonomy of optimization techniques
- Algorithmic techniques: Strassen, Winograd, FFT
- Topology optimization: efficient NN models - depthwise convolutions, inverse bottleneck, introduction to Neural Architectural Search
Testi/Bibliografia
Letture consigliate per il modulo 1:
An Introduction to Parallel Programming
Peter Pacheco,
Morgan Kaufmann, 2011, ISBN 9780123742605
https://shop.elsevier.com/books/an-introduction-to-parallel-programming/pacheco/978-0-12-374260-5
Nota: è stata pubblicata nel 2021 una versione aggiornata di questo libro, coautorata con Matthew Malensek.
CUDA C programming guide
NVidia Corporation
http://docs.nvidia.com/cuda/cuda-c-programming-guide/
Metodi didattici
Lezioni convenzionali per la parte di teoria.
I moduli prevedono attività pratiche da svolgere usando il proprio laptop.
Modalità di verifica e valutazione dell'apprendimento
Modulo 1: Progetto di programmazione accompagnato da una relazione scritta.
Strumenti a supporto della didattica
Proiettore per la parte di teoria.
Esercitazioni pratiche al pc.
Orario di ricevimento
Consulta il sito web di Moreno Marzolla
Consulta il sito web di Davide Rossi