Part 1: Introduction, Basic programming
- introduction to CUDA and the device architecture of GPGPU
- the programming of GPGPU devices
- performance optimization and application examples.
Part 2: Scientific Programming
- libraries for the development of parallel numeric algorithms
- parallelization of numerical algorithms.
Assignments:
Part 1: One smaller and one larger programming project combined with questions to explain the used technology
Part 2: One programming project combined with questions to explain the used approach.
The overall goal of the course is to give basic knowledge of the theory, hardware, and software approaches to parallel computing with GPGPU. Especially, hardware and software challenges plus the interactions between them, as well as exposure to research challenges in this field will be emphasized.
The course consists of two parts. Part 1 (4,5 hp) provides the introduction to the field, a detailed look at the device architecture, the basic programming considerations plus the presentation of possibilities to do performance optimizations. Part 2 (3,0 hp) introduces the software tools for the development of numerical appllications and examples of algorithms from the field of scientific coomputing.
After the course you will be able to:
- understand the properties of GPGPU devices
- reason about the performance of programs running on it
- assess the potential and limitations of using a GPGPU
- write parallel programs for GPGPU.