Module overview
Aims and Objectives
Learning Outcomes
Subject Specific Practical Skills
Having successfully completed this module you will be able to:
- Use C++ to accelerate a given function using threads and SIMD
- Use CUDA or OpenCL to accelerate a given function using a GPU or FPGA
Subject Specific Intellectual and Research Skills
Having successfully completed this module you will be able to:
- Analyse a given program and identify opportunities for parallelism
- Analyse a parallel algorithm and choose an appropriate programming paradigm and hardware target
- Identify data-races in a program and use locking or synchronisation to remove them
Knowledge and Understanding
Having successfully completed this module, you will be able to demonstrate knowledge and understanding of:
- Explain parallelism using the concept of an iteration space
- Describe the types of parallelism provided by contemporary hardware platforms
- Explain how parallelism can speed-up programs, and why this speed-up is often limited
Syllabus
Core concepts for parallelism:
- What is parallelism?
- Typical hardware structures supporting parallelism
- Iteration spaces
- Performance expectations, limitations, and prediction
- Hazards and conflicts
- Locking and synchronisation
Frameworks and languages for parallel programming
- Threads (C++)
- SIMD (Intrinsics)
- GPUs (CUDA)
- FPGAs (OpenCL)
Application and optimisation:
- Example: regular bulk synchronous problem
- Example: irregular asynchronous problem
- Profiling and optimisation
- Design patterns for parallel programming
- Parallel programming in distributed systems
Learning and Teaching
Teaching and learning methods
Lectures, problem-classes, and independent coursework
Type | Hours |
---|---|
Lecture | 36 |
Problem Classes | 12 |
Revision | 10 |
Completion of assessment task | 46 |
Guided independent study | 46 |
Total study time | 150 |
Assessment
Summative
This is how we’ll formally assess what you have learned in this module.
Method | Percentage contribution |
---|---|
Computing assignment | 30% |
Exam | 40% |
Computing assignment | 30% |
Referral
This is how we’ll assess you if you don’t meet the criteria to pass this module.
Method | Percentage contribution |
---|---|
Exam | 100% |
Repeat
An internal repeat is where you take all of your modules again, including any you passed. An external repeat is where you only re-take the modules you failed.
Method | Percentage contribution |
---|---|
Exam | 100% |