This is an old revision of the document!
ViennaCL has three computing backends: One based on CUDA, one based on OpenCL, and one based on OpenMP. While the CUDA and OpenCL backends provide high performance, this is not yet the case with the OpenMP backend. Although the OpenMP-backend was initially introduced as a fall-back mechanism for CPU-only systems, it is now mature enough to be tuned for high performance. The student will tune the individual linear algebra kernels (vector operations, matrix-vector products, etc.) for best performance.
Squeezing the last bit of performance out of recent hardware is a lot of fun. Also, the student will learn a lot about how multi-core CPUs really work and the many tricks needed to get good performance.
Certain algorithms cannot be implemented efficiently on CPUs with only OpenCL, so having an efficient OpenMP compute backend available will be an enabler for many high-performance implementations both within ViennaCL and derived by our users.
Moderate C or C++ skills are required. Experience in using OpenMP is a plus.
Karl Rupp, TBD