Skip to main content

Unit information: An Introduction to High Performance Computing in 2018/19

Please note: you are viewing unit and programme information for a past academic year. Please see the current academic year for up to date information.

Unit name An Introduction to High Performance Computing
Unit code COMS30005
Credit points 10
Level of study H/6
Teaching block(s) Teaching Block 1 (weeks 1 - 12)
Unit director Professor. McIntosh-Smith
Open unit status Not open

Assumes students are competent C programmers. This unit will not be appropriate for novice programmers, or students unfamiliar with C.



School/department Department of Computer Science
Faculty Faculty of Engineering


The aim of this unit is to introduce and explore technologies relating to high performance computing, and to offer practical hands-on use of and experience with said technologies. Students completing the unit should have had an opportunity to integrate content from other units in the programme, for example implementing high performance parallel versions of algorithms previously encountered. Students will be exposed to the underlying trends in computer hardware that are driving development towards massive parallelism in hardware and software. They will also use mainstream parallel programming languages and tools, such as OpenMP, MPI, debuggers and profilers, all in the context of a real supercomputer environment: the university’s Blue Crystal cluster.

Intended learning outcomes

On successful completion of this unit, students will be able to:

  • Understand state-of-the-art high performance computing technologies, and select the right one for a given task; 

  • Utilise said technologies through appropriate programming interfaces (e.g., specialist languages, additions to standard languages or via libraries or compiler assistance); 

  • Analyse, implement, debug and profile high performance algorithms as realised in software.

Specific learning outcomes will be tackled through focused coursework activities, including: 

  • Mastering shared memory multi-core parallelisation through approaches such as OpenMP 

  • Message passing parallel programming through APIs such as MPI 

  • Learning to use software tools, such as debuggers, profilers etc. 

Teaching details

Delivery via lectures (2 hours per week) and active learning labs (2 hours per week).

Assessment Details

100% coursework assessed, two assignments one with 33% weighting, the other with 67% weighting. Assignments will be to write optimised parallel code using mainstream parallel programming languages, such as OpenMP and MPI. Working source code must be submitted, along with a good quality report describing what the student did (2-3 pages per report).

Reading and References

  • D.A. Patterson and J.L. Hennessy. Computer Organization and Design: The Hardware/Software Interface. Morgan Kaufman, ISBN: 1-558-60604-1
  • Grama, G. Karypis, V. Kumar and A. Gupta. Introduction to Parallel Computing (2nd Edition). Addison Wesley, ISBN: 0201648652
  • Chapman, G. Jost and R. van der Pas. Using OpenMP: Portable Shared Memory Parallel Programming. MIT Press, ISBN: 0262533022
  • P. Pacheco. Parallel Programming with MPI. Morgan Kaufmann, ISBN: 1558603395