This lesson is being piloted (Beta version)

ACENET Summer School - Directive-Based Parallel Programming with OpenMP and OpenACC

Prerequisites

In order to compile and run the examples this week you will use:

  • the shell command line (bash)
  • the GNU C compiler (gcc)
  • the Intel OneAPI (icc)
  • the Nvidia HPC SDK (nvc)

Exercises involve compiling and running C code. Familiarity with this language will be helpful but is not required.

Schedule

Setup Download files required for the lesson
00:00 1. Introduction How shared memory parallel programs work?
What is OpenMP?
How to write and compile parallel programs in C?
00:20 2. A Parallel Hello World Program How do you compile and run an OpenMP program?
What are OpenMP pragmas?
How to identify threads?
00:50 3. OpenMP Work Sharing Constructs During parallel code execution, how is the work distributed between threads?
01:20 4. Parallel Operations with Arrays How do I parallelize a loop?
How do I ensure that the parallel code gives correct results?
02:00 5. Race Conditions with OpenMP How can we calculate integrals in parallel?
How to compile a program using math functions with gcc?
02:30 6. OpenMP Tasks How to recurse in parallel
03:00 7. Calculating Many-Body Potentials How to speed up calculation leveraging both OpenMP and SIMD instructions
03:25 8. Programming GPUs with OpenMP How to program GPU with OpenMP?
04:05 9. Introduction to GPU Programming with OpenACC How to program GPU with OpenACC?
04:45 Finish

The actual schedule may vary slightly depending on the topics and exercises chosen by the instructor.