- Docente: Davide Rossi
- Credits: 6
- SSD: ING-INF/01
- Language: English
- Moduli: Davide Rossi (Modulo 1) Francesco Conti (Modulo 2)
- Teaching Mode: Traditional lectures (Modulo 1) Traditional lectures (Modulo 2)
- Campus: Bologna
-
Corso:
Second cycle degree programme (LM) in
Electronic Engineering (cod. 0934)
Also valid for Second cycle degree programme (LM) in Electronic Engineering (cod. 0934)
Second cycle degree programme (LM) in Artificial Intelligence (cod. 9063)
-
from Sep 17, 2024 to Oct 29, 2024
-
from Nov 05, 2024 to Dec 20, 2024
Learning outcomes
The main goal of the class is to enable students to specify, configure, program and verify complex embedded electronic systems for the Internet of Things and for Artificial Intelligence. The importance of hardware-software interaction will be emphasized, as all practical IoT and AI systems are programmable. The class will provide working knowledge on state-of-the-art hardware platforms used in embedded AI and IoT applications - spanning a wide range of power and cost vs. performance tradeoffs. A detailed coverage will be given of software abstractions and methodologies for developing applications leveraging the capabilities of the above mentioned platforms. Design automation tools and flows will also be covered.
Course contents
-
Module 1 (for students of 93398 and 91259, by Prof. D. Rossi)
- 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
Module 2 (for students of 93398, by Prof. F. Conti)
- Representing data in Deep Neural Networks
- Recap of canonical DNN loops – a tensor-centric view
- Data quantization in Deep Neural Networks
- Brief notes on data pruning
- From training to software-based deployment
- High-performance embedded systems (NVIDIA Xavier, Huawei Ascend)
- Microcontroller-based systems (STM32)
- From software to hardware acceleration
- Principles of DNN acceleration: spatial and temporal data reuse; dataflow loop nests and taxonomy; data tiling
- The Neural Engine zoo: convolvers, matrix product accelerators, systolic arrays – examples from the state-of-the-art
Module 2 (for students of 91259, by Prof. G. Zavattaro)
Introduction to parallel programming.
Parallel programming patterns: embarassingly parallel, decomposition, master/worker, scan, reduce, ...
Shared-Memory programming with OpenMP.
OpenMP programming model: the “omp parallel” costruct, scoping costructs, other work-sharing costructs.
Some examples of applications. - From ML to DNNs - a computational perspective
Readings/Bibliography
Refer to virtuale
Teaching methods
Frontal Lectures for theory. In addition, both Module 1 and Module 2 will include hands-on sessions requiring a student laptop.
Assessment methods
Written exam with oral discussion
Teaching tools
Refer to Virtuale
Office hours
See the website of Davide Rossi
See the website of Francesco Conti