CMT106: High Performance Computing
School | Cardiff School of Computer Science and Informatics |
Department Code | COMSC |
Module Code | CMT106 |
External Subject Code | 100741 |
Number of Credits | 20 |
Level | L7 |
Language of Delivery | English |
Module Leader | Professor David Walker |
Semester | Autumn Semester |
Academic Year | 2023/4 |
Outline Description of Module
This module aims to impart an understanding of the concepts and principles underpinning the discipline of high performance computing (HPC), and to apply this understanding to create HPC applications to solve practical problems.
Knowledge of the C programming language will be an advantage to students taking this module.
On completion of the module a student should be able to
- Describe Flynn’s taxonomy of parallel computer architectures, detail the metrics used in comparing different hardware architectures, evaluate the trade-offs between different designs and recommend the most appropriate design to solve a given problem
- Explain Amdahl’s Law, parallel efficiency, and scalability.
- Show familiarity with the main causes of inefficiency in parallel programs and illustrate these with examples.
- Design and implement complex parallel programs using multithreading, shared memory and message passing constructs (MPI, OpenMP, CUDA).
- Estimate the time complexity and parallel efficiency of parallel programs.
How the module will be delivered
This module will be delivered through a combination of online readings and videos, face-to-face lectures, supervised lab sessions, example classes and tutorials, as appropriate.
Skills that will be practised and developed
Students will develop their ability to analyse problems and determine their suitability for HPC treatment. Students will develop their skills in parallel programming through the use of OpenMP, MPI and CUDA.
How the module will be assessed
Coursework: the coursework will allow students to demonstrate their knowledge and practical skills and to apply the principles taught in lectures. (LO 1, 4)
Exam: a written exam (2 h) will test the student’s knowledge and understanding as elaborated under the learning outcomes. (LO 1, 2, 3, 5)
Students will be provided with reassessment opportunities in line with University regulations.
Assessment Breakdown
Type | % | Title | Duration(hrs) |
---|---|---|---|
Written Assessment | 70 | High Performance Computing | N/A |
Practical-Based Assessment | 30 | Logbook Of Hpc Exercises | N/A |
Syllabus content
Motivation for parallelism; uses of parallel computers; types of parallelism; data decomposition.
Classification of parallel computers and Flynn’s taxonomy.
SPMD programs; shared and distributed memory.
Interconnection networks and network metrics.
Non-determinacy; load imbalance; communication overhead.
Amdahl’s Law; scalability and parallel efficiency.
Introduction to OpenMP and message passing with MPI.
GPUs and programming in CUDA.
More advanced examples of parallel programming drawn from the following:
1. Vibrating string problem.
2. Laplace’s equation.
3. Molecular dynamics.
4. Cellular automata.
5. Matrix multiplication.
6. Sorting.