Location:
This course will take place face-to-face at Room 4.20 Charteris Land, Edinburgh
This course will not be streamed online and a recording will not be made.
Overview
The OpenMP offload and OpenACC APIs support portable GPU programing using directives in Fortran, C and C++. This course will provide an introduction to GPU programming with directives, aimed at scientific application programmers wishing to develop their own software. The course will give a background on GPU architecture and programming API, and then focus on using OpenMP offload directives. The course will cover offloading code and data movement, as well as more advanced topics such as interoperability with HIP and performance tuning. We will also cover the similarities and differences between OpenMP and OpenACC.
Note that although the course will use AMD GPUs for practical exercises, it is also appropriate for those wishing to use NVIDIA or Intel GPUs.
Pre-requisite Programming Languages:
Attendees must be able to program in Fortran, C or C++ (course examples and exercises will limit themselves to Fortran and C). A familiarity with threaded programming models (especially OpenMP for CPUs) would be useful, but no previous knowledge of GPU programming is required.
Course attendees do not need GPU hardware, as access to ARCHER2 will be provided.
Requirements:
Participants must bring a laptop with a Mac, Linux, or Windows operating system (not a tablet, Chromebook, etc.) that they have administrative privileges on.
They are also required to abide by the ARCHER2 Code of Conduct.
Timetable:
Day 1 (Thursday 13 March)
- 09:00-10:00 Lectures: Overview, GPU programming APIs
- 10:00-11:00 Lecture: GPU Architecture
- 11:00-11:30 Break
- 11:30-12:00 Lecture: Introduction to OpenMP
- 12:30-13:30 Lunch
- 13:30-14:15 Practical
- 14:15-15:15 Lecture: Introduction to OpenMP - data movement
- 15:15 -15:45 Break
- 15:45-17:00Practical
- 17:00 Close
Day 2 (Friday 14 March)
- 09:00-10:00 Lecture: Advanced Topics
- 10:00-11:00 Practical
- 11:00-11:30 Break
- 11:30-12:30 Lecture: Performance
- 12:30-13:30 Lunch
- 13:30-14:15 Practical
- 14:15-15:00 Lecture: OpenACC
- 15:00-15:30 Break
- 15:30-16:00 Practical/ wrap up