Day 1 – Workshop Phase I
Day 2 – Workshop Phase II
Day 3 – Contest Finals
Details about the Workshop
This is a 2 day workshop for programmers who want to learn how to program and utilize the parallel computing power of the Graphics Processing Unit (GPU) using NVIDIA’s CUDA programming framework.
1. The attendees will need to have some basic C or C++ knowledge, but no prior knowledge of parallel computing concepts is necessary.
2. It will be fine if people bring a laptop with CUDA Enabled Graphics Card with Visual Studio 2008 preinstalled.
3. The course will be held in English.
What Will I Learn?
By the end of this workshop you will have built a number of CUDA enabled applications and have an understanding of the CUDA programming methodology to apply to and solve your own problems.
Introduction & Setup
The course will start by introducing the concepts of general purpose GPU programming and go into the process of installing and setting up the development environment on the system. We will also talk about the different language bindings for languages like Java, Python and Ruby.
CUDA Basic Concepts
Then we will give a hands on introduction to CUDA, introducing the concepts of threads and blocks to learn the fundamental way that CUDA exposes parallelism.
Hardware & Memory
The main gist of the course will involve learning the concepts of CUDA memory management together with the hardware capability of the GPU we are developing on. This will lead us into learning about the different types of GPU memories available to the programmer and it’s optimal utilization.
We will go into the various concepts of GPU kernel optimization to get the most out of the hardware we are planning to write code for.
This will lead us to talk about different external libraries both 3rd party as well as those provided by NVIDIA which provide optimized algorithms running on the GPU, for applications ranging from Finance to Medical Imaging.
Future (If time available)
Finally, we will talk about the future of GPU computing, in particular the new features in CUDA 5.x and GPUs on the cloud. We will also give an introduction to OpenCL, since many of the concepts from this course will carry over to OpenCL. We will talk about the advantages and disadvantages of OpenCL here as well.
Basic Programming – Hands on
Once we are familiar with the core concepts, we will have a hands on programming with CUDA Enabled machines.
The problem statement will be given during Pragyan and will be based on the topics covered in the workshop.