Dominik Göddeke -- GPGPU Tutorials

GPGPU, CUDA and OpenCL Tutorial Presentations

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