PARALLEL COMPUTING - 2027/8

Module code: COM2039

Module Overview

This course introduces the core concepts of parallel computing by examining the algorithms and architectures that support it. Students will implement parallel solutions during our labs and evaluate their performance, gaining hands-on experience and insight into the challenges and potential tradeoffs involved. The course places particular emphasis on making algorithmic decisions that are informed by hardware characteristics, providing a strong foundation for designing high¿performance computing systems.

Module provider

Computer Science and Electronic Eng

Module Leader

PORTO BUARQUE DE GUSMAO Pedro (CS & EE)

Number of Credits: 15

ECTS Credits: 7.5

Framework: FHEQ Level 5

Module cap (Maximum number of students): N/A

Overall student workload

Independent Learning Hours: 89

Lecture Hours: 24

Laboratory Hours: 20

Guided Learning: 6

Captured Content: 11

Module Availability

Semester 2

Prerequisites / Co-requisites

None

Module content

  • Scope of Parallel Computing: From single-thread to multi-thread heterogeneous systems;
  • Thread Organisation and Compute Architecture;
  • Communication Patterns in Parallel Platforms;
  • Memory Hierarchy and Relative Communication Costs;
  • Performance Characteristics:
    • Control divergence; throughput; latency
  • Optimisation Techniques:
    • Maximising Occupancy; 
    • Coalesced Memory Access; 
    • Minimise Control Divergence; 
    • Tiling and Privatisation; 
  • Principles of Parallel Algorithm Design:
    • Task Decomposition Techniques
    • Task Dependency and Task Interaction Graphs
    • Critical Path Analysis
  • Parallel Algorithm Patterns:
    • Reduction, Prefix Sum (Scan), Histograms, Convolutions, Stencil
  • Process Scheduling and Modelling of Concurrent Processes

Assessment pattern

Assessment type Unit of assessment Weighting
Coursework Individual Coursework 30
Examination Invigilated Exam (2hrs) 70

Alternative Assessment

N/A

Assessment Strategy

The assessment strategy is designed to provide students with the opportunity to demonstrate that they have achieved the module learning outcomes.



Thus, the summative assessment for this module consists of:




  • An individual coursework on sets of problems that students are required to solve. This addresses LO3 and LO4

  • An examination on the whole course content, administered through SurreyLearn. This addresses LO 1-3.



Formative assessment and feedback



Interactive quizzes during the lectures (through Polleverywhere) and online tests on SurreyLearn offering revision of the week's lecture/lab content, are used to explain and test understanding of the theory and application of the concepts. Students will work through progressively structured weekly lab exercises, where completion of each is necessary to progress to the next. Solutions to lab exercises will be made available in subsequent lab sessions and explained to the students as part of preparation for the coursework and exam. 


Module aims

  • The module aims to develop a student's ability to think clearly about the relationship between a problem abstraction and the architectural implementation details.
  • We focus on developing solutions for parallel computing problems and for creating high-performance, GPU-accelerated applications.
  • Computational thinking for foundational parallel algorithm patterns are explored, with algorithmic optimisations for both the programming abstraction and physical GPU architecture. A number of case studies will be considered to illustrate facets of the subject.
  • On completion of the module, the students will have a good understanding of methods for optimising the performance of parallel, GPU-accelerated applications.

Learning outcomes

Attributes Developed
1 Explain the major benefits and limitations of parallel computing KC
2 Identify and explain the differences between common current parallel architectures KC
3 Develop parallel solutions for computationally intensive problems on distributed architectures P
4 Analyse the performance of a parallel/distributed solutions KCT

Attributes Developed

C - Cognitive/analytical

K - Subject knowledge

T - Transferable skills

P - Professional/Practical skills

Methods of Teaching / Learning

The learning and teaching strategy is designed to:




  • Help students understand the distinctive features of a broad range of parallel programming techniques

  • Show the application of design techniques for solving distributed programming problems

  • Help students gain an understanding of how to analyse and optimise the performance characteristics of concurrent and distributed architectures

  • Equip students with necessary mathematical background to prepare them for exposure to more advanced analytical techniques

  • Enable students to apply taught techniques to solve concrete problems



The learning and teaching methods include in-person lectures and in-person labs. The students will also undertake independent study to prepare and reinforce understanding of the module content and lab sessions.


Indicated Lecture Hours (which may also include seminars, tutorials, workshops and other contact time) are approximate and may include in-class tests where one or more of these are an assessment on the module. In-class tests are scheduled/organised separately to taught content and will be published on to student personal timetables, where they apply to taken modules, as soon as they are finalised by central administration. This will usually be after the initial publication of the teaching timetable for the relevant semester.

Reading list

https://readinglists.surrey.ac.uk
Upon accessing the reading list, please search for the module using the module code: COM2039

Other information

Digital Capabilities

The theory and practical components of this module provide students digital skills to develop solutions to problems that make use of parallel architectures. Problems that require these architectures are widespread in engineering and modelling and this module teaches both practical skills and a different way of thinking about this class of problem.

Employability

Some problems in engineering and computer science that require high performance and low latency can be solved by parallel architectures. These problems generally complex with extremely tight time constraints. The theory and practical session on this module will allow students to explore how problems can be parallelised to optimise performance.

Global and Cultural Skills

Computer Science is a global language and the tools and languages used on this module can be used internationally. This module allows students to develop skills that will allow them to develop applications with global reach and collaborate with their peers around the world.

Resourcefulness and Resilience

This module teaches a new way of developing a solution to a particular class of problem. The theory provides a grounding in how we can take advantage of parallel architectures and in the lab, students will be able to take advantage of hardware that allows them to test out the theory in practice.

Programmes this module appears in

Programme Semester Classification Qualifying conditions
Computer Science BSc (Hons) 2 Compulsory A weighted aggregate mark of 40% is required to pass the module
Computer Science MEng 2 Compulsory A weighted aggregate mark of 40% is required to pass the module
Computer Science and Artificial Intelligence BSc (Hons) 2 Optional A weighted aggregate mark of 40% is required to pass the module
Computer Science and Artificial Intelligence MEng 2 Optional A weighted aggregate mark of 40% is required to pass the module
Computer Science and Cyber Security BSc (Hons) 2 Compulsory A weighted aggregate mark of 40% is required to pass the module

Please note that the information detailed within this record is accurate at the time of publishing and may be subject to change. This record contains information for the most up to date version of the programme / module for the 2027/8 academic year.