Inhalt
Diese Vorlesung behandelt die Parallelisierung für Computercluster. Konzepte der Programmierung für Systeme mit verteiltem Speicher (MPI) werden eingeführt und best-practice Implementierungen anhand von Anwendungen aus dem wissenschaftlichen Rechnen - wie die Finite Elemente Methode und maschinelles Lernen - besprochen.
Besondere Beachtung finden skalierbare Löser für Gleichungssysteme auf Systemen mit verteiltem Speicher mit Fokus auf iterativen Verfahren wie einfache Splitting-Verfahren (Richardson, Jacobi, Gauß-Seidel, SOR), Krylov-Raum-Methoden (Gradientenabstieg, CG, BiCGStab) und besonders das Mehrgitterverfahren. Die mathematischen Grundlagen für die Gleichungslöser werden besprochen, sinnvolle Interfacestrukturen für eine objektorientiere Umsetzung herausgearbeitet und eine Implementierung dieser Löser auf modernen Parallelrechnern entwickelt.
Anhand von numerischen Experimenten und eigenen programmtechnischen Umsetzungen werden die theoretischen Inhalte vertieft und veranschaulicht.
Kursinformationen
Inhalt
The lecture covers programming concepts such as
Furthermore, fundamental data structures as well as efficient algotihms are presented, relevant software libraries are surveyed, and the organization of software projects is discussed,
In hands-on sessions, programming exercises are used to discuss and illustrate the presented content, employing the Python programming language for selected scientific applications.
Kursinformationen
Inhalt
Die Vorlesung bietet eine Einführung in die C++-Programmierung. Grundlegende Programmierkonzepte wie Typen, Anweisungen, Funktionen, Zeiger, Speicherverwaltung und Datenstrukturen werden vorgestellt. Best Practices sowie die Organisation und Entwicklung von C++-Projekten werden besprochen. Es wird eine Einführung in C++-Compiler, Debugging-Konzepte und Entwicklungswerkzeuge gegeben.
In praktischen Sitzungen werden Programmierübungen verwendet, um die vorgestellten Inhalte zu diskutieren und zu illustrieren.
Kursinformationen
Die Vorlesung befasst sich mit der Theorie und Anwendung von Quantencomputern aus der Perspektive der Computerwissenschaften, wobei der Schwerpunkt auf der Verwendung heutiger Quantenhardware liegt.
Die relevanten Grundlagen der Quantenmechanik einschließlich Superposition, Messung, Interferenz, Verschränkung und mathematischer Notation werden vorgestellt. Die Eigenschaften von Quantenbits und -registern werden diskutiert und der Aufbau und die Eigenschaften von Quantengattern und Quantenschaltungen vorgestellt. Prominente Beispiele für Quantenalgorithmen werden betrachtet, einschließlich Algorithmen basierend auf Quanten-Fourier-Transformation (z. B. Shors Faktorisierung), Quantensuche (z. B. Grover), Quantenlösung linearer Gleichungssysteme (z. B. HHL) und quantenbasiertes maschinelles Lernen. Aktuelle Quantencomputerhardware sowie Quantenfehlerkorrektur werden diskutiert.
Es wird eine Einführung in Quantenprogrammiersprachen und -umgebungen gegeben. Praktische Programmierübungen und selbst implementierte Quantenschaltungen in Studienprojekten werden verwendet, um den theoretischen Inhalt zu diskutieren und zu veranschaulichen. Implementierungen werden auf Quantensimulatoren und Cloud-basierter Quantenhardware getestet.
Kursinformationen
Inhalt
Die Vorlesung behandelt die Parallelisierung auf Multicore-Prozessoren. Es werden Konzepte und Techniken der Thread-basierten Programmierung, einschließlich pthreads, C++11 Threads, OpenMP und SYCL, vorgestellt und bewährte Verfahren anhand von Anwendungen aus dem wissenschaftlichen Rechnen aufgezeigt.
Es wird ein Überblick über die relevanten Hardware-Aspekte einschließlich Multicore-Architekturen und Speicherhierarchien gegeben. Eine ausführliche Einführung in die Multi-Thread-Programmierung auf Multicore-Systemen mit besonderem Schwerpunkt auf der Shared-Memory-Parallelisierung wird gegeben und Parallelisierungsmuster, Thread-Management und Speicherzugriffsstrategien werden diskutiert.
In praktischen Sitzungen werden Programmierübungen verwendet, um die vorgestellten Inhalte zu diskutieren und zu illustrieren.
Kursinformationen
Inhalt
Die Vorlesung behandelt fortgeschrittene Themen der C++-Programmierung. Objektorientierte Programmierkonzepte wie Klassen, Vererbung und Polymorphismus sowie generische Programmierkonzepte wie Templates werden vorgestellt. Die Standard Template Library (STL) und ausgewählte Funktionalitäten von C++14 und höher werden vorgestellt. Best Practices sowie die Organisation und Entwicklung von fortgeschrittenen C++-Projekten werden besprochen.
In praktischen Sitzungen werden Programmierübungen verwendet, um die vorgestellten Inhalte zu diskutieren und zu illustrieren.
Kursinformationen
Inhalt
Die Vorlesung behandelt Konzepte und Techniken des Deep Learning, einschließich:
In praktischen Sitzungen werden die vorgestellten Inhalte anhand von praktischen Übungen diskutiert und veranschaulicht.
Kursinformationen
Inhalt
Die Vorlesung behandelt fortgeschrittene Diskretisierungstechniken, die über die konventionellen Finite-Elemente-Methoden zur Lösung partieller Differentialgleichungen hinausgehen, wie die Finite-Zellen-Methode (FCM) und die Isogeometrische Analyse (IGA). Dabei werden jeweils die mathematische Formulierung sowie die Implementierungsaspekte der Methode diskutiert und mit konventionellen Methoden verglichen. Darüber hinaus werden die Stärken und Schwächen jeder Methode hervorgehoben, sodass ihre Eignung für ein bestimmtes Problem beurteilt werden kann.
Kursinformationen