Parallel Computer Systems
Overall Course Objectives
All modern computer systems are parallel systems, whether they are
embedded, server or distributed cloud system. In this course, you will
study how these systems are designed and how to efficiently program
them.
The course assumes knowledge of, amongst other things, programming
with threads, processes and with system languages, in particular C.
Based on this, you will explore how to use and implement modern
parallel computing frameworks.
You will also study the system architecture of a wide range of
parallel systems. The course will provide the insights needed to
evaluate and design parallel systems, also at a low level.
Modern cloud systems and machine learning systems are parallel
computers. This course will cover such system as well and will provide
the necessary insight to use but also design cloud and machine
learning systems.
See course description in Danish
Learning Objectives
- explain and derive analytic models for performance.
- evaluate the performance of parallel computer systems and applications.
- explain fundamental design criteria for parallel computer systems.
- explain what parts of the systems are critical for performance.
- explain fundamental parallel programming paradigms.
- optimize a parallel application for a specific platform and programming paradigm.
- design simple parallel computer systems.
- implement parallel programming frameworks.
Course Content
Computer systems: fundamental parallel computer architecture;
multi-core systems; scalable architectures; heterogeneous computer
architecture; cache and memory hierarchy effects; cache coherence;
memory models; cloud systems; machine learning hardware; performance
analysis.
Parallel programming: structured parallel programming; parallel
patterns; implementation of synchronization primitives;
implementation of parallel programming frameworks;
Modeling: performance models; performance tools;
Possible start times
- 36 – 49 (Wed 8-12)
Recommended prerequisites
Teaching Method
Group activities, exercises and programming laboratories.




