Lecturer: Dr Mark Bull
This course is an introduction to using OpenMP for writing parallel programs to run on multi-CPU (SMP) systems, for the purposes of “high-performance computing” (i.e. running programs faster than they can on a single CPU core). It covers all of the principles of OpenMP, and teach the use of all of the basic facilities, so that attendees will be able to write serious programs using it and update most of those that they get from other people. It concentrates on describing how to avoid problems, because shared memory programming and using OpenMP are less about knowing what to do than knowing what not to do. It covers Fortran, C and, to some extent, C++.
Students should leave the course knowing:
- How to add OpenMP pragmas to C/C++/Fortran code, compile, and run them.
- The memory/threading model used by OpenMP.
- How to use OpenMP to distribute loops over multiple threads, automatically, and manually.
- The difference between public/private/shared variables, and issues for code-correctness.
- How to write automatic reductions over arrays.
- How to tune performance with OpenMP.