Computational Sciences Center

Blockkurs "Simulation und Hochleistungsrechnen"

 

Da zur Zeit alle Plätze belegt sind, können vorerst leider keine weiteren Anmeldungen für den diesjährigen Blockkurs entgegen genommen werden!

 

Vorläufige Anmerkung: Einige Elemente des Kurses befinden sich noch in der Planung. Die genaue Umsetzung als Online-Kurs kann sich deshalb noch ändern. Prinzipiell planen wir, so wie es unten auch steht, die Inhalte zunächst mit hochgeladenen Vorlesungsvideos zu vermitteln und dann im Anschluss live bei BigBlueButton in Programmierübungen anzuwenden. Wir ziehen in Erwägung, insbesondere bei einer großen Zahl von Teilnehmern, zusätzliche Online-Sprechstunden anzubieten.

Dozenten: Prof. Dr. Steffen Börm, Dr. Leon Schramm

Ort und Zeit: Online, vom Montag, dem 28.09.2020, bis zum Freitag, dem 9.10.2020; Materialien bei OpenOlat, Live-Übungen und Live-Sprechstunden mit BigBlueButton 

Anmeldung: Bitte per Mail an Herrn Börm

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

Skript: Vorlesungsnotizen stehen als PDF-Datei zur Verfügung.

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

  • Montag, 28.09.2020:
    09:00 - 09:30 Begrüßung
    09:30 - 10:30 Vorlesung: Einschrittverfahren für gewöhnliche Differentialgleichungen
    10:30 - 12:00 Programmierübung: Simulation zeitabhängiger Vorgänge
    14:00 - 15:30 Vorlesung: Implizite Einschrittverfahren, Crank-Nicolson- und Leapfrog-Verfahren
    15:30 - 17:00 Programmierübung: Energieerhaltende Simulationen
  • Dienstag, 29.09.2020:
    09:00 - 10:30 Vorlesung: Verfahren höherer Ordnung
    10:30 - 12:00 Programmierübung: Numerische Integration
    14:00 - 15:30 Vorlesung: Runge-Kutta-Verfahren und Mehrschrittverfahren für gewöhnliche Differentialgleichungen
    15:30 - 17:00 Programmierübung bei BigBlueButton: Simulation eines Mehrkörpersystems, Simulation eines Räuber-Beute-Systems
  • Mittwoch, 30.09.2020:
    09:00 - 10:30 Vorlesung: Finite-Differenzen-Verfahren für partielle Differentialgleichungen
    10:30 - 12:00 Programmierübung: Numerische Behandlung der elektrostatischer Felder
    14:00 - 15:30 Vorlesung: Linienmethode für die Wärmeleitungsgleichung und die Wellengleichung
    15:30 - 17:00 Programmierübung: Simulation der Wellengleichung
  • Donnerstag, 1.10.2020:
    09:00 - 10:30 Vorlesung: Iterationsverfahren
    10:30 - 12:00 Programmierübung: Berechnung der Lagrange-Punkte im Sonnensystem
    14:00 - 15:30 Vorlesung: Krylow-Verfahren für große lineare Gleichungssysteme
    15:30 - 17:00 Programmierübung: Simulation der Wellengleichung mit dem Crank-Nicolson-Verfahren und einem CG-Löser
  • Freitag, 2.10.2020:
    09:00 - 10:30 Vorlesung: Mehrgitterverfahren
    10:30 - 12:00 Programmierübung: Simulation elektrostatischer Felder mit einem Mehrgitterverfahren
    14:00 - 15:30 Vorlesung: Verfahren für nicht-lokale Wechselwirkungen
    15:30 - 17:00 Programmierübung: Schnelle Berechnung der Kräfte in einem Vielkörpersystem

 

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, 5.10.2020:
    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
    14:00 - 15:30 Vorlesungsvideo: Task-basierte Parallelisierung
    15:30 - 17:00 Programmierübung: Task-parallele LR-Zerlegung
  • Dienstag, 6.10.2020:
    09:00 - 10:30 Vorlesung: Vektorisierung (Grundlagen, automatische Vektorisierung)
    10:30 - 12:00 Programmierübung: Vektorisierte numerische Integration, vektorisierte lineare Algebra
    14:00 - 15:30 Vorlesung: Explizite Vektorisierung (AVX, Intrinsics)
    15:30 - 17:00 Programmierübung: Simulation eines Vielkörpersystems mit Gravitation
  • Mittwoch, 7.10.2020:
    09:00 - 10:30 Vorlesung: Rechnen auf Grafikkarten (CUDA)
    10:30 - 12:00 Programmierübung: Simulation eines Vielkörpersystems auf einer Grafikkarte
    14:00 - 15:30 Vorlesung: Speicherhierarchien (Streams, Threadblöcke, gemeinsamer Speicher)
    15:30 - 17:00 Programmierübung: Quadratur auf einer Grafikkarte, Reduktionsoperationen
  • Donnerstag, 8.10.2020:
    09:00 - 10:30 Vorlesung: Verteiltes Rechnen (MPI)
    10:30 - 12:00 Programmierübung: Operationen auf verteilten 2D-Gitterfunktionen
    14:00 - 15:30 Vorlesung: Kollektive Kommunikation
    15:30 - 17:00 Programmierübung: Gebietszerlegungsverfahren in 2D
  • Freitag, 9.10.2020:
    09:00 - 10:30 Vorlesung:: Computersysteme des Kieler Rechenzentrums
    10:30 - 12:00 Programmierübung: Praktisches Arbeiten auf den Systemen des Rechenzentrums
    12:00 - 12:30 Abschließende Diskussion