Computational Sciences Center

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