TMA4280 Introduction to Supercomputing -- Spring 2018

Lecturer: Aurélien Larcher
Lectures: Friday 12-15 @ B1
Exercises: Wednesday 17-19 @ Banachrommet

Lectures will be on Fridays 13-15 from week 4 onwards.

Examination Sessions: please fill the attendance poll

For any contact by email, please add 'TMA4280' to the subject.


  1. Introduction survey to fill in by January 17. 2018
  2. Application form for access to IDUN/Lille to return by January 26. 2018.


  1. 20180112: Due to a collision with another course, Friday lectures need to be rescheduled.
  2. 20180110: Updated schedule.

Office hours:

  1. More questions? Please book a time on Thursday 17-19 or Friday 15-17.


The objective of this course is to give a brief introduction to modern computer architectures and to discuss numerical algorithms for vector and parallel processing.


Projects 40% Project I + II
Written examination 60% 2018-05-16 9-13

Grades will follow the scale:

A > 89
B > 77
C > 65
D > 53
E > 41


The reference lecture notes are used and will be updated based on feedback.

Course material used during the lectures will be uploaded and linked from this page right after each corresponding lecture to take account of any feedback.

For each lecture the corresponding chapter in the lecture notes is indicated.

Week Subject Lecture Notes Slides
2 Presentation of the Curriculum - L00
2 Introduction to Supercomputing Ch.1 L01
3 Computing architectures Part 1 Ch.2 L02
4 Computing architectures Part 2 Ch.4 L03
5 Distributed memory model - MPI Part 1 Ch.4 L04
6 Distributed memory model - MPI Part 2 - L05
7 Shared memory model - OpenMP Ch.5 L06
8 Supercomputer tutorial and Project Q&A Banachrommet
9 Project Guidance Nullrommet
10 Solving PDEs: the Poisson problem Ch.7 L07
11 Direct linear solvers Ch.9 (to be uploaded) L08
12 Project Topics: Diagonalization and Finite Elements
14 Iterative linear solvers Ch.9 (to be uploaded) L09
15 Introduction to PETSc and MPI-IO L10 L11
16 Examination Preparation 1 Reviewed Problems 1 and 2 from 2006 R00 Examination Requirements
17 Examination Preparation 2 [April 27. Room B22 13-15] Reviewed Problems from 2015 and 2016 Exam Preparation Notes
18 Examination Preparation 3 [April 30. Room B22 15-17]
Examination Preparation 4 [May 1. Room B22 15-17]
Examination Preparation 5 [May 2. Room B22 15-17] Reviewed Problems from 2017

The following documents contain examination question with suggested solutions: a subset will be reviewed on Week 16 and further questions can be asked during office hours.

Previous examinations with solutions
2017 PDF
2016 PDF
2015 PDF
2014 PDF
2011 PDF
2010 PDF
2009 PDF
2006 PDF


Weeks 3-4 are planned for students with little experience in programming and UNIX environments. No compulsory assignment is planned before early February.

Week Subject Notes
2 Presentation of the curriculum Planning, practical details, and questions
3 Introduction to the UNIX environment and tools A short course for students with no prior experience in UNIX. C00
4 Lab C/C++ Programming and tools C01: Finish Ex03, 04
5 Lab Basic programming and exercises Ch.1-2 E01: Ex01, 02, 03, 04, 06 then prepare C01, Ex06, 07
6 Lab Basic programming and exercises Ch.1-2 E02
7 Project I Start of Project I P01 See L05 for support material.
8 Project I Supercomputer tutorial
9 Project I Project I Guidance
10 Lab Project I Guidance
11 Lab MPI exercises E03 (Optional)
12 Project II Start of Project II P2A: Diagonalization P2A: Code P2B: FEM P2B: Guidance
14 Project II Project II Guidance
15 Project II Project II Guidance
16 Project II handout Project II Guidance


Labs are not compulsory but recommended for people with very little experience in UNIX environments and programming.

Exercices for the next week are posted on this page as well as material for UNIX and programming depending on the demand.

For people missing the Labs, the Git repository here will be updated with previous exercises:

From Week 3 (inclusive) labs will be in the Banach room.

Compulsory assignments

  1. Project I : 10% of the final grade, deadline March 7. 2018.
  2. Project II: 30% of the final grade, deadline April 20. 2018.

Access to IDUN/Lille

The required form should be returned latest Week 6.

Please refer to the tutorial page for more information on how to work on IDUN/Lille.

Vagrant box

A virtual machine image is made available to people using non-UNIX operating systems. Steps for installing the Vagrant box are described in this tutorial. You will need at least 20GB on the disk to be able to install the virtual machine.


No textbook is made compulsory for this course but optional references will be provided for the sake of completeness. The lecture notes lecture notes serve as reference course material. References provided in the list below are just a way to learn beyond the scope of the course.

The Introduction to parallel programming offered at NTNU provides further material and references.

Parallel Scientific Computing textbooks

  1. Van de Velde, E. F., Concurrent Scientific Computing, Springer Texts in Applied Mathematics, Volume 16 (1994) LINK
  2. Shonkwiler R. W. and Lefton L., An Introduction to Parallel and Vector Scientific Computation, Cambridge Texts in Applied Mathematics, No. 41 (2006) LINK

Data models

  1. Goldberg D., What Every Computer Scientist Should Know About Floating-Point Arithmetics, ACM Computing Surveys, Vol 23, No 1 (1991) PDF
  2. The Open Group, 64-Bit Programming Models: why LP64?, (1997) PDF

Computing Architectures

  1. Flynn M. J., Some Computer Organizations and Their Effectiveness, IEEE Transactions on Computers, Vol C-21, No 9 (1972)PDF
  2. Duncan R., A Survey of Parallel Computer Architectures, IEEE Survey and Tutorial Series (1990) PDF
  3. Hennessy, J. and Patterson, D., Computer Architecture: A Quantitative Approach, 5th Edition, Elsevier (2011) LINK
  4. Drepper, U., What Every Programmer Should Know About Memory, Red Hat, Inc.(2007) PDF

Distributed Memory Programming Models

  1. MPI Forum, MPI: A Message-Passing Interface Standard, Online publication (2012) PDF
  2. Balaji P., Buntinas D., Goodell D., Gropp W., and Thakur R., Fine-Grained Multithreading Support for Hybrid Threaded MPI Programming, (2010) PDF

Shared Memory Programming Models

  1. OpenMP, OpenMP 4.5 Summary Card – C/C++, Online publication (2015) PDF

Numerical Linear Algebra

  1. Golub Gene H., and Van Loan, Charles F., Matrix Computations (4th edition) LINK
  2. Saad Y., Iterative methods for sparse linear systems (2nd edition) PDF

Reference group

  • Muhammad Hamza Khalid
  • Adrian Siim Melsom
  • Markus Friedemann
2018-09-07, Aurelien Larcher