Loading Events

Introduction to OpenMP for CPUs

Having multiple cores available only speeds your code when you know how to use them. If you want to discover how to enable CPU parallelism in your code, and have a familiarity with C, C++ or Fortran, then this hands-on workshop is for you. 

You can join in-person OR virtually. This is a free workshop. Please register only if you plan to attend. 

Please join at 8:30am (AWST) to ensure you can access the system. The class starts promptly at 9:00am. 

What will I learn in this 3-hour, hands-on workshop?

You will learn about OpenMP: the reference in the High-Performance Computing world for shared memory programming over the last 25+ years. This workshop will address how to:

  • spawn multiple threads to enable CPU parallelism.
  • coordinate threads to have a certain piece of code executed by certain threads.
  • handle data between threads, depending on whether you want them to have their own copy or share it.
  • parallelise the execution of loops across threads.
  • make sure that different threads end with similar amounts of work.
  • synchronise threads to ensure that the program correctness is preserved.

How about a more technical look at the agenda?

  • Motivation: reason for using OpenMP with CPUs
  • Under the hood: How OpenMP works (directive-based, fork-join pattern)
  • Starting parallelism (parallel construct)
  • Data-sharing attribute clauses (default(none), shared, private and firstprivate clauses)
  • Worksharing constructs (single and master constructs)
  • Synchronisation constructs (barrier and critical constructs)
  • Loops time (for / do constructs)
  • Reduction (reduction clause / atomic construct)
  • Load-balancing techniques (Schedule clause)

Pre-requisites:

You must be familiar with at least one of the following languages:

Meet your Trainer!

Dr. Ludovic Capelli is a teaching fellow at EPCC, the High-Performance Institute of the University of Edinburgh, UK. His efforts are exclusively dedicated to the education of HPC, being part of the teaching team for both on-campus and online versions of the MSc in HPC and MSc in HPC with Data Science at EPCC. He focusses primarily on two major HPC technologies: OpenMP and MPI, being a member of the OpenMP language committee and the MPI forum, as well as the course organiser for the “Advanced Message-Passing Programming” module at EPCC.

Register Here: