Parallele Programmierung
VL+UE 12 113 11653 CS 653 - Parallele Programmierung
Prof. Dr. R. Loogen
Montags, 16.15 - 18.00 Uhr, Achtung, neu ab 27. Oktober 2008: LE HS IIIa (Lahnberge)
Dienstags, 16.15 - 18.00 Uhr, LE HS IV (Lahnberge)
Beginn: 13. Oktober 2008
Übungen: Mischa Dieterle
Freitags, 11.15 - 13 Uhr
Tutor
RaumE-Mail
Johannes May HS I (Ebene A3, Lahnberge) jmay at mathematik
Mischa Dieterle: HS IIIa (Ebene A4, Lahnberge) dieterle at mathematik
Beginn: 17. Oktober 2008
Fachgebiet Klassifikation Semester Fortsetzung Skript
Theoretische Informatik Hauptstudium >=3 evtl.

Voraussetzungen: Gute Programmierkenntnisse, von Vorteil sind Kenntnisse in C und Linux
Querverbindungen: -
Scheinkriterien: Voraussetzungen für einen unbenoteten Schein:
  1. aktive Teilnahme an den Übungen
  2. erfolgreiche Bearbeitung von mindestens 50 % der Übungsaufgaben
  3. erfolgreiche Präsentation der Lösungen von Übungsaufgaben
Für einen benoteten Schein muss zusätzlich ein Kolloquium bestanden werden. Die Kolloquiumsprüfungen finden am 9. und 10. Februar von 16 bis 18 Uhr statt.


Literatur:
  • I. Foster: Designing and Building Parallel Programs, Addison Wesley 1995
  • M. Quinn: Parallel Programming in C with MPI and OpenMP, Mc Graw Hill 2003>
  • Ananth Grama, Anshul Gupta, George Karypis, Vipin Kumar: Introduction to Parallel Computing, Addison-Wesley, 2. Auflage, 2003.
  • Thomas Bräunl: Parallele Programmierung - Eine Einführung, McGraw Hill 1994
  • Thomas Rauber, Gudula Rünger: Parallele und verteilte Programmierung, Springer-Verlag 2000
  • Gregory R. Andrews: Foundations of Multithreaded, Parallel, and Distributed Programming Addison-Wesley, 2000 (ISBN 0-201-35752-6)
  • Joseph Jaja: An Introduction to Parallel Algorithms, Addison Wesley 1992
  • A. Gibbons, W. Rytter: Efficient Parallel Algorithms, Cambridge University Press 1988
Vorlesungsfolien 1. Einführung (Druckversion)
2. Die PCAM-Methode (Druckversion)
3a. Synchronisation mit Semaphoren (Druckversion)
3b. Synchronisation mit Monitoren (Druckversion)
3c. Synchronisation mit Nachrichten (Druckversion)
3d. Abstraktere Kommunikationskonstrukte (Druckversion)
4. Parallele Algorithmen (4.11.2008) Matrixmultiplikation im Hypercube, Paralleles Sortieren (Druckversion)
4b. Dynamische Aufgabenverwaltung (Druckversion)
5. PThreads - Thread-basierte Programmierung von Multicore-Systemen (Druckversion)
6. Der OpenMP-Standard (Druckversion)
7. MPI - Message Passing Interface (Druckversion)
8. HPF - High-Performance FORTRAN (Druckversion)
9. Algorithmische Skelette (Druckversion)
10. Alternative Ansätze (Druckversion)
Programme MPD: Java: PThreads (siehe auch PThreads Tutorial): OpenMP (siehe auch openmp.org, OpenMP Summary Card ): MPI (siehe auch MPI Forum, Open MPI)
  • Testprogramm: test.c
  • Hello World: hello.c
  • Berechnung von Pi (numerische Integration): cpi.c
  • Berechnung von pi (Monte Carlo Approximation): monte.c
  • N-Körper-Problem: nbody.c
HPF

Übungsblätter: ...erscheinen freitags zum Tutorium. Die Aufgaben sind am darauffolgenden Freitag abzugeben.

Blatt 1, 17.10.2008
Blatt 2, 24.10.2008
Blatt 3, 31.10.2008 (sync.mpd)
Blatt 4, 14.11.2008
Blatt 5, 21.11.2008 (Für A5.3: shortpath.mpd, worker.mpd, adjMatrix.txt)
Blatt 6, 28.11.2008
Blatt 7, 05.12.2008
Blatt 8, 12.12.2008 (Für A8.1: Rolf Rabenseifner)
Blatt 9, 16.01.2009
Blatt 10, 30.01.2009 Letztes Blatt! Abgabe Mittwoch, 4.2.2009

Links: Programmiersprache MPD: (am Fachbereich unter /app/lang/parallel/mpd zu finden)

MPD-StartseiteSprachübersichtOperatoren und Funktionen (PDF, lokal)Beispielprogramme (lokal) 

MPD Syntax-Highlighting
OpenMP API: Die Ofizielle Seite zu OpenMP enthält nützliche Informationen und Materialien zur Programmierschnittstelle wie z.B. eine kompakte Zusammenfassung des OpenMP 3.0 Standards. Weitere Informationen finden sich auch bei wikipedia.
MPI (Message Passing Interface): Der MPI-Standard (siehe auch unter wikipedia) definiert ein Interface für den Datenaustausch mit verteiltem Speicher. Im wesentlichen sind zwei Implementierungen relevant:
  • Open MPI (am Fachbereich: /app/lang/parallel/openmpi-1.2.8) ist aus verschiedenen Implementierungen vergangener Jahre hervorgegangen, unter anderem aus Los-Alamos-MPI und LAM-MPI (letzere ebenfalls am Fachbereich unter /app/lang/parallel zu finden)
  • Daneben gibt es MPICH, die erste Implementierung überhaupt. Federführende Autoren des Standards waren hier beteiligt.

Zusätzliches Material - lokal:

C-Programmierung: (Wikipedia: Infos über die Sprache C)
Es gibt unzählige Webseiten, die bei der Programmierung in C helfen können.
Explizit genannt sei hier (willkürlich ausgewählt): Material von wikibooks(nicht sehr ausführlich), ein Online-Buch, eine kürzere Zusammenfassung, der Online Kurs C++ (was eigentlich nicht C ist!) unseres Fachbereichs, sowie der Obfuscated C Code Contest.


Inhalt:
  1. Modelle der Parallelverarbeitung
  2. Entwurf paralleler Programme
  3. Grundkonzepte paralleler Programmierung
    -> Die nebenläufige Programmiersprache MPD
    Synchronisation und Kommunikation
    • über gemeinsame Variablen
    • über Nachrichten
  4. Parallele Algorithmen
  5. Thread-basierte Programmierung von Multicore-Systemen
  6. Programmierung speichergekoppelter Multiprozessoren
    -> Der OpenMP-Standard
  7. Programmierung nachrichtengekoppelter Multiprozessoren
    -> Die MPI-Bibliothek (Message-Passing-Interface)
  8. Datenparallele Programmierung
    -> Die datenparallele Sprache HPF (High Performance Fortran)
  9. Algorithmische Skelette
  10. Alternative Ansätze zur parallelen Programmierung


Zuletzt geändert: Tuesday, 03-Feb-2009 11:02:18 CET