Gpu computing

A.Y. 2020/2021
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
During the emergency phase, the course will be held online, if possible in synchronous way, using the Zoom platform. Lectures and practical classes will be recorded, stored on Ariel portal, and available for the entire semester.

the program and the material will not change with respect to the standard one.

The exam modality and the evaluation criteria will not change with respect to what indicated in the syllabus (ordinary modality).
The written exam will be held in presence or in a distance modality (according to the university guidelines) on the platform (for more details refer to the university portal)
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