This 1-day course was last taught in 2018/19 but I hope
to run this again in 2024/25.
OpenMP programming for parallel/vector computing
The latest generation of Intel Xeon SP (Scalable Processors)
CPUs is very powerful, with each CPU having up to 56 cores,
each with 1 or 2 AVX-512 vector units.
The purpose of this 1-day course is to introduce students,
postdocs and others to OpenMP programming which is often
the best way to obtain high performance on such systems.
The plan is for this course to be held once per year for
students and postdocs in MPLS, as part of a larger package
of training in scientific computing.
The course consists of approximately 3.5 hours of lectures and
3 hours of practicals. All that will be assumed is some basic
proficiency with C. No prior experience with parallel computing
will be assumed.
Timetable
This is a possible timetable, but the timing could be adjusted
a little to avoid such an early start.
- 09:00 - 10:30 lecture 1
- 10:30 - 10:45 break
- 10:45 - 11:45 lecture 2
- 11:45 - 12:00 break
- 12:00 - 13:00 practical 1
- 13:00 - 14:00 lunch
- 14:00 - 14:30 practical 1 (continued)
- 14:30 - 15:30 lecture 3
- 15:30 - 15:45 break
- 15:45 - 17:15 practical 2
References
Lectures
Practical 1
Application: a simple 2D finite difference method
OpenMP aspects: #pragma omd parallel for, shared and private variables,
reduction clause, run-time library, environment variables, avoiding
false sharing
Practical 2
Application: Monte Carlo simulation using Intel's MKL library
OpenMP aspects: #pragma omp parallel, #pragma omp simd,
threadprivate
Acknowledgements
Many thanks to:
- Wes Armour and Ian Bush for feedback on the lectures and practicals
- Ian Bush, EPCC and NAG for their OpenMP training materials which
were very helpful in preparing my materials