Parallel programming on GPU architecture
Academic Year 2024/2025 - Teacher: GIUSEPPE BILOTTAExpected Learning Outcomes
Knowledge and understanding: acquire the fundamentals of massively parallel computing on modern hardware (GPU, multicore CPU, accelerators) based on the stream computing paradigm.
Applying knowledge and understanding: acquire the competence to apply the knowledge to the development of parallel computing software using the main frameworks (CUDA and OpenCL).
Making judgements: acquire che capacity to identify fundamental coding paradigms (embarrasingly parallel problems, reductions, scans) and the corresponding opportunities to paralelize them.
Communication skills: acquire che capacity to describe with proper language both the theoretical and practical aspects of parallel computing on modern architectures.
Learning skills: develop the ability to understand specialized texts on the topic.
Course Structure
The course is composed of both active and practical lectures, with real-time development of sample code for each topic discussed, to provide the students with the necessary familiarity with both the theoretical and practical aspects of the material. Lectures may be held using mixed or remote techniques if required by circumstances.
Required Prerequisites
Detailed Course Content
- History of graphic cards and GPGPU
- GPGPU programming basics; introduction to CUDA and OpenCL
- embarrassingly parallel programs in CUDA and OpenCL
- Benchmarking, optimization and debugging
- parallel primitives for reductions and scans; implementation in OpenCL and/or CUDA
- multi-GPU essentials
Textbook Information
NVIDIA CUDA Programming Guide
OpenCL specification
Course Planning
Subjects | Text References | |
---|---|---|
1 | Concetti generali della programmazione GPU | NVIDIA CUDA Programming Guide |
2 | Aspetti tecnici della programmazione OpenCL | OpenCL specification |