Get in Touch

Course Outline

Introduction

  • Definition of OpenACC standards
  • Comparative analysis of OpenACC, OpenCL, CUDA, and SYCL
  • Summary of OpenACC capabilities and system architecture
  • Configuration of the development workspace

Foundational Procedures

  • Establishing an OpenACC project within Visual Studio Code
  • Reviewing project architecture and file organization
  • Compilation and execution of the application
  • Output management utilizing printf and fprintf functions

OpenACC Directives and Clauses

  • Interpretation of OpenACC directive syntax and clauses
  • Application of parallel directives to define parallel regions
  • Utilization of kernels directives for compiler-optimized parallelism
  • Implementation of loop directives to parallelize iterative structures
  • Regulation of data transfer via data directives
  • Coordination of data updates using update directives
  • Enhancement of data reuse through cache directives
  • Definition of device-specific functions using routine directives
  • Management of event synchronization via wait directives

OpenACC API

  • Role of the OpenACC API in program control
  • Retrieval of device specifications and capabilities
  • Assignment of device identifiers and types
  • Management of error states and exceptions
  • Creation and synchronization of execution events

OpenACC Libraries and Interoperability

  • Overview of OpenACC library integration and interoperability standards
  • Application of mathematical, random number, and complex number libraries
  • Integration with other programming models (CUDA, OpenMP, MPI)
  • Interaction with GPU-specific libraries (cuBLAS, cuFFT)

OpenACC Tooling

  • Role of OpenACC tools in the development lifecycle
  • Methods for profiling and debugging OpenACC applications
  • Performance assessment using PGI Compiler, NVIDIA Nsight Systems, and Allinea Forge

Optimization Strategies

  • Analysis of factors influencing OpenACC program performance
  • Optimization of data locality and reduction of transfer overhead
  • Refinement of loop parallelism and fusion techniques
  • Enhancement of kernel parallelism and fusion methods
  • Optimization of vectorization and auto-tuning processes

Conclusion and Recommendations

Requirements

  • Working knowledge of C/C++ or Fortran programming and parallel computing concepts
  • Foundational understanding of computer architecture and memory hierarchy
  • Proficiency with command-line interfaces and code editors

Audience Profile

  • Developers seeking to master OpenACC for programming heterogeneous devices and exploiting parallelism for government systems
  • Developers focused on creating portable and scalable code compatible with diverse platforms and devices
  • Programmers aiming to explore advanced heterogeneous programming aspects and enhance code productivity
 28 Hours

Number of participants


Price per participant

Upcoming Courses

Related Categories