Description
This module builds on Data Structures and Algorithms 1 by introducing students to parallel programming on shared memory and GPU architectures and the design techniques underpinning parallel applications, using a range of case studies drawn from typical real-world applications.
Aims
The aim of this Module is to provide the student: To develop computational and algorithmic thinking and show how parallel data structures and algorithms are used efficiently in real-world applications.
Learning Outcomes
By the end of this module the student should be able to:
- Be aware of the standard techniques of software performance measurement, including profiling, and apply these techniques to identify performance bottlenecks in real programs.
- Understand the emerging importance of parallel programming in modern software development, and experiment with the performance impact of parallelising parts of an application.
- Describe a variety of application-specific algorithms (sorting/numerical/image processing) and associated data structures in common use, and discuss the benefits and limitations of parallelisation.
Indicative Content
1 Parallel programming
Why to parallelise, parallelism and concurrency, Amdahl's law, high-level approaches to parallelisation, parallel design
2 Low-level programming with threads
Starting and joining threads, sharing data safely, mutual exclusion, synchronisation objects, lock-free
3 High-level parallel programming
Task-based parallelism, message-passing parallelism, data-parallel problems, exploiting locality programming.
4 Instruction-level parallelism
SIMD instructions, automatic vectorisation
5 GPU Programming
GPU architectures, appropriate algorithms for GPUs, GPU profiling.
6 Parallel Patterns
Design patterns for parallel and concurrent programming. Awareness of common sorting, numerical, image processing and searching and optimization algorithms and how they can benefit from parallelisation.
Teaching and Learning Method | Hours |
---|---|
Lecture | 11 |
Tutorial/Seminar | 0 |
Supervised Practical Activity | 22 |
Unsupervised Practical Activity | 0 |
Assessment | 86 |
Independent | 70 |
Guidance Notes
SCQF Level - The Scottish Credit and Qualifications Framework provides an indication of the complexity of award qualifications and associated learning and operates on an ascending numeric scale from Levels 1-12 with SCQF Level 10 equating to a Scottish undergraduate Honours degree.
Credit Value – The total value of SCQF credits for the module. 20 credits are the equivalent of 10 ECTS credits. A full-time student should normally register for 60 SCQF credits per semester.
Disclaimer
We make every effort to ensure that the information on our website is accurate but it is possible that some changes may occur prior to the academic year of entry. The modules listed in this catalogue are offered subject to availability during academic year 2024/5, and may be subject to change for future years.