Get in Touch
 Duration 28 hours

Course Outline

Introduction

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

Getting Started

  • Creating an OpenACC project using Visual Studio Code
  • Examining the project structure and constituent files
  • Compiling and executing the program
  • Generating output via printf and fprintf

OpenACC Directives and Clauses

  • Comprehending OpenACC directives and clauses
  • Employing parallel directives to define parallel regions
  • Utilizing kernels directives for compiler-managed parallelism
  • Applying loop directives to parallelize iterations
  • Controlling data movement through data directives
  • Synchronizing data using update directives
  • Enhancing data reuse via cache directives
  • Defining device functions with routine directives
  • Managing event synchronization with wait directives

OpenACC API

  • Understanding the function of the OpenACC API
  • Retrieving device information and capabilities
  • Configuring device number and type
  • Managing errors and exceptions
  • Generating and synchronizing events

OpenACC Libraries and Interoperability

  • Exploring OpenACC libraries and interoperability standards
  • Leveraging math, random, and complex number libraries
  • Integrating with other programming models such as CUDA, OpenMP, and MPI
  • Interoperating with GPU-specific libraries like cuBLAS and cuFFT

OpenACC Tools

  • Overview of OpenACC tools in the development lifecycle
  • Techniques for profiling and debugging OpenACC applications
  • Conducting performance analysis using PGI Compiler, NVIDIA Nsight Systems, and Allinea Forge

Optimization

  • Identifying factors that influence OpenACC program performance
  • Improving data locality and minimizing transfer overhead
  • Optimizing loop parallelism and fusion strategies
  • Refining kernel parallelism and fusion
  • Enhancing vectorization and auto-tuning

Summary and Next Steps

Requirements

  • Familiarity with C/C++ or Fortran programming 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 utilize OpenACC for programming heterogeneous devices and exploiting parallelism
  • Developers aiming to write portable, scalable code capable of running across diverse platforms and devices
  • Programmers interested in exploring high-level heterogeneous programming concepts and enhancing code productivity

Number of participants


Price per participant

Upcoming Courses

Related Categories