The module descriptors for this programme can be found below.

Modules shown are for the current academic year and are subject to change depending on your year of entry.

Please note that the curriculum of this programme is currently being reviewed as part of a College-wide process to introduce a standardised modular structure. As a result, the content and assessment structures of this course may change for your year of entry. We therefore recommend that you check this course page before finalising your application and after submitting it as we will aim to update this page as soon as any changes are ratified by the College.

Find out more about the limited circumstances in which we may need to make changes to or in relation to our courses, the type of changes we may make and how we will tell you about changes we have made.

High-Performance Computing

Module aims

This module provides you with intermediate proficiency in the use of the C++ programming language and the skills to be able to write efficient parallel programs. It will include an introduction to parallel programming as well as cover the use of software engineering tools and best practices, such as debuggers, unit testing and version control.

Learning outcomes

On successfully completing this module, you should be able to:  1. Effectively use a profiler to optimise the performance of code; 2. Demonstrate understanding of how to use the BLAS and LAPACK routines by applying them to solve systems of equations numerically; 3. Appraise the advantages and disadvantages of shared and distributed memory parallelisation; 4. Formulate numerical algorithms using one or both of the parallelisation paradigms; 5. Use a job submission system to run codes on a modern HPC system. 

Module syllabus

Computer architecture and performance profiling of C++ code.  Numerical linear algebra using BLAS and LAPACK.  Shared memory and distributed parallel programming paradigms.  Parallel programming using OpenMP.  Parallel programming using the Message Passing Interface (MPI).  Job submission on cluster computers. 

Pre-requisites


 

Teaching methods

The module will be delivered primarily through in-class demonstrations introducing the key concepts and methods, supported by a variety of delivery methods combining the traditional and the technological. The content is presented via a combination of slides, whiteboard and visualizer.Learning will be reinforced through hands-on computational lab sessions. 

Assessments

This module presents opportunities both for formative and summative assessment.  
You will be formatively assessed through a number of progress tests and tutorial sessions. 
Additional opportunities are provided for you to self-assess your learning via tutorial problem sheets. 
Summative Assessment takes the form of an in-class test and a final piece of coursework at the end of the module. 

Assessment type Assessment description Weighting Pass mark
Examination In-class test 25% 50%
Coursework Programming coursework 75% 50%

You will receive feedback both during the hands-on computing laboratory sessions and following the coursework submission.

You will receive feedback on examinations in the form of an examination feedback report on the performance of the entire cohort.

You will receive feedback on your performance whilst undertaking tutorial exercises, during which you will also receive instruction on the correct solution to tutorial problems.

Further individual feedback will be available to you on request via this module’s online feedback forum, through staff office hours and discussions with tutors. 

Reading list

Module leaders

Dr Chris Cantwell