Hauptinhalt

Verteilte Programmierung und numerische Algorithmen

Vorlesung SS 2022 (2 SWS Vorlesung, Nr. 042415, 2 SWS Übung, Nr. 042416 )

Verteilte Programmierung und numerische Algorithmen

Zeit:    
  • Mi  10:15 - 12:00, OH 16 - R. 205 (Vorlesung)
  • Mo 16:15 - 18.00, OH 16 - R. 205 (Übung)

 

 

Veranstalter:

Peter Buchholz (Tel.: (0231) 755 4746),

Email: peter.buchholz@udo.edu

Sprechstunde: Donnerstag 10:00-11.30 und n.V.

 

Inhalt der Vorlesung:

Die Vorlesung führt in die Grundlagen der parallelen Programmierung ein. Dazu wird ein kurzer Überblick über parallele Rechnerarchitekturkonzepte gegeben. Anschließend beschäftigen wir uns mit theoretischen Konzepten zur Realisierung und Bewertung paralleler Programme. Den Schwerpunkt der Vorlesung bilden konkrete Programmierkonzepte und -bibliotheken zur Realisierung paralleler Software. Dazu werden der Standard MPI zur  so genannten Message-Passing-Programmierung, sowie Pthreads und OpenMP zur Thread-Programmierung vorgestellt. Auch wenn Anbindungen der genannten Programmierumgebungen an unterschiedliche Programmiersprachen existieren, sind die Sprachen C und C++ doch die am weitesten verbreiteten Sprachen zur Realisierung paralleler Programme. Die Vorlesung nutzt deshalb C und C++ als Basissprachen und stellt die konkreten Algorithmen in diesen Sprachen vor. Grundkenntnisse in C und/oder C++ werden deshalb vorausgesetzt oder müssen vor Beginn des praktischen Teils der Vorlesung erworben werden.

Anwendungsbeispiele werden insbesondere aus dem Bereich der numerischen Mathematik gewählt, da diese Anwendungen ein sehr großes Parallelisierungspotenzial besitzen. Es werden nur numerische Basisprobleme wie die Multiplikation von Matrizen oder die Lösung linearer Gleichungssysteme untersucht, so dass über die im Informatikstudium üblichen Mathematikkenntnisse hinaus keine weiteren spezifischen Vorkenntnisse erforderlich sind.

 

Gliederung der Vorlesung
1) Einführung  Folien
2) Parallele Rechnerarchitekturen  Folien
3) Parallele Programmiermodelle  Folien
4) Message-Passing-Programmierung mit MPI  Folien
5) Thread-Programmierung mit Pthreads  Folien
7) Beispiele paralleler Algorithmen Folien 

Folien werden vorlesungsbegeitend zur Verfügung gestellt!

Übungen

In den Übungen sollen die theoretischen und konzeptionellen Inhalte der Vorlesung vertieft werden. Insbesondere soll das praktische Abreiten in den drei behandleten Programmierumgebungen eingeübt werden. Dies setzt voraus, dass die Teilnehmerinnen und Teilnehmer, die Übungsaufgaben praktisch bearbeiten, also wirklich Programmieren! MPI, Pthreads und openMP sind als freie Software unter Linux verfügbar.

Die Bearbeitung der Übungsaufgaben ist nicht Voraussetzung für die Modulprüfung, wird aber trotzdem dringend empfohlen.

Datum Inhalt Ü-Blatt
28.10. Blatt 1 (Verbindungsnetzwerke, Einbettungen) Blatt 1 
 4.11. Blatt 2 (Verbindungsnetzwerke, Routing) Blatt 2  
11.11.  Blatt 3 (Caches)  Blatt 3 
18.11. Blatt 4 (Paralelitätskonzepte) Blatt 4 
25.11.   Blatt 5 (Parallele Vektor-Matrix-Algorithmen) Blatt 5 
2.12. Blatt 6 (Kommunikationsoperationen) Blatt 6 
16.12. Blatt 7 (MPI) Blatt 7 
13.1. Blatt 8 (MPI, Pthreads) Blatt 8
 27.1. Blatt 9 (Pthreads, OpenMP)  Blatt 9 

Am 20.1. keine allgemeine Übung, sondern individuelles Arbeiten an den Programmieraufgaben.

Übungsblätter werden als pdf-Dateien übungsbegleitend zur Verfügung gestellt.

Literatur

Die Vorlesung basiert im Wesentlichen auf dem folgenden Buch

  • T. Rauber, G. Rünger. Parallele Programmierung. Springer 3. Aufl. 2012

Das Buch ist als eBook in der TU-Bibliothek frei verfügbar.

Weitere relevante Bücher

  • P. Pacheco. An Introduction to Parallel Programming. Morgan Kaufman 2011.
  • D. P. Bertsekas, J. N. Tsitsiklis. Parallel and Distributed Computation - Numerical Methods. Prentice Hall 1989.

Web-Seiten zur den verwendeten Programmierbibliotheken