This day-long workshop uses OpenMP to introduce the fundamental concepts behind parallel programming. Hands-on exercises will explore the common core of OpenMP, in addition to more advanced OpenMP features and fundamental parallel design patterns.
In addition to hands-on experience using OpenMP, participants will also walk away knowing the basic history of parallel computing, the fundamental concepts behind parallel programming, and some fundamental design patterns from which most parallel algorithms are constructed.
The tutorial is taught in C. Hence, prior experience with C/C++ is required. We use a simple subset of C (basic control structures, static arrays, simple pointers) that any experienced programmer should know, so you don’t need expert level C/C++. Just the basics should be fine. Familiarity with the bash command-line is also helpful.
The exercises can be performed on a modern multi-core laptop. Users who choose to do so will need to have installed a recent version of a C compiler that is OpenMP-aware (e.g. gcc) and be able to access a Linux/Unix command line locally on their laptops.
NOTE FOR APPLE USERS: Note that Apple has disabled OpenMP in the compilers they provide inside Xcode. In some cases, Apple renames their clang compilers to “gcc”, so you may think you have gcc when you actually don’t.
If you use an Apple laptop, make sure you have an actual gnu compiler. You can test this with the command “gcc -v”. If the output from the command states that you have an “Apple LLVM” compiler based on clang, you’ll need to download a gnu compiler (use your favorite tool for downloading software such as macports or homebrew).
Alternately, participants may prefer to do the exercises on a remote computer rather than on their laptops. Users who take this route should have an account on the Adroit cluster (which has multi-core nodes and the needed C compilers), and they should confirm that they can SSH into Adroit at least 48 hours beforehand. Details on all of the above can be found in the advance setup guide for PICSciE virtual workshops.
Lecture, demo, and hands-on exercises
All presentation materials are in this Github repo.
A recording of the session (in MP4 format) is here, along with a transcript of the Zoom chat.