# Block couse "Simulation and High-Performance Computing"

**Since all slots are currently occupied, no further registrations for this year's block course can be accepted for the time being!**

The entire block course will be online. Lectures will be delivered in the form of videos that can be downloaded or streamed.

**Lecturers:** Prof. Dr. Steffen Börm, Dr. Leon Schramm

**Place and time:** Online, starting on Monday, 28th of September, 2020, and ending on Friday, 9th of October, 2020.

**Registration:** Via e-mail to Steffen Börm

**Requirements:** Higher mathematics (e.g., derivatives, integrals, polynomials, matrices and vectors); Programming in C

**Lecture notes:** Available in a PDF file, may be updated during the course.

The first week is dedicated to an introduction to fundamental numerical methods that are frequently used in simulations.

- Monday, 28th of September, 2020:

09:00 - 09:30 Opening

09:30 - 10:30 Lecture: Time-stepping for ordinary differential equations

10:30 - 12:00 Programming exercise: Simulation of time-dependent processes.

14:00 - 15:30 Lecture: Implicit time-stepping methods, Crank-Nicolson and leapfrog methods.

15:30 - 17:00 Programming exercise: Energy-conserving simulations - Tuesday, 29th of September, 2020:

09:00 - 10:30 Lecture: Higher-order methods

10:30 - 12:00 Programming exercise: Numerical integration

14:00 - 15:30 Lecture: Runge-Kutta methods and multi-step methods

15:30 - 17:00 Programming exercise: Simulation of a many-body problem, simulation of a predator-prey system - Wednesday, 30th of September, 2020:

09:00 - 10:30 Lecture: Finite difference methods for partial differential equations

10:30 - 12:00 Programming exercise: Electrostatic fields

14:00 - 15:30 Lecture: Method of lines for the heat and the wave equation

15:30 - 17:00 Programming exercise: Simulation of the wave equation - Thursday, 1st of October, 2020:

09:00 - 10:30 Lecture: Iterative methods

10:30 - 12:00 Programming exercise: Computation of Lagrange points in the solar system

14:00 - 15:30 Lecture: Krylov methods for large linear systems

15:30 - 17:00 Programming exercise: Simulation of the wave equation using Crank-Nicolson timestepping with a CG solver - Friday, 2nd of October, 2020:

09:00 - 10:30 Lecture: Multigrid methods

10:30 - 12:00 Programming exercise: Simulation of electrostatic fields using a multigrid method

14:00 - 15:30 Lecture: Algorithms for non-local interactions

15:30 - 17:00 Programming exercise: Fast computation of forces in a many-body system

The second week focuses on how the algorithms introduced so far can be implemented efficiently on both desktop and high-performance computers.

- Monday, 5th of October, 2020:

09:00 - 10:30 Lecture: Shared-memory parallelization (OpenMP, Multithreading)

10:30 - 12:00 Programming exercise: Parallel operations for 2D grid functions

14:00 - 15:30 Lecture: Task-based parallelization

15:30 - 17:00 Programming exercise: Task-based LU decomposition - Tuesday, 6th of October, 2020:

09:00 - 10:30 Lecture: Vectorization (introduction, automatic vectorization)

10:30 - 12:00 Programming exercise: Vectorized numerical integration, vectorized linear algebra

14:00 - 15:30 Lecture: Explicit vectorization (AVX, intrinsics)

15:30 - 17:00 Programming exercise: Simulation of a many-body system - Wednesday, 7th of October, 2020:

09:00 - 10:30 Lecture: Computing on graphics cards (introduction, CUDA)

10:30 - 12:00 Programming exercise: Simulation of a many-body system using a GPU

14:00 - 15:30 Lecture: Memory hierarchies (streams, thread blocks, shared memory)

15:30 - 17:00 Programming exercise: Numerical integration on a GPU, reduction operations - Thursday, 8th of October, 2020:

09:00 - 10:30 Lecture: Distributed computing (MPI)

10:30 - 12:00 Programming exercise: Distributed grid functions

14:00 - 15:30 Lecture: Collective communication

15:30 - 17:00 Programming exercise: Domain decomposition - Friday, 9th of October, 2020:

09:00 - 10:30 Lecture: Computing systems at Kiel's Computer Center

10:30 - 12:00 Programming exercise: Working with the systems of Kiel's Computer Center

12:00 - 12:30 Concluding remarks