Get in Touch

Course Outline

Introduction

  • Defining OpenACC
  • Comparing OpenACC with OpenCL, CUDA, and SYCL
  • Overview of OpenACC features and architectural components
  • Configuring the development environment

Getting Started

  • Creating an OpenACC project within Visual Studio Code
  • Exploring project structure and file organization
  • Compiling and executing the program
  • Displaying output using printf and fprintf

OpenACC Directives and Clauses

  • Understanding OpenACC directives and clause usage
  • Applying parallel directives to establish parallel regions
  • Utilizing kernels directives for compiler-managed parallelism
  • Using loop directives to parallelize iterations
  • Managing data movement via data directives
  • Synchronizing data with update directives
  • Enhancing data reuse through cache directives
  • Creating device functions using routine directives
  • Synchronizing 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 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 specific GPU libraries (cuBLAS, cuFFT)

OpenACC Tools

  • Understanding the role of OpenACC tools in the development workflow
  • Profiling and debugging OpenACC programs
  • Conducting performance analysis using PGI Compiler, NVIDIA Nsight Systems, and Allinea Forge

Optimization

  • Identifying factors that impact OpenACC program performance
  • Optimizing data locality and minimizing transfer overhead
  • Enhancing loop parallelism and applying fusion techniques
  • Optimizing kernel parallelism and fusion
  • Improving vectorization and utilizing auto-tuning

Summary and Next Steps

Requirements

  • Familiarity with C/C++ or Fortran languages, as well as core parallel programming concepts
  • Foundational knowledge of computer architecture and memory hierarchy
  • Practical experience with command-line tools and code editors

Target Audience

  • Developers aiming to master OpenACC for programming heterogeneous devices and exploiting parallelism
  • Developers seeking to create portable and scalable code capable of running on various platforms and devices
  • Programmers interested in exploring high-level aspects of heterogeneous programming to enhance code productivity
 28 Hours

Number of participants


Price per participant

Upcoming Courses

Related Categories