OpenMP programming for parallel/vector computing

This will be held on May 21st in L6. Practicals can be carried out on the servers "shadowcat" and "cyclops".

The latest generation of Intel Xeon SP (Scalable Processors) CPUs is very powerful, with each CPU having up to 28 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.

Initially, this course will be held once in Trinity Term 2018, but it may be repeated in the future, particularly if it becomes a standard part of scientific computing training for CDTs.

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 the proposed timetable, but the timing could be adjusted a little to avoid such an early start.

References


Lectures


Practical 1

Application: a very 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: