Computational Sciences Center

Blockkurs "Simulation und Hochleistungsrechnen"

Simulationen spielen in vielen Gebieten der Natur-, Ingenieur- und Wirtschaftswissenschaften eine zunehmende Rolle. Ausgehend von als bekannt vorausgesetzten Zusammenhängen, beispielsweise Naturgesetzen, können mit Hilfe leistungsfähiger Computer Vorhersagen über das Verhalten eines Systems getroffen werden.

Simulationen können einerseits Kosten sparen, indem beispielsweise Experimente im Computer durchgeführt werden, sie können aber auch Einblicke ermöglichen, die Experimenten nicht zugänglich sind, beispielsweise bei der Vorhersage der Entwicklung des Weltklimas.

Im Rahmen des Blockkurses wollen wir die Prinzipien vermitteln, auf denen typische Computersimulationen beruhen, und die Teilnehmerinnen und Teilnehmer dazu in die Lage versetzen, selbst Simulationen zu programmieren und auf den Systemen des Rechenzentrums auszuführen.

Dozenten: Prof. Dr. Steffen Börm, Dipl.-Inf. Sven Christophersen

Ort und Zeit: Raum 424, Ludewig-Meyn-Straße 4, vom Montag, dem 27.08.2018, bis zum Freitag, dem 07.09.2018

Anmeldung: Bitte per Mail an Herrn Börm

Vorkenntnisse: Höhere Mathematik (z.B. Ableitungen und Integrale, Polynome, Matrizen und Vektoren); Programmieren in C

Die erste Woche des Blockkurses ist grundlegenden numerischen Verfahren gewidmet, die für Simulationen von zentraler Bedeutung sind.

  • Montag, 27.08.18:
    09:00 - 09:15 Begrüßung
    09:15 - 10:30 Vorlesung: Einschrittverfahren für gewöhnliche Differentialgleichungen
    10:30 - 12:00 Programmierübung: Simulation eines Federpendels, Simulation einen Mehrkörpersystems
    13:00 - 14:30 Vorlesung: Implizite Einschrittverfahren, Crank-Nicolson- und Leapfrog-Verfahren
    14:30 - 16:00 Programmierübung: Energieerhaltende Simulationen
  • Dienstag, 28.08.18:
    09:00 - 10:30 Vorlesung: Interpolation, Extrapolation und numerische Integration
    10:30 - 12:00 Programmierübung: Quadratur und Romberg-Quadratur am Beispiel normalverteilter Zufallsgrößen
    13:00 - 14:30 Vorlesung: Runge-Kutta-Verfahren und Mehrschrittverfahren für gewöhnliche Differentialgleichungen
    14:30 - 16:00 Programmierübung: Simulation eines Mehrkörpersystems, Simulation eines Räuber-Beute-Systems
  • Mittwoch, 29.08.18:
    09:00 - 10:30 Vorlesung: Finite-Differenzen-Verfahren für partielle Differentialgleichungen
    10:30 - 12:00 Programmierübung: Numerische Behandlung der Potentialgleichung
    13:00 - 14:30 Vorlesung: LR-Zerlegung und BLAS
    14:30 - 16:00 Programmierübung: Lösen der 2D-Potentialgleichung mit Bandmatrizen und BLAS
  • Donnerstag, 30.08.18:
    09:00 - 10:30 Vorlesung: Linienmethode für die Wärmeleitungsgleichung und die Wellengleichung
    10:30 - 12:00 Programmierübung: Simulation der Wellengleichung mit Linienmethode und Runge-Kutta- und Crank-Nicolson-Verfahren
    13:00 - 14:30 Vorlesung: Iterationsverfahren
    14:30 - 16:00 Programmierübung: Nichtlineare Regression, weitere nichtlineare Aufgabenstellungen
  • Freitag, 31.08.18:
    09:00 - 10:30 Vorlesung: Krylow-Verfahren für lineare Gleichungssysteme
    10:30 - 12:00 Programmierübung: 2D-Wellengleichung mit Crank-Nicolson-Verfahren und CG-Löser
    13:00 - 14:30 Vorlesung: Mehrgitterverfahren
    14:30 - 16:00 Programmierübung: 2D-Wellengleichung mit Crank-Nicolson-Verfahren und Mehrgitterlöser

In der zweiten Woche des Blockkurses befassen wir uns mit der Frage, wie diese Verfahren auf modernen Computern möglichst effizient realisiert werden können.

  • Montag, 03.09.18:
    09:00 - 10:30 Vorlesung: Parallelisierung mit geteiltem Speicher (OpenMP, Threads, Teams, Worksharing)
    10:30 - 12:00 Programmierübung: Parallele Operationen für 2D-Gitterfunktionen
    13:00 - 14:30 Vorlesung: Synchronisation (Locks, Tasks)
    14:30 - 16:00 Programmierübung: Task-parallele LR-Zerlegung
  • Dienstag, 04.09.18:
    09:00 - 10:30 Vorlesung: Vektorisierung (SIMD, Offloading)
    10:30 - 12:00 Programmierübung: Vektorisierte Quadratur, vektorisierte lineare Algebra
    13:00 - 14:30 Vorlesung: Approximation nichtlokaler Kraftfelder (Vielkörpersysteme, Baumalgorithmen)
    14:30 - 16:00 Programmierübung: Simulation eines Vielkörpersystems mit Gravitation
  • Mittwoch, 05.09.18:
    09:00 - 10:30 Vorlesung: Rechnen auf Grafikkarten (CUDA)
    10:30 - 12:00 Programmierübung: Simulation eines Vielkörpersystems auf einer Grafikkarte
    13:00 - 14:30 Vorlesung: Synchronisation von Threads, geteilter Speicher
    14:30 - 16:00 Programmierübung: Quadratur auf einer Grafikkarte, Reduktionsoperationen
  • Donnerstag, 06.09.18:
    09:00 - 10:30 Vorlesung: Verteiltes Rechnen (MPI)
    10:30 - 12:00 Programmierübung: Operationen auf verteilten 2D-Gitterfunktionen
    13:00 - 14:30 Vorlesung: Kollektive Kommunikation
    14:30 - 16:00 Programmierübung: Gebietszerlegungsverfahren in 2D
  • Freitag, 07.09.18:
    09:00 - 10:30 Vorlesung: Computersysteme des Kieler Rechenzentrums
    10:30 - 12:00 Programmierübung: Praktisches Arbeiten auf den Systemen des Rechenzentrums
    13:00 - 14:30 Abschließende Diskussion