Fundamentals of Accelerated Computing with OpenACC

Europe/Berlin
The course will be held online. The participation link will be provided via mail to registered participants 3-4 days before the course.
Description

This workshop covers the fundamental tools and techniques needed for accelerating C/C++ or Fortran applications to run on massively parallel GPUs with OpenACC. You will learn how to write code, configure code parallelization with OpenACC, optimize memory movements between the CPU and GPU accelerator, and implement the workflow that you have learned on a new task—accelerating a fully functional, but CPU-only, Laplace Heat Equation code for massive performance gains. At the end of the workshop, you will have access to additional resources for creating new GPU-accelerated applications on your own.

Learning Objectives

By participating in this workshop, you’ll have an understanding of the fundamental tools and techniques for GPU-accelerating C/C++ or Fortran applications with OpenACC and be able to:

  • Profile and optimize your CPU-only applications to identify hot spots for acceleration.
  • Use OpenACC directives to GPU-accelerate your codebase.
  • Optimize data movement between the CPU and GPU accelerator.

Workshop Details

Duration: 8 hours

Prerequisites: Basic experience with C/C++ or Fortran. 

Suggested Resources to Satisfy Prerequisites: https://www.learn-c.org

Technologies: OpenACC

Assessment Type: Code-based

Certificate: Upon successful completion of the assessment, participants will receive an NVIDIA DLI certificate to recognize their subject matter competency and support professional career growth.

Hardware Requirements: Desktop or laptop computer capable of running the latest version of Chrome or Firefox. Each participant will be provided with dedicated access to a fully configured, GPU-accelerated workstation in the cloud.

Language: English

Price: No course fees apply.

Registration Deadline: 13. November 2023 at 23:59

    • 9:00 AM 9:15 AM
      Welcome and Introduction 15m
      • Meet the instructor.
      • Create an account at courses.nvidia.com/join
    • 9:15 AM 10:05 AM
      Introduction to Parallel Programming 50m

      Learn about parallelism in a conceptual way, as well as how to express it with OpenACC. Topics that will be covered are as follows:

      • Introduction to parallelism
      • The goals of OpenACC
      • Basic parallelization of code using OpenACC
    • 10:05 AM 10:15 AM
      Break 10m
    • 10:15 AM 11:05 AM
      Profiling with OpenACC 50m

      Learn how to build and compile an OpenACC code, the importance of profiling, and how to use the NVIDIA Nsight™ Systems profiler. Topics that will be covered are as follows:

      • Compiling sequential and OpenACC code
      • The importance of code profiling
      • Profiling sequential and OpenACC multicore code
      • Technical introduction to the code used in introductory modules
    • 11:05 AM 11:50 AM
      Break 45m
    • 11:50 AM 12:40 PM
      Introduction to OpenACC Directives 50m

      Learn how to parallelize your code with OpenACC directives and understand the differences between parallel, kernel, and loop directives. Topics that will be covered are as follows:

      • The Parallel directive
      • The Kernels directive
      • The Loop directive
    • 12:40 PM 12:50 PM
      Break 10m
    • 12:50 PM 1:40 PM
      GPU Programming with OpenACC 50m

      Learn about the differences between GPUs and multicore CPUs, and manage memory with CUDA Unified Memory. Topics that will be covered are as follows:

      • Definition of a GPU
      • Basic OpenACC data management
      • CUDA Unified Memory
      • Profiling GPU applications
    • 1:40 PM 1:55 PM
      Break 15m
    • 1:55 PM 2:45 PM
      Data Management with OpenACC 50m

      Learn how to explicitly manage data movement with OpenACC data directives to reduce data transfers. Topics that will be covered are as follows:

      • OpenACC data directive/clauses
      • OpenACC structured data region
      • OpenACC unstructured data region
      • OpenACC update directive
      • Data management with C/C++ Structs/Classes
    • 2:45 PM 2:55 PM
      Break 10m
    • 2:55 PM 3:45 PM
      Loop Optimizations with OpenACC 50m

      Understand the various levels of parallelism on a GPU and learn ways to extract more parallelism with OpenACC by optimizing loops in your code. Topics that will be covered are as follows:

      • Seq/Auto clause
      • Independent clause
      • Reduction clause
      • Collapse clause
      • Tile clause
      • Gang, Worker, Vector
    • 3:45 PM 3:55 PM
      Break 10m
    • 3:55 PM 4:55 PM
      Final Review 1h
      • Review key learnings and answer questions.
      • Complete the assessment and earn a certificate.
      • Complete the workshop survey.