Introduction to OpenACC Programming Model¶
Participants from this course will learn GPU programming using the OpenACC programming model, such as compute constructs, loop constructs and data clauses. Furthermore, understanding the GPU architecture and how parallel threads blocks are created and used to parallelise the computational task. Moreover, GPU is an accelerator; hence, there must be a good understanding of memory management between the GPU and CPU, which will also be discussed in detail. Finally, participants will also learn to use the OpenACC programming model to accelerate linear algebra (routines) and iterative solvers on the GPU. Participants will learn theories first and implement the OpenACC programming model with mentors’ guidance later in the hands-on tutorial part.
Prerequisites
Good working knowledge of C/C++ and/or FORTRAN is needed.
No GPU programming knowledge is required; however, knowing the OpenMP programming model is advantageous.
Software setup
Learning outcomes
After this course, participants will be able to:
Understanding the GPU architecture (and also the difference between GPU and CPU)
Streaming architecture
Threads blocks
Implement the OpenACC programming model
Compute constructs
Loop constructs
Data clauses
Efficient handling of memory management
Host to Device
Unified memory
Apply the OpenACC programming knowledge to accelerate examples from science and engineering:
Iterative solvers from science and engineering
Vector multiplication, vector addition, etc.