OpenMP® is the de facto standard for writing parallel applications for shared memory computers. With multi-core processors in everything from tablets to high-end servers, the need for multithreaded applications is growing and OpenMP is one of the most straightforward ways to write such programs.
OpenMP supports parallel programming in C, C++ and Fortran on a wide range of computer systems and operating systems, like Unix, Linux, and Windows. It is jointly defined by a group of major computer hardware vendors, software vendors, and software developers. The OpenMP API provides a portable, scalable programming model that gives shared-memory parallel programmers a simple and flexible interface for developing parallel applications for a wide variety of platforms.
In this workshop, we will cover the core features of the OpenMP 3.1 standard. This will be a hands-on workshop. We expect students to use their own laptops (with Windows, Linux, or OS/X). We will have access to the Anselm supercomputer with an OpenMP compiler. Students can also load an OpenMP compiler onto their laptops before the workshop. Information about OpenMP compilers is available at http://www.openmp.org.
Purpose of the course (benefits for the attendees)
The purpose of the course is that students have an overview of and experience with OpenMP, one of the most widely used parallel programming models.
The workshop is split in two days. Exercises will be given throughout the two days. The first day of the workshop contains an introduction to OpenMP, and will cover threads, synchronization, parallel loops, the master and worksharing constructs and locks, and the data environment.
The second day will cover tasks, the memory model, and threadprivate data. Students will program an actual application at the end of the workshop.
|Thursday, April 24, 2014|
|10:00-11:30||Introduction to OpenMP|
|11:30-12:30||time for lunch|
|12:30-14:00||Creating threads & synchronization|
|14:30-16:00||Parallel loops, master, worksharing & locks|
|Friday, April 25, 2014|
|11:00-12:30||Memory model, and threadprivate data|
|12:30-13:30||time for lunch|