Get in Touch

Course Outline

Introduction

  • What is OpenACC?
  • Comparison of OpenACC with OpenCL, CUDA, and SYCL
  • Overview of OpenACC features and architecture
  • Setting up the development environment

Getting Started

  • Creating an OpenACC project in Visual Studio Code
  • Exploring project structure and files
  • Compiling and running the program
  • Displaying output using printf and fprintf

OpenACC Directives and Clauses

  • Understanding OpenACC directives and clauses
  • Utilizing parallel directives to create parallel regions
  • Applying kernels directives for compiler-managed parallelism
  • Using loop directives for parallelizing loops
  • Managing data movement with data directives
  • Synchronizing data with update directives
  • Enhancing data reuse with cache directives
  • Defining device functions with routine directives
  • Synchronizing events with wait directives

OpenACC API

  • Understanding the role of the OpenACC API
  • Querying device information and capabilities
  • Configuring device number and type
  • Handling errors and exceptions
  • Creating and synchronizing events

OpenACC Libraries and Interoperability

  • Understanding OpenACC libraries and interoperability
  • Utilizing math, random, and complex libraries
  • Integrating with other models (CUDA, OpenMP, MPI)
  • Integrating with GPU libraries (cuBLAS, cuFFT)

OpenACC Tools

  • Overview of OpenACC development tools
  • Profiling and debugging OpenACC programs
  • Performance analysis using PGI Compiler, NVIDIA Nsight Systems, and Allinea Forge

Optimization

  • Factors influencing OpenACC program performance
  • Optimizing data locality and reducing transfers
  • Optimizing loop parallelism and fusion
  • Optimizing kernel parallelism and fusion
  • Optimizing vectorization and auto-tuning

Summary and Next Steps

Requirements

  • Proficiency in C/C++ or Fortran and a grasp of parallel programming concepts
  • Fundamental knowledge of computer architecture and memory hierarchy
  • Experience using command-line tools and code editors

Audience

  • Developers aiming to learn OpenACC for programming heterogeneous devices and exploiting parallelism
  • Developers seeking to write portable and scalable code compatible with various platforms and devices
  • Programmers interested in exploring high-level heterogeneous programming to enhance code productivity
 28 Hours

Number of participants


Price per participant

Upcoming Courses

Related Categories