Difference between revisions of "OpenMP in Small Bites"

From HPC Wiki
Jump to navigation Jump to search
Line 36: Line 36:
  
 
=== [[OpenMP_in_Small_Bites/Scoping |Date Scoping ]] ===
 
=== [[OpenMP_in_Small_Bites/Scoping |Date Scoping ]] ===
This session provides an overview on managing one of the most challenging part of OpenMP: Data Scoping. It discusses the differences between <code>private</code>, <code>firstprivate</code>, <code>lastprivate</code> and <code>shared</code> variables and shows how to implement a scalable reduction.  
+
This session provides an overview on managing one of the most challenging parts of OpenMP: Data Scoping. It discusses the differences between <code>private</code>, <code>firstprivate</code>, <code>lastprivate</code> and <code>shared</code> variables and shows how to implement a scalable reduction.  
  
 
=== [[OpenMP_in_Small_Bites/False_Sharing |False Sharing ]] ===
 
=== [[OpenMP_in_Small_Bites/False_Sharing |False Sharing ]] ===

Revision as of 20:42, 30 November 2020

Tutorial
Title: OpenMP in Small Bites
Provider: HPC.NRW

Contact: tutorials@hpc.nrw
Type: Multi-part video
Topic Area: Programming Paradigms
License: CC-BY-SA
Syllabus

1. Overview
2. Worksharing
3. Data Scoping
4. False Sharing
5. Tasking
6. Tasking and Data Scoping
7. Tasking and Synchronization
8. Loops and Tasks
9. Tasking Example: Sudoku Solver
10. Task Scheduling
11. Non-Uniform Memory Access

Introduction

Welcome to the HPC.NRW OpenMP Online Tutorial!

OpenMP (Open Multi-Processing) is the de-facto standard for parallel shared memory programming. With a set of compiler directives and API functions it provides a portable and scalable model to express parallelism.

This tutorial is targeted for novice HPC users as an initial introduction to shared-memory programming with OpenMP.

How to proceed through this tutorial?

The tutorial is made up of 8 sections (3 more will follow soon). Each covers a separate stand-alone topic, but they are designed to be worked through in order.

Each tutorial consists of a short video, followed by a couple of quiz questions for a self control. Everything in the tutorial is platform-independent and works with every operating system with an OpenMP-compatible compiler available. Although most examples are written in C/C++, the fundamental concepts also work with Fortran.

If you have any questions or encounter problems, you can contact us via e-mail at helpdesk@hpc.nrw.

Who created this tutorial?

This tutorial has been developed within the framework of the HPC.NRW project. It is part of a series of online tutorials on various HPC-related topics, all of which were created by HPC.NRW members. Other topics are for example Linux and Gprof, and new tutorials continue to be developed.

The speaker is Dr. Christian Terboven from RWTH Aachen University. Christian works at the university's IT center and is an active member of the OpenMP language committee for many years. Video editing was done primarily by himself an Marc-André Hermanns (RWTH Aachen University). The quiz section was primarily developed by Tim Cramer (RWTH Aachen University). Other contributions came from practically all HPC.NRW members.


Topics

Overview

This session provides a brief history of OpenMP and then introduces the parallel region, one of the most fundamental concepts of OpenMP, used to mark code regions that are meant to be processed by multiple threads in parallel.

Worksharing

This session shows the concept of OpenMP worksharing, loop scheduling and synchronization mechanisms. After this tutorial session the programmer already has knowledge about the most common used OpenMP constructs and API functions.

Date Scoping

This session provides an overview on managing one of the most challenging parts of OpenMP: Data Scoping. It discusses the differences between private, firstprivate, lastprivate and shared variables and shows how to implement a scalable reduction.

False Sharing

Tasking

Tasking and Data Scoping

Tasking and Synchronization

Non-Uniform Memory Access