Accelerator Libraries


Lecture and Exercises (LSF)

  • Prof. Dr. Robert Strzodka
  • Tuesday, 9:15 - 11:00, 11:00 - 12:45
  • 4 SWS and 6 ECTS
  • Mannheim, MA B6,26 / B4.01
  • Start 25.04.2017


  • Overview of accelerator programming
  • General STL-like libraries
  • Libraries for dense linear algebra
  • Libraries for sparse linear algebra
  • Specialized libraries
  • Libraries on clusters of accelerators

In the first half we will learn 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.

Beyond the basic 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 and 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.