Get in Touch

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

Number of participants


Price per participant

Upcoming Courses

Related Categories