Computational Science
Erster Termin
-
Dienstag 20.04. um 16:15 im Raum 120 (Helmholtzstrasse 18)
Inhalt der Vorlesung:
-
Effiziente Implementierung numerischer Verfahren unter Ausnutzung
moderner Hardware:
-
Parallelisierung mit Threads (mit pthreads)
-
Parallelisierung auf Clustern (mit MPI)
-
der GPU (mit OpenCL, CUDA)
-
Entwicklung der Verfahren als wiederverwendbare Softwarebausteine
-
Anwendung und Vergleich der implementierten Verfahren
-
Anwendung der Verfahren in Lösern partieller Differentialgleichungen
-
Laufzeitvergleiche der Verfahren mit etablierten, hoch-optimierten
Implementierungen:
-
BLAS Implementierungen: ATLAS, GotoBLAS, Sun Performance Library
-
LAPACK, ScaLAPACK, PLAPACK
Vorraussetzungen:
-
Grundkenntnisse in Numerik
-
Programmierkenntnisse in C
-
Kenntnisse im Umgang mit Unix
-
Vorteilhaft:
-
Systemnahe Software I/II
-
Rudimentäre C++ Kenntnisse
Der Aufbau der Vorlesung ist in drei Teile gegliedert.
Teil: Numerische Verfahren (Michael Lehn)
-
Direkte Verfahren: LU, Cholesky, QR, ...
-
Damit dies nicht zu trivial erscheint:
-
Es gibt 5 Varianten zur Berechnung der LU Zerlegung
-
Die Bekannteste ist die von Gauss.
-
Allerdings ist die Methode nach Gauss am wenigsten
geeignet für eine parallele oder cache-optimierte Implementierung.
-
Wir wollen alle untersuchen, implementieren und vergleichen!
-
Iterative Verfahren: cg (conjugated gradient method), pcg, ...
-
Theorie der Verfahren
-
Effiziente Implementierung unter Ausnutzung spezieller Strukturen der
Systemmatrizen
-
Dient zusätzlich als Motivation für:
-
Ein high-level Interface für lineare Algebra Operationen ohne
Beeinträchtigung der Effizienz
-
Ausnutzung besonderer Aspekte von C++
-
Effiziente Implementierung einer C++ Bibliothek
-
Implementierung wiederverwertbarer Komponenten
-
Erweiterbarkeit einer solchen Bibliothek
-
Verfahren zum Lösen partieller Differentialgleichungen
-
Theorie
-
Implementierung der diskreten Löser mittels der zuvor
entwickelten numerischen Verfahren.
-
Wir erhalten somit insbesondere Benchmarks für reelle Anwendungen
In diesem Teil beschäftigen wir uns bereits intensiv mit der Implementierung der
Verfahren.
Teil: Techniken der Parallelisierung (Andreas Borchert)
-
Parallele Architekturen
-
Techniken zur Parallelisierung:
-
POSIX-Threads
-
OpenMP
-
MPI
-
CUDA (Parallelisierung auf Grafik-Karten)
Teil: Parallelisierung Numerischer Verfahren und Anwendungen (Michael Lehn)
-
Parallelisierung der Verfahren aus Teil 1 unter Anwendung der
Techniken aus Teil 2.
Organisatorisches
-
Vorlesung:
-
Dienstag 16-18, Raum 120, Helmholtzstraße 18
-
Freitag 14-16, Raum 120, Helmholtzstraße 18
-
Übungen:
-
Freitag 16-18, Raum 120, Helmholtzstraße 18
-
Erste Vorlesung:
-
Dienstag 20.04. um 16:15 im Raum 120 (Helmholtzstrasse 18)
-
Vom ersten Teil wurden Kopien des handschriftlichen Skripts ausgeteilt
(und sind auf Wunsch weiterhin erhältlich).
-
Folien zum zweiten Teil
-
FLENS
-
MPI Dokumentation
-
Hier weitere Seiten, die nützliche Referenzen enthalten: