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. If you do not have an account on Adroit or one of the large clusters then request an account on Adroit here.
You will need to compile and run OpenMP codes during the workshop. This can be done on Adroit by following these directions.
Lecture, demo, and hands-on exercises
Primer on the C programming language
Check out this new research paper on OpenMP implemented in Python
Download the slides, coding exercises and solutions