Lecture and Exercises (LSF)
- Prof. Dr. Robert Strzodka
- Tuesday, 9:15 - 11:00, 11:00 - 12:45
- 4 SWS and 6 ECTS
- Heidelberg, INF 350 / OMZ R U014
- Start 24.04.2018
- Overview of programming paradigms for accelerators
- High level accelerator programming
- Effective use of STL-like algorithm libraries
- Multi-backend programming for different architectures
- Libraries for dense and sparse linear algebra
- Specialized libraries
- Simultaneous use of multiple accelerators
In the first half we will learn the elegant and efficient use of thrust, a parallel STL library for both CPUs and GPUs. Thrust allows to write programs on a high-level with STL algorithms and without hardware specific details, which are hidden inside the backends of the library. In this way, the same code can be compiled and executed efficiently on CPUs and GPUs. The thrust algorithms and backends have been continuously improved, so that the same code can automatically take advantage of new CPU and GPU devices (multi-backend functionality).
Beyond the standard STL algorithms we will also cover elegant interaction with C++11 and advanced functionality such as manual dispatch, nesting of thrust functions, mixing of backends, asynchronicity, multi-GPU usage, and interaction with other libraries.
In the second half we will study the functionality of essential computational libraries: cuBLAS, cuFFT, cuSPARSE, cuSOLVER, AmgX. With this knowledge we can accelerate many computational problems with simple and efficient library calls, rather than having to reproduce the functionality with direct CUDA programming. Time permitting, we will also look at some of the more specialized libraries: cuRAND, CHOLMOD, NPP, cuDNN, NVBIO.
In the first weeks there will be regular exercises and mid-term each exercise group will choose a larger scientific project for acceleration. The results will be presented by the students in the last lecture. For the exercises and the projects we will provide access to high performance GPUs with the newest functionality.