This intensive-course will be held in three blocks. It is limited to 15 participants (first-come, first-served).
The possibilities of parallel programming on modern GPUs (graphics processing units) can greatly improve the performance of tasks in the field of visual computing (i.e., computer graphics and computer vision). Participants will learn concepts, methodologies and usage of GPU architectures to implement efficient algorithms in OpenGL/GLSL and CUDA/OpenCL. After this course, students will be able to apply common graphics boards to develop their own performance-optimized applications that run partially or fully accelerated on the GPU.
Several techniques are explained in detail, including a hands-on training as well as exercises in which the students are encouraged to come up with the most efficient implementation of common problems in the fields of visual computing.
In particular, the following topics will be discussed in this course: Introduction into OpenGL, GLSL, CUDA and OpenCL, efficient usage of texture up- and downloads as well as data management, dependent texture lookups, occlusion queries, texture arrays, blending techniques, performance optimizations, optimized caching and alignment, frame- and pixelbuffer objects, specialized geometry shader techniques, effective multi-pass methods, parallel architectures and algorithms, image processing optimizations with examples such as convolution, deconvolution, image statistics, histogram calculations, GPU accelerated CAMShift tracking, etc.
Prior knowledge in OpenGL or CUDA is not required. The presented advanced topics will also be valuable to students GPU-programming experiences.