| Week | Date | Slide set | Topic | Remarks |
| 34 | 20.08 | 01 | Introduction | |
| 21.08 | 01b, 02 | Introduction pt. 2 The von Neumann computer | ||
| 35 | 27.08 | 03 | Caches and virtual memory | |
| 28.08 | 04,05 | Instruction-level parallelism Flynn's taxonomy Shared and distributed memory, interconnects | ||
| 36 | 03.09 | 06 | Speedup and efficiency | |
| 04.09 | 07,08 | The advection equation Concepts of MPI | Sequential advection equation solvers | |
| 37 | 10.09 | 09 | Six-function MPI with point-to-point communication | Six-function MPI examples |
| 11.09 | 10 | Advection eq. with MPI | ||
| 38 | 17.09 | 11 | Collective operations | Reduction example |
| 18.09 | 12,13 | MPI: Communication modes Timing, scattering and gathering data | ||
| 39 | 24.09 | 14 | MPI: Derived data types | |
| 25.09 | 15,16 | MPI: Communicators MPI: Parallel I/O | Communicator examples Parallel I/O example | |
| 40 | 01.10 | 17 | Pthreads introduction | |
| 02.10 | 18,19 | Pthreads: starting and stopping Pthreads: operations | Pthreads examples | |
| 41 | 08.10 | 20 | OpenMP introduction | OpenMP introductory examples |
| 09.10 | 21,22 | OpenMP: atomicity OpenMP: worksharing directives | OpenMP atomicity examples OpenMP worksharing examples | |
| 42 | 15.10 | 23 | OpenMP: loop schedules | OpenMP schedule examples |
| 16.10 | 24,25 | Cache coherence Loop tiling and vector operations | ARM neon version | |
| 43 | 22.10 | 26 | OpenMP: tasks | Task example |
| 23.10 | 27,28 | Roofline analysis Application classes | ||
| 44 | 29.10 | 30 | CUDA: The GPU and U | |
| 30.10 | 31 | CUDA: Cooperation organisation | ||
| 45 | 05.11 | 32 | CUDA: Shuffle shenanigans | |
| 06.11 | 33 | CUDA: Thread lightly | ||
| 46 | 12.11 | 29 | Loose ends: SMT, superlinear speedup, load balancing, and hybrid programming | |
| 13.11 | ARM guest lecture | |||
| 47 | 19.11 | Summary | ||
| 20.11 | Summary |
Slide set 01 - TDT4200 Parallel Computing overture
Slide set 02 - The von Neumann computer
Slide set 03 - Cache memory
Slide set 04 - Instruction level parallelism
Slide set 05 - Flynn's taxonomy, shared and distributed memory
Slide set 06 - Amdahl's and Gustafson's laws
Slide set 07 - A numerical solver for the advection equation
Slide set 08 - Concepts of MPI
Slide set 09 - Six-function MPI
Slide set 10 - The advection equation using six-function MPI
Slide set 11 - Collective operations
Slide set 12 - Point-to-point communication modes (and other variants)
Slide set 13 - Timing, scatter and gather
Slide set 14 - Derived data types
Slide set 15 - Communicators
Slide set 16 - Cartesian communicators and parallel I/O
Slide set 17 - Pthreads introduction
Slide set 18 - Creating and removing pthreads
Slide set 19 - Pthreads operations and sychronization
Slide set 20 - OpenMP introduction
Slide set 21 - Atomicity in OpenMP
Slide set 22 - OpenMP worksharing directives
Slide set 23 - OpenMP loop scheduling + threads vs. caches
Slide set 24 - Cache coherence
Slide set 25 - Cache optimizations: loop tiling and vector operations
Slide set 26 - OpenMP tasks
Slide set 27 - Roofline analysis
Slide set 28 - Application types
Slide set 29 - Loose ends