This course page was updated until March 2022 when I left Durham University. For future updates, please visit the new version of the course pages.
Other reading/resources #
There are many excellent textbooks and tutorials on parallel programming. Here are some I like, with brief commentary.
Victor Eijkhout, Introduction to High Performance Computing. This is a gentle, and quite comprehensive, introduction to parallel computing. The author has a separate book which contains more details on OpenMP and MPI programming models.
Georg Hager & Gerhard Wellein, Introduction to High Performance Computing for Scientists and Engineers, also available through the Durham library. This book is slightly heavier-going and has a focus on code optimisation and performance-modelling from the off. An annotated bibliography is provided by Georg Hager.
Bill Gropp, one of the authors of the MPI standard, has a course on designing and building applications for extreme scale systems. He covers performance models as well, and has a lot of good advice.
Matt Knepley’s notes on computational science also have much good advice, with a focus on the use of PETSc providing parallel data structures and solvers.
The Lawrence Livermore high performance computing centre, has some nice tutorials. Including one introducing OpenMP and one introductory, and one advanced MPI tutorial.
The UK’s supercomputing service ARCHER, ran regular training events over its lifetime. Much of their training material is online, including some videos of previous courses.