Gpu Computing

A.Y. 2021/2022
Overall hours
Learning objectives
This course mainly focuses on parallel programming techniques and parallel pattern design aiming at developing applications on many-core architectures, such as the GPU (Graphics Processing Units) devices, widely used in high performance computing.
Expected learning outcomes
Students will be able to develop and deploy applications on CPU-GPU hybrid systems, which means to be skilled at:
- structuring the logic design in order to identify subtasks than can be actually parallelized
- analyzing in a critical way the hw resources required by the different levels of concurrency
- understanding the performance evaluation and optimization process
Course syllabus and organization

Single session

Lesson period
Second semester
Course syllabus
- Introduction to heterogeneous system architecture based on CPU and GPU
- The general purpose GPU programming (GPGPU) concept
- Parallel architecture
- The CUDA programming model
- The CUDA execution model
- The CUDA memory model
- Stream, concurrency and performance optimization
- GPU-accelerated CUDA libraries
- Multi-GPU programming
- Parallel design patterns
- Application development on NVIDIA GPUs
Prerequisites for admission
Good programming practice and basic knowledge of the ANSI C language.
Teaching methods
The course consists of lectures and practical classes based on CUDA C programming.
Teaching Resources
The lecture slides, the suggested books and the technical documents are available on the course page:
Assessment methods and Criteria
The examination consists of two parts:
1. a written test based on the lecture subjects (70% of final grade)
2. a project based on the CUDA C programming language (30% of final grade)
INF/01 - INFORMATICS - University credits: 6
Lessons: 48 hours
Professor: Grossi Giuliano
Educational website(s)
By email appointment
Room 4016, 4th Floor, via Celoria 18