Masterpraktikum Scientific Computing - High Performance Computing - Winter 09
- Term
- Winter 09
- Lecturer
- Univ.-Prof. Dr. Hans-Joachim Bungartz,
Prof. Dr. Michael Bader,
Thomas Auckenthaler,
Wolfgang Eckhardt - Time and Place
- Dienstag, 15:15 bis 16:45 im Raum 02.07.023 (erstes Treffen am 20.10.)
- Audience
- Studierende im Masterstudiengang Informatik, Studierende der Informatik im Hauptstudium, Studierende der Techno-, Diplom- und Finanz-Mathematik
- Tutorials
- -
- Exam
- -
- Semesterwochenstunden / ECTS Credits
- 6 SWS / 10 Credits
- TUMonline
- {{{tumonline}}}
Inhalt
Leistungsfähige Programme, die die Eigenschaften schneller Rechnersysteme voll ausnutzen sind heute wichtige Wettbewerbsfaktoren in Forschung und Industrie. Die maximale Rechenleistung eines durchschnittlichen Arbeitsplatzrechners wurde in den letzten Jahren drastisch gesteigert. Begriffe wie SSE, EPIC, Dual-core, Multithreading usw. sprießen im Wettlauf der Hardwarehersteller wie Pilze aus dem Boden. Das Praktikum "Wissenschaftliches Rechnen" beschäftigt sich mit den Konzepten, die hinter diesen Schlagwörtern stehen, mit deren Einfluss auf den Entwurf und die Programmierung rechenintensiver Programme sowie mit der Implementierung dieser Programme auf leistungsstarken Rechnern und Rechenclustern.
Die Veranstaltung vermittelt den TeilnehmerInnen ein Verständnis für leistungsorientierte Datenstrukturen und Algorithmen der seriellen und parallelen Programmierung. Die Besonderheiten der einzelnen Plattformen werden besprochen und am Laufzeitverhalten numerischer Algorithmen verifiziert.
Konkrete Themen sind etwa:
- Performance-Optimierung sequentieller Programme
- Pipelining
- Loop unrolling
- Vermeidung von Datenabhängigkeiten
- Cache-Effizienz
- Cache blocking
- Performance-Messung
- Pipelining
- Vorstellung aktueller Hardware
- CPUs
- Speicherarchitekturen
- Supercomputer
- Parallele Programmierung
- Parallelisierung auf Systemen mit gemeinsamem Speicher (OpenMP)
- Parallelisierung auf Systemen mit verteiltem Speicher (MPI)
- Lastbalancierung
Das Praktikum gliedert sich in zwei Teile. Im ersten Teil werden die grundlegenden Begriffe, Konzepte und Programmiertechniken eingeführt. Hier sind auf jedem Übungsblatt mehrere Aufgaben teils theoretisch, teils praktisch von jeder Übungsgruppe zu lösen. Im zweiten Teil bearbeitet jede Übungsgruppe ein Projekt. Hier wird das im ersten Teil Erlernte an einem praktischen Beispiel angewandt. Nähere Informationen erhalten die Teilnehmer in der Vorbesprechung.
Einordnung
Masterpraktikum (Modul IN2106), Wahlpflichtpraktikum im Bereich theoretische Informatik (Modul IN8904)
Voraussetzungen
- Kenntnisse in der C-Programmierung unter Linux sind von Vorteil
Folien
- 20.10.2009: Vektorisierung
- 03.11.2009: Caches | Parallele Architekturen | OpenMP
- 17.11.2009: MPI
- 08.12.2009 CUDA
- 22.12.2009 Zeitplan
Übungsblätter
- 20.10.2009: Übungsblatt 1 | Code
- 03.11.2009: Übungsblatt 2 | Code
- 17.11.2009: Übungsblatt 3 | Code
- 08.12.2009: Übungsblatt 4 | CUDA-Exercises | CUDA-Exercise Instructions
- 22.12.2009: Projektaufgabe
Material
- MPI 2.2 Standard: http://www.mpi-forum.org/docs/mpi-2.2/mpi22-report.pdf
- OpenMP Tutorial: https://computing.llnl.gov/tutorials/openMP/
- Intel C++ Compiler Referenz: http://software.intel.com/sites/products/documentation/hpc/compilerpro/en-us/cpp/lin/main_cls_lin.pdf
- Intel Architecture Manuals: http://www.intel.com/products/processor/manuals/index.htm
- Nvidia Cuda Homepage: http://www.nvidia.de/object/cuda_what_is_de.html
Aktuelles
Nächstes Treffen am Dienstag, 12.01.2010