Programming Your GPU with OpenMP
This is a hands-on tutorial that introduces the basics of targetting GPUs with OpenMP 4.5 through a series of worked examples.
Starting with serial code, the tutorial takes you thorugh parallellising, exploring the performance characteristics, and optimising the following small programs:
vadd
โ A simple vector addition program, often considered the "hello world" of GPU programming.pi
โ A numerical integration program that calculates and approximate value of ฯ.jac_solv
โ A Jacobi solver.heat
- An explicit finite difference 5-point stencil code.
Usage
To build all the examples:
make
To run, submit jobs using your training account:
qsub submit_vadd # For vector add
qsub submit_pi # For pi
qsub submit_jac_solv #ย For Jacobi
qsub submit_heat # For heat
Publication history
Versions of this tutorial have been presented at SC'17, SC'18, SC'19, and virtually at SC'20 and SC'21. A version of this tutorial was presented UK OpenMP Users' Conference in 2018 and 2019.