ROOM 1. Advanced OpenMP

OpenMP for Beginners: Parallelism, and Heterogeneity

Room 1.

Monday September 18, 2023.

8:30 - 13:00

Instructor.

Diego Andres Roa Perdomo, US, University of Delaware, Argonne National Laboratory

Program

Part 1. Introduction

Part 2. Multithreading

Part 3. Tasking

Part 4. Device offloading

 

Registration: You can register for this tutorial here

Chair(s):
Information

OpenMP was originally released in 1998 with an emphasis on multi-core shared memory systems. Since then, this programming framework has evolved, and it is one of the most used frameworks for developing software for parallel and heterogeneous computer systems. The latest revision, OpenMP 5.2, includes features that allow it to describe creation of workers, workload distribution and data management across not only multi-core systems, but also accelerator devices such as GPUs. These new functionalities have resulted in more complex semantics that extend beyond simple “parallel for” directives.

This hands-on tutorial is intended to be a beginner’s introduction to OpenMP with an emphasis on offloading to accelerator devices. We do not focus on performance, but rather on the usability of OpenMP for the latest HPC systems. We will begin by explaining basic concepts of parallelism, threads and memory. We will also explain the offloading abstraction and how it is possible to program both CPU and devices (mainly GPUs) using OpenMP. This tutorial uses Chameleon Cloud to provide access to compute resources that contain GPUs. It is also written in Jupyter Notebooks, lowering the bar for attendees with little command-line (CLI) experience.

 

Student's prerequisites

Attendees are expected to be familiar with:

  • Tutorial will be in C and C++. People with experience in other programming languages are welcome too
  • Simple understanding of how to use compilers
  • Basic experience with Linux systems

Other desired, but not necessary knowledge includes:

  • Understanding the differences between threads and processes
  • Understanding pointers, memory and how data is laid out in memory.
  • Basic understanding of accelerator devices (e.g., GPUs)

Special conditions for accessing the tutorial. For instance: “Laptop with X Linux installed” or “registration for X website previous to the tutorial”). Remember we don't have rooms equipped with computers, just Internet Access. Students must use their personal equipment.

Equipment: The tutorial is to be delivered on site and students will be invited to bring their own laptop. The laptop require access to internet and a Browser (Chrome, Firefox recommended).

Platform: The whole tutorial will be conducted in the HPC on Cloud platform Chameleon Cloud [2] through Jupyter Notebooks.

Material: The material is publicly available at [3] and contributions are welcome

  • (optional) related pictures or images
  • (optional) pdf material of the course

 

Previous editions

This tutorial was presented in:

  • HPCSS2023: Colombian HPC Summer School 2023, June 20 - 22, 2023 [4].
  • This project was recognized as an Honorable Mention for the BSSw Fellow-ship in 2023 [5]

 

References

  1. OpenMP Homepage, https://www.openmp.org/
  2. Chameleon Cloud Homepage, https://www.chameleoncloud.org/
  3. OpenMP Tutorial, https://github.com/josemonsalve2/openmp_tutorial
  4. CyberColombia: The 6th HPC summer school (June 2023), https://cybercolombia.org/summer_school_6/
  5. BSSw Fellowship in 2023, https://bssw.io/pages/meet-our-fellows

Instructor(s):
Diego Andres Roa Perdomo