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
- Defining OpenACC.
- Comparing OpenACC with OpenCL, CUDA, and SYCL.
- Overview of OpenACC features and architectural design.
- Setting up the development environment.
Getting Started
- Creating an OpenACC project in Visual Studio Code.
- Exploring the project structure and associated files.
- Compiling and executing the program.
- Displaying output using printf and fprintf.
OpenACC Directives and Clauses
- Comprehending OpenACC directives and clauses.
- Utilizing parallel directives to establish parallel regions.
- Applying kernels directives for compiler-managed parallelism.
- Using loop directives to parallelize loops.
- Managing data movement with data directives.
- Synchronizing data using update directives.
- Enhancing data reuse with cache directives.
- Creating device functions via routine directives.
- Synchronizing events with wait directives.
OpenACC API
- Understanding the role and scope of the OpenACC API.
- Querying device information and capabilities.
- Configuring device number and type.
- Handling errors and exceptions effectively.
- Creating and synchronizing events.
OpenACC Libraries and Interoperability
- Understanding OpenACC libraries and interoperability standards.
- Utilizing math, random, and complex number libraries.
- Integrating with other programming models (CUDA, OpenMP, MPI).
- Integrating with GPU libraries (cuBLAS, cuFFT).
OpenACC Tools
- Understanding OpenACC tools within the development workflow.
- Profiling and debugging OpenACC applications.
- Performance analysis using PGI Compiler, NVIDIA Nsight Systems, and Allinea Forge.
Optimization
- Identifying factors that impact OpenACC program performance.
- Optimizing data locality and minimizing transfers.
- Optimizing loop parallelism and fusion.
- Optimizing kernel parallelism and fusion.
- Enhancing vectorization and auto-tuning processes.
Summary and Next Steps
Requirements
- Familiarity with C/C++ or Fortran languages and core parallel programming concepts.
- Foundational knowledge of computer architecture and memory hierarchy.
- Proficiency with command-line tools and code editors.
Target Audience
- Developers seeking to learn how to use OpenACC to program heterogeneous devices and exploit their parallelism.
- Developers aiming to write portable, scalable code that runs efficiently across different platforms and devices.
- Programmers interested in exploring the high-level aspects of heterogeneous programming to enhance code productivity.
28 Hours