GPU Programming CourseProf. Thomas Brox
In the last couple of years, graphics processors (GPUs) have developed to flexible processing units that can be used for general purpose computing. The highly parallel architecture of todays GPUs often outperforms traditional CPUs for many problems. This is especially true for image processing, where the same task is supposed to be done for each pixel. This allows for making good use of many parallel units.
The goal of this course is to learn how to program GPUs using the CUDA framework. While implementations in CUDA (an extension of C/C++) are not much harder than CPU implementations, the hard part is to make good use of the parallel units and the memory to obtain fast implementations. We will study a number of image processing problems starting with basic ones and then increasing complexity.
In the last part of the course, each student should implement their own small project. You can freely choose the project topic. We will offer some good options.