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

Core

Module leaders

Dr Chris Cantwell