NFYK18001U  High Performance Parallel Computing

Volume 2018/2019

MSc Programme in Physics


Computational methods are growing increasingly important in many areas of science, and the solution to many problems depend on computers that are vastly faster and holds more memory than what a single high-end server can offer. Top supercomputers consist of more than ten million (10^6) processor cores working in parallel, and soon a top machine will host more than 100 million processors. Programming such highly parallel computers is hard, and ensuring both program correctness and high performance is non-trivial. In this class students will learn how computers are build, from the individual CPU and up to millions of processor cores. Students will learn to program high performance applications with both shared memory and explicit message passing paradigms. Special care is taken to understand which trade-offs are associated with different programming techniques. The class focus on programming skills, and students will learn to map algorithms to parallel architectures and how to decompose problems for parallel execution.

Learning Outcome


At the course completion, the student should be able to:

1. Design and implement parallel applications

2. Choose a parallel computer architecture for a specific purpose

3. Program efficiently for shared memory architectures

4. Program distributed memory architectures with Message Passing Interface

5. Transform algorithms to enable vectorization of operations



The overall purpose of this course is to enable the student to write high performance parallel applications on a range of parallel computer architectures. In addition, the successful candidate will become familiar with a number of typical parallel computer architectures and a set of high performance scientific algorithms.



The students will understand the challenges in addressing parallelization of applications and limitations of the available hardware. In addition, the students should have the ability to reason about the potential from different solutions to a given high performance computing problem.

See Absalon for final course material.

The student must be experienced with writing programs, especially applications in scientific modelling, simulation or data-processing. It is advantageous that the student has an understanding of the internal construction of a computer as well as how the components are build.
Lectures and written projects.
7,5 ECTS
Type of assessment
Continuous assessment
The class is evaluated through a set of reports that is written throughout the class. The final grade is the average of the best 3 reports. Each of these 3 reports must be passed separately with a grade of at least 02.
All aids allowed
Marking scale
7-point grading scale
Censorship form
No external censorship
More internal examiners

Three reports plus one week take home exam. The reports will be with known subjects identical to three of the reports given during the course. Approved reports from the course may be re-submitted no later than 2 weeks before the take-home exam, but will be re-evaluated. The take-home exam will be issued with an unknown subject. All four parts count equally in the final grade.

Criteria for exam assesment

See learning outcome

  • Category
  • Hours
  • Lectures
  • 28
  • Preparation
  • 178
  • Total
  • 206