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?
- Comparison of OpenACC with 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
- Utilizing parallel directives to create parallel regions
- Applying kernels directives for compiler-managed parallelism
- Using loop directives for parallelizing loops
- Managing data movement with data directives
- Synchronizing data with update directives
- Enhancing data reuse with cache directives
- Defining device functions with routine directives
- Synchronizing events with wait directives
OpenACC API
- Understanding the role of the OpenACC API
- Querying device information and capabilities
- Configuring device number and type
- Handling errors and exceptions
- Creating and synchronizing events
OpenACC Libraries and Interoperability
- Understanding OpenACC libraries and interoperability
- Utilizing math, random, and complex libraries
- Integrating with other models (CUDA, OpenMP, MPI)
- Integrating with GPU libraries (cuBLAS, cuFFT)
OpenACC Tools
- Overview of OpenACC development tools
- Profiling and debugging OpenACC programs
- Performance analysis using PGI Compiler, NVIDIA Nsight Systems, and Allinea Forge
Optimization
- Factors influencing OpenACC program performance
- Optimizing data locality and reducing transfers
- Optimizing loop parallelism and fusion
- Optimizing kernel parallelism and fusion
- Optimizing vectorization and auto-tuning
Summary and Next Steps
Requirements
- Proficiency in C/C++ or Fortran and a grasp of parallel programming concepts
- Fundamental knowledge of computer architecture and memory hierarchy
- Experience using command-line tools and code editors
Audience
- Developers aiming to learn OpenACC for programming heterogeneous devices and exploiting parallelism
- Developers seeking to write portable and scalable code compatible with various platforms and devices
- Programmers interested in exploring high-level heterogeneous programming to enhance code productivity
28 Hours