Timetable information in the Course Catalogue may be subject to change.

University Homepage
DRPS Homepage
DRPS Search
DRPS Contact
DRPS : Course Catalogue : School of Informatics : EPCC on-campus

Postgraduate Course: Parallel Design Patterns (EPCC11010)

Course Outline
SchoolSchool of Informatics CollegeCollege of Science and Engineering
Credit level (Normal year taken)SCQF Level 11 (Postgraduate) AvailabilityAvailable to all students
SCQF Credits10 ECTS Credits5
SummaryIf you were given a serial problem, conceptually, how would you go about splitting it up into many different parts that could run concurrently on the latest supercomputers?

The good news is that we don't need to reinvent the wheel. Instead there are many different approaches (called parallel patterns) that have been developed by the community and can be used in a variety of situations. These patterns apply equally well regardless of whether our problem is a computational one or data driven.

Understanding and being able to apply these patterns also helps getting to grips with existing parallel codes and optimising poorly performing computation and data codes. Whilst the lectures take a top down approach, focusing on the patterns themselves, the practical tutorials give students the opportunity to explore the concepts by implementing pattern based solutions to problems using common HPC technologies.
Course description Reusability is a key driver of this module, both reusability of knowledge (the patterns themselves) and parallel codes (via frameworks.) The parallel patterns (known as a pattern language) that we cover are split into two categories. This closest to the problem area (and most abstract) are parallel algorithm strategy patterns and include:
- Task Parallelism
- Recursive Splitting
- Geometric Decomposition
- Pipeline
- Discrete Event
- Actors

The other category of patterns is closer to the implementation and drives how the programmer should structure their code and data. These are implementation strategy patterns and include:
- Master/Worker
- Loop Parallelism
- Fork/Join
- Shared Data and Queues
- Active Messaging

Patterns are described on an abstract level and we will also discuss enhancements that can be made to improve performance/scalability but at the cost of code complexity. Implementations of these patterns are explored in depth in the tutorials.
This module also covers parallel frameworks and how we might write generic implementations of patterns which can be applied to numerous problems. Design principals of frameworks, along with popular HPC libraries will be explored so that students understand both from a design and also implementation perspective how to write generic parallel code.

Programming exercises use C and Fortran, with MPI and OpenMP.
Entry Requirements (not applicable to Visiting Students)
Pre-requisites It is RECOMMENDED that students have passed Message-Passing Programming (EPCC11002) OR Message-passing Programming (INFR11163) AND Threaded Programming (EPCC11003) OR Threaded Programming (INFR11178)
Prohibited Combinations Other requirements None
Information for Visiting Students
Pre-requisitesRequired: Ability to program in C, C++ or Fortran.

Students are RECOMMENDED to have passed: Message-Passing Programming and Threaded Programming or equivalent courses.

Relevant prerequisite material will be made available to students for reference and self-study, but will not be taught as part of this course and may require significant self-study.
Course Delivery Information
Academic year 2024/25, Available to all students (SV1) Quota:  84
Course Start Semester 2
Timetable Timetable
Learning and Teaching activities (Further Info) Total Hours: 100 ( Lecture Hours 16, Supervised Practical/Workshop/Studio Hours 11, Feedback/Feedforward Hours 1, Programme Level Learning and Teaching Hours 2, Directed Learning and Independent Learning Hours 70 )
Assessment (Further Info) Written Exam 0 %, Coursework 100 %, Practical Exam 0 %
Additional Information (Assessment) 100% coursework.

This is a practical course and the associated programming exercises are at least as important as the lectures. The course is assessed by one coursework exercise, divided into two submissions:
1. (30%) requires the students to write a short report applying parallel patterns to a specific problem.
2. (70%) involves students developing a solution to a problem by implementing (C or Fortran) a specific parallel pattern (using MPI) and ideally presenting this as a framework. This coursework requires production of code (75% weighting within assignment) and a report (25% weighting within assignment).

Coursework is expected to be worked on consistently across the Semester building on material from lectures and practicals as they are delivered. Although the first and second submission dates are sequential they are inherently linked and some work not assessed until the second submission is clearly relevant to feed into the first submission. The two should be treated as a single coherent piece of work with the first coursework offering students an opportunity to receive feedback which can be acted upon to improve the later higher-stakes submission.
Feedback Students will work on exercises during the practical tutorials, sample solutions to these are provided with the opportunity to discuss them in detail. Detailed written feedback is provided for all components of the assessed coursework.
No Exam Information
Learning Outcomes
On completion of this course, the student will be able to:
  1. Describe the elements of a design pattern, and describe the advantages that patterns can provide, as well as their limitations.
  2. Recognise algorithm strategy patterns for the problem at hand.
  3. Evaluate and choose the most appropriate implementation pattern, explaining the decision.
  4. Construct reusable parallel codes, understanding the fundamentals of API design.
  5. Have an awareness of existing frameworks and libraries used to implement parallel design patterns.
Reading List
- 'Patterns for Parallel Programming', Timothy G. Mattson, Beverly Sanders, Berna Massingill
- 'The Art of UNIX Programming', Eric S. Raymond

Further material provided via Learn/Leganto
Additional Information
Graduate Attributes and Skills Project planning
Effective written communication
Technical writing
Reflection on learning and practice
Critical analysis of own work and others
Solution exploration and evaluation
KeywordsPDP,Parallel Design Patterns,Reusability,Parallel Frameworks,HPC,Parallelism,EPCC,Data
Course organiserDr Nicholas Brown
Tel: (0131 6)50 6420
Course secretaryMr James Richards
Tel: 90131 6)51 3578
Help & Information
Search DPTs and Courses
Degree Programmes
Browse DPTs
Humanities and Social Science
Science and Engineering
Medicine and Veterinary Medicine
Other Information
Combined Course Timetable
Important Information