High Performance Parallel Computing

Course content

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 hundred million processor cores working in parallel, and soon a top machine will host more than a billion processors. Programming such highly parallel computers is difficult, 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 accelerators (GPUs), shared memory and explicit message passing paradigms. The theory is put in to practice through hands-on exercises, and students will learn to map algorithms to parallel architectures and how to decompose problems for parallel execution. We will use the ERDA MODI cluster to execute the programs on a real high performance computing infrastructure and evaluate both performance, scalability and correctness of the programs. The hands-on exercises use examples from astrophysics, biophysics, geophysics, high-energy physics, and solid-state physics. The numerical methods for each week are chosen to be well-suited to each parallel architecture. During the exercises we will each week introduce a new tool, such as debuggers, profilers, and parallel correctness checkers, to aid in the development of high performing programs.

We will use C++ as the course language, and small python programs for visualizing the data. The first week is dedicated to introducing C++ and general programming.

Education

MSc Programme in Physics

Learning outcome

Knowledge:

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.

 

Skills:

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, well suited for accelerators

 

Competences:

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.

Lectures and written projects.

See Absalon for final course material.

It is an advantage to have experience writing programs, especially applications in scientific modelling, simulation or data-processing. It is useful if the student has a general idea of the internal construction of a computer.

Academic qualifications equivalent to a BSc degree is recommended.

Written
Individual
Collective
Continuous feedback during the course of the semester
ECTS
7,5 ECTS
Type of assessment
Continuous assessment
Type of assessment details
Exercises are handed in during the first six weeks and contribute 50% towards the grade. In week seven a final project is developed that contributes 50% towards the grade.
Aid
All aids allowed
Marking scale
7-point grading scale
Censorship form
No external censorship
More internal examiners
Re-exam

The re-exam consists of two parts: A 4-day written project report with an oral presentation counting for 50% of the grade. New solutions to the six weekly exercises can be handed in to cover the continuous part of the evaluation (50%) no later than 2 weeks before the start of the 4-day report.

Criteria for exam assessment

See learning outcome

Single subject courses (day)

  • Category
  • Hours
  • Lectures
  • 28
  • Preparation
  • 157
  • Practical exercises
  • 21
  • English
  • 206

Kursusinformation

Language
English
Course number
NFYK18001U
ECTS
7,5 ECTS
Programme level
Full Degree Master
Duration

1 block

Placement
Block 3
Schedulegroup
C
Capacity
No limitation – unless you register in the late-registration period (BSc and MSc) or as a credit or single subject student.
Studyboard
Study Board of Physics, Chemistry and Nanoscience
Contracting department
  • The Niels Bohr Institute
Contracting faculty
  • Faculty of Science
Course Coordinators
  • Troels Haugbølle   (8-6e677b6d68756b724674686f34717b346a71)
  • Markus Jochum   (7-726f74686d7a724573676e33707a336970)
Saved on the 15-02-2024

Are you BA- or KA-student?

Are you bachelor- or kandidat-student, then find the course in the course catalog for students:

Courseinformation of students