GPGPU, CUDA and OpenCL Tutorial Presentations
- PPAM 2009, Wroclaw, Poland: full day tutorial on OpenCL and Scientific Computing on GPUs, together with Dominik Behr and Robert Strzodka (September 2009)
- SPEEDUP 2009, EPF Lausanne, Switzerland: full-day tutorial on GPU Computing with NVIDIA CUDA, together with Robert Strzodka and Christian Sigg (September 2009)
- GPU Computing with NVIDIA CUDA: half-day tutorials at the University of Freiburg / Jedox AG (May 2009) and for the Sonderforschungsbereich 708 (Dortmund, June 2009)
- ARCS 2008, Dresden, Germany: full day tutorial on GPU Computing with NVIDIA CUDA, together with Simon Green and Robert Strzodka (January 2008)
- ICCS 2006, Reading, UK: half-day tutorial on GPU Computing with OpenGL, together with Robert Strzodka (May 2006)
GPGPU Coding Tutorials
I have assembled some tutorials on GPGPU linear algebra programming. What makes these tutorials different from the official GPGPU Hello World is that they don't even open up a window for display, it's all about offscreen co-processor style computing.
The GPGPU Basic Math Tutorial is targeting complete beginners in GPU programming. All basic concepts and the programming paradigm are covered. Fully working code samples for the various ways to implement GPGPU codes based on OpenGL are provided. A modest background knowledge of the graphics pipeline and of OpenGL is however useful. The prerequisites section of the tutorial links to other tutorials about these topics. I consider this tutorial essential for anyone starting out in GPGPU.
The GPGPU Reduction Tutorial extends the concepts introduced in my basic tutorial to reduction-type operations such as maximum/minimum, norms and dot product of various vectors represented as textures on the GPU.
The GPGPU Fast Transfers Tutorial demonstrates how pixel-buffer-objects, an extension to OpenGL, can be used to increase the speed of transfers to and from the graphics card.
The MRT tutorial demonstrates how to output to several arrays in one shader pass on the GPU. This tutorial is currently only available as well-commented source code: Cg version, GLSL version.
Outdated, unsupported tutorials
My first tutorial ever, the GPGPU Ping Pong Tutorial is still available. In contrast to the Basic Math Tutorial, it is based on an outdated OpenGL technique called pBuffers and contains less details. PDF sources using Cg as shader language sources using GLSL as shader language
The GPGPU Performance Tuning Tutorial outlines several steps to increase the performance of a Jacobi iteration (usually to be used as a smoother in Multigrid) for banded FEM matrices. The application and especially the tricks presented are however completely independent of the FEM background. The implementation is based on pBuffers and therefore pretty outdated, but the tricks presented are still valid. PDF sources for the first data layout sources for the second data layout