- Docente: Stefano Mattoccia
- Credits: 8
- SSD: ING-INF/05
- Language: Italian
- Moduli: Stefano Mattoccia (Modulo 1) Fabio Tosi (Modulo 2)
- Teaching Mode: Traditional lectures (Modulo 1) Traditional lectures (Modulo 2)
- Campus: Bologna
- Corso: Second cycle degree programme (LM) in Computer Engineering (cod. 6719)
-
from Sep 19, 2025 to Dec 19, 2025
-
from Sep 17, 2025 to Dec 17, 2025
Learning outcomes
At the end of the course, the student acquires advanced skills in the field of accelerated computing and modern systems for high-performance computing (HPC). In particular, he/she develops an in-depth knowledge of the available acceleration technologies, from SIMD extensions to modern GPU architectures and emerging frameworks for heterogeneous computing, developing the ability to optimize computational problems through the appropriate choice of algorithmic patterns, numerical formats and computation decomposition strategies. The student masters the programming tools for acceleration on CPUs and through CUDA for GPUs, acquiring an advanced understanding of execution models and optimization techniques specific to each platform. These skills allow to develop computationally efficient solutions in cutting-edge fields such as artificial intelligence, big data processing and high-performance scientific computing.
Course contents
Architectures and programming models for high-performance computing with a focus on computer vision and artifical intelligence.
1: Introduction to high-performance computing
-
Parallel computing principles
-
Architectures for high-performance computing: CPU multi-core, GPU, sistemi embedded
2: SIMD and Multi-threading (Module 1)
-
Introduction to SIMD
-
Multi-threading principles
3: GPU and CUDA C Programming (Module 2)
-
CUDA Programming Model
-
GPU Architectures and CUDA Execution Model
-
GPU Memory Hierarchy and Organization
-
CUDA Ecosystem: Libraries and Applications
4: Dealing with real numbers: encoding and computations (Module 1)
-
Floating point
-
Fixed point
5: Emerging technologies (Module 1)
-
FPGA (Field Programmable Gate Array)
Readings/Bibliography
Slides and source code availablein Virtuale.
For further details:
Cheng, J., Grossman, M., McKercher, T. (2014). Professional CUDA C Programming. Wrox Pr Inc. (1st edition)
Kirk, D. B., Hwu, W. W. (2013). Programming Massively Parallel Processors. Morgan Kaufmann (3rd edition)
Timothy G. Mattson, Yun (Helen) He, Alice E. Koniges, The OpenMP Common Core: Making OpenMP Simple Again, MIT Press, 2019
Jean-Michel Muller , Nicolas Brunie , Florent de Dinechin , Claude-Pierre Jeannerod , Mioara Joldes , Vincent Lefèvre , Guillaume Melquiond , Nathalie Revol , Serge Torre, Handbook of Floating-Point Arithmetic, Springer Birkhäuser 2018
Jean-Michel Muller, Elementary Functions: Algorithms and Implementation, Springer Birkhäuser 2016
Teaching methods
Each ntroduced topic will be followed by hand-on senssions with software frameworks.
Assessment methods
The assessment method consists in questions concerning topics presented in the course and in the evaluation of a project developed by studends (max 2 for each team).
Teaching tools
Software development frameworks.
Office hours
See the website of Stefano Mattoccia
See the website of Fabio Tosi