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
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
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 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 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