[ONLINE] Workshop on OpenMP Software Tools @ ENCCS/Intel





OpenMP is a portable and scalable parallel programming model that gives programmers a flexible interface for directive-based programming of shared-memory parallel machines. Used in conjunction with MPI, OpenMP can enable scientific software to be scaled up to large supercomputers. Since version 4.0, OpenMP supports offloading to accelerator devices such as GPUs and thus provides developers with a single framework that can be used across existing and future GPU devices from multiple vendors.

This workshop, split over two half days, will focus on OpenMP usage and performance tuning for both conventional threadings on CPUs as well as offloading on GPUs. 

A short overview of the Intel oneAPI Toolkits will be given. Compiler options are crucial for optimal performance and thus a short introduction to optimization flags will be provided. Typical OpenMP patterns will be discussed and presented as templates for user applications. As threading errors can be hard to find, a correctness checking tool that finds real and potential threading errors will be introduced. Finally, performance bottlenecks will be discussed and methods to detect them will be introduced.

Participants will be provided with exercises and instructions to run tutorials on the Intel Devcloud (https://software.intel.com/content/www/us/en/develop/tools/devcloud.html) during and after the workshop.

The workshop will be followed by an online OpenMP hackathon on June 8-9 where invited teams of researchers and developers can get help from expert mentors to implement or optimise OpenMP in their own HPC software. If this sounds interesting, have a look at the event page at [LINK]!

Learning objectives

After attending this workshop, you will have learned: 

  • Typical code patterns for applying OpenMP directives for parallelizing and vectorizing loops and regions
  • How to use Intel tools effectively. 
  • How to apply the Advisor tool for finding appropriate loops for OpenMP offloading. 
  • How to check the correctness and finding potential threading errors. 
  • How to perform different types of HPC and threading analysis as well as micro-architectural analysis.
  • General tuning methodologies, common parallel bottlenecks, and how to solve them. 


Basic understanding of parallel programming paradigms and C/C++ or Fortran programming.


For updated agenda check the event's webpage:

The agenda of this meeting is empty