Thank you for sending your enquiry! One of our team members will contact you shortly.
Thank you for sending your booking! One of our team members will contact you shortly.
Course Outline
Introduction
- What is OpenACC?
- OpenACC versus OpenCL, CUDA, and SYCL
- Overview of OpenACC features and architecture
- Setting up the development environment
Getting Started
- Creating an OpenACC project in Visual Studio Code
- Exploring project structure and files
- Compiling and running the program
- Displaying output using printf and fprintf
OpenACC Directives and Clauses
- Understanding OpenACC directives and clauses
- Using parallel directives to create parallel regions
- Using kernels directives for compiler-managed parallelism
- Using loop directives to parallelise loops
- Managing data movement with data directives
- Synchronising data with update directives
- Improving data reuse with cache directives
- Creating device functions with routine directives
- Synchronising events with wait directives
OpenACC API
- Understanding the role of the OpenACC API
- Querying device information and capabilities
- Setting device number and type
- Handling errors and exceptions
- Creating and synchronising events
OpenACC Libraries and Interoperability
- Understanding OpenACC libraries and interoperability
- Using math, random, and complex libraries
- Integrating with other models (CUDA, OpenMP, MPI)
- Integrating with GPU libraries (cuBLAS, cuFFT)
OpenACC Tools
- Understanding OpenACC tools in development
- Profiling and debugging OpenACC programs
- Performance analysis using PGI Compiler, NVIDIA Nsight Systems, and Allinea Forge
Optimisation
- Factors affecting OpenACC program performance
- Optimising data locality and reducing transfers
- Optimising loop parallelism and fusion
- Optimising kernel parallelism and fusion
- Optimising vectorisation and auto-tuning
Summary and Next Steps
Requirements
- A solid understanding of C/C++ or Fortran languages and parallel programming concepts.
- Basic knowledge of computer architecture and memory hierarchy.
- Experience with command-line tools and code editors.
Audience
- Developers wishing to learn how to use OpenACC to program heterogeneous devices and exploit their parallelism.
- Developers aiming to write portable and scalable code that operates across different platforms and devices.
- Programmers interested in exploring the high-level aspects of heterogeneous programming and optimising code productivity.
28 Hours