Gpu Computing
A.Y. 2024/2025
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
- 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
Lesson period: Second semester
Assessment methods: Esame
Assessment result: voto verbalizzato in trentesimi
Single course
This course can be attended as a single course.
Course syllabus and organization
Single session
Responsible
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
- Parallel design patterns: graph algorithms, scan and sorting
- Accelerated Python libraries
- Neural networks development and the cuDNN library
- Application development on NVIDIA GPUs
- 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
- Parallel design patterns: graph algorithms, scan and sorting
- Accelerated Python libraries
- Neural networks development and the cuDNN library
- 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: http://gpu.di.unimi.it.
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)
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
Shifts:
Turno
Professor:
Grossi GiulianoProfessor(s)