GPU program


Objective

This course provides a simple and efficient introduction to simulation on graphics cards, or GPUs (Graphics Processing Units).  
It is structured around Monte Carlo simulation, which is strongly adapted to parallelization. It allows to focus on the optimizations allowed by the GPU architecture.

At the end of this course, students should be able to program and optimize a CUDA/C code on GPU during a project.

Prerequisites: C++

 

Planning

  • Session 1 (3h) : First Monte Carlo simulation program on GPU.
  • Session 2 (3h) : Introduction to GPU memory : Registers, shared, global & Unified.
  • Session 3 (3h) : Communication between threads and between lanes, asynchronism and concurrency.
  • Session 4 (3h) : Best Monte Carlo simulation program on GPU.

Références

  • CUDA C Programming Guide, Nvidia, 2017
  • Jason Sanders & Edward Kandrot,  CUDA by Example: An Introduction to General-Purpose GPU Programming, Addison Wesley, 2010
  • Shane Cook, CUDA Programming: A Developer's Guide to Parallel Computing with GPUs, Morgan Kaufmann, 2012