Table of Contents

Praktikum „Parallele Programmierung“

Beschreibung

Um Mehrkernprozessoren und Multiprozessoren effizient zu nutzen, genügt es nicht, ein serielles Programm zu schreiben. Vierkernsysteme sind auch schon bei Arbeitsplatzrechnern weit verbreitet. Standards wie MPI und OpenMP, erlauben es, in den Programmiersprachen C(++) und Fortran Code zu schreiben, welcher auch auf Hochleistungsrechnern lauffähig ist.

Im Praktikum werden wir das parallele Programmieren mit MPI und OpenMP erlernen und auch eigenständige Anwendungen (z.B. Spielelöser) in Gruppen entwickeln. Beachten Sie auch unsere allgemeinen organisatorischen Hinweise zu Praktika.

Lernziel

Ziel des Praktikums ist es, aktuelle Parallelisierungskonzepte kennen zu lernen und Problemstellungen im Team zu bearbeiten. Die Studierenden gewinnen eine Übersicht über hilfreiche Werkzeuge zur Entwicklung und Bewertung von Anwendungen.

Zielgruppe

Das Projekt eignet sich für Studierende der Informatik in den Diplom- und Bachelorstudiengängen. Studierende anderer Studiengänge müssen die Anrechnung mit dem jeweiligen Prüfungsausschuss klären.

Interessierte Zuhörer sind auch herzlich willkommen.

Daten der Veranstaltung

Zeit Mi 10:00-11:30 Uhr
Ort DKRZ, Raum 034
Beginn Mi 02.06.2010
Vorbesprechung 01.04.2010 - 14 Uhr im DKRZ, Raum 034
Mailingliste PAPO-10

Dozenten

Vorgehen

Zunächst werden die Grundlagen theoretisch vermittelt und mit kleinen Beispielen geübt. Im zweiten Teil werden in kleinen Gruppen jeweils unterschiedliche Problemstellungen bearbeitet. Hierbei wird ein (kleiner) Projektplan erstellt und im Team eine Anwendung zur Problemlösung implementiert. Status und aufgetretene Probleme werden regelmäßig gemeinsam besprochen.

Verfügbare Problemstellungen

Für weitere Vorschläge sind wir offen. Wichtig ist vor allem die korrekte Parallelisierung (evtl. mit Alternativen) und Auswertung. Detaillierte Kenntnisse der Numerik sind nicht erforderlich.

Zeitplan und Materialien

  1. Theoretische Grundlagen (in der Vorlesungszeit)
    • 02.06.2010 - Architekturen, Programmierkonzepte von OpenMP und MPI, Versionsverwaltung, Anwendungsklassen, Gebietszerlegung und Aufgabenteilung.
      • Übung: erste Schritte mit OpenMP und MPI auf unserem Cluster, anlegen eines Repositories und Testbeispiele verwalten.
    • 09.06.2010 - Parallelisierung von Anwendungen, Einführung in GDB und Valgrind, Speichermanagment von C/Fortran, MPI, Individuelle und kollektive Operationen im Detail, nicht-blockierende Aufrufe
    • 16.06.2010 - Leistungsbewertung von Anwendungen, PGAS, MPI-I/O - Folien
    • 23.06.2010 - OpenMP, Programmanalyse Werkzeuge Folien
      • Übung: Verschiedene Code-Fragmente parallelisieren und die Leistung bewerten. Übungsblatt 3
    • 30.06.2010
      • Übung: Verschiedene Code-Fragmente parallelisieren und die Leistung bewerten. Sunshot bzw. Jumpshot zur Analyse verwenden. Programm mit Hardware-Countern laufen lassen und bewerten.
    • 07.07.2010 - Leistungsanalyse
      • PIOviz und PIOsim – wir simulieren unser Programm für ein alternatives System.
  2. Projektbearbeitung (in der vorlesungsfreien Zeit)
    • Projektvorstellung und Präsentation der algorithmischen Lösung und Projektplan
    • Statustreffen – Vorstellung der bisherigen Arbeiten und aufgetretene Probleme (2 Wochen später)
    • Statustreffen – Vorstellung der bisherigen Arbeiten und aufgetretene Probleme, erste Leistungsergebnisse (2 Wochen später)
    • Präsentation der Ergebnisse (2 Wochen später)

Ergebnisse

Literaturhinweise

Bücher