Introduction to Programming on the GPU with CUDA organized for Researchers and Students (PhD, MSc) April 12 & 13, 2018

  • When Apr 12, 2018 09:15 AM to Apr 13, 2018 05:00 PM (Europe/Amsterdam / UTC200)
  • Contact Name
  • Web Visit external website
  • Add event to calendar iCal

The Graphics Processing Unit or GPU is nowadays a mainstream component in Scientific Computing. For relatively little money one can have supercomputer performance. However, some extra work has to be done to make an ordinary sequential program suitable for use on the GPU.
One of the most important tools for using GPUs is currently "CUDA" (Compute Unified Device Architecture). This is basically an extension to the C programming language, which can be used to program the GPU in an easy way. Another tool is OpenCL, but this is less mature than CUDA and performs less on especially the newest GPUs, the focus will be currently on CUDA.


Course goal: In this 2-day course we will explain the basic principles of GPU programming and let you practise with many examples on several types of GPUs in our lab room. After this course you should be able to make simple CUDA programs which can be run on a GPU.


Preliminaries: We recommend having a (rudimentary) understanding of a C-like programming language, such as C++, Java or similar. Fortran or Python should be fine as well. Interest in iterative solvers can be helpful.


Teachers: Kees Vuik, Ir. Kees Lemmens and Dr. Matthias Möller.


Costs: For members of DCSE this course is free, TU Delft staff and students pay € 50,- for a single day and €100,- for the full 2 days course. For other participants the costs are resp. € 200,- for 1 day and €350,- for 2 days. This is mainly to cover expenses for the lunch and the course material.


Location: EEMCS building, Penguin Lab (E0.380), van Mourik Broekmanweg 6, Delft.



Schedule Day 1:
09:15 - 09:30 Arrival, coffee, tea
09:30 - 10:30 Parallel computing on GPU’s C. Vuik
10:45 - 11:30 GPU’s design and architecture Ir. C.W.J. Lemmens
11:45 - 12:30 Lab 1: CUDA introduction Ir. C.W.J. Lemmens
12:45 - 13:30 Lunch
13:30 - 14:45 Lab 2: Using CuBlas, CuFFT Ir. C.W.J. Lemmens
15:00 - 17:00 Lab 3: Debugging and Profiling Ir. C.W.J. Lemmens


Schedule Day 2:
09:15 - 09:30 Arrival, coffee, tea
09:30 - 10:30 Solvers C. Vuik
10:45 - 11:30 Lab 4: Shared memory, streams, atomics Ir. C.W.J. Lemmens
11:45 - 12:30 Lab 5: Optimising code: Innerproduct Ir. C.W.J. Lemmens
12:45 - 13:30 Lunch
13:30 - 14:45 Lab 6: Unified memory, Dynamic Parallelism Ir. C.W.J. Lemmens
15:00 - 16:30 Applications on GPU Dr. Matthias Möller
16:30 - 17:00 Lab 7: Applications on GPU Dr. Matthias Möller


Notes: The number of participants is restricted to 20. This course is given roughly every quarter.

Register: In order to attend this course please register at


More info:
Email contact: or