Kurs Verteilte und Parallele Programmierung

Synopsis

VAK 03-ME-712.06 Ersatz im SS20
(VAK 04IN2052 / 432052)
Kategorie: Kurs (Vorlesung mit integrierter Übung), 4 SWS
Master Kurs
ECTS: 6, Sommer Semester
(Universität Koblenz-Landau 2018/2019)
Universität Bremen
Dozent: PD Dr. Stefan Bosse

Medien

Medium Folien Datum Description
Wiki Interaktiver DokuWiki - Diskussionsplattform
Video - 21.04.20 Einführung in den Wiki
Video vpp2k0.html 22.04.20 0 - Überblick
Video vpp2kA.html 30.04.20 A1 - Einführung in parallele und verteilte Datenverarbeitung
Video Teil 1
Video Teil 2
vpp2kAP.html 13.05.20 AP 1/2 Einführung in die Parallele Programmierung mit Virtuellen Maschinen
Video Teil 1
Video Teil 2
vpp2kB.html 20.05.20 B 1/2 Das Prozessmodell und CSP
- - 27.05.20 fällt aus!
Video Teil 1
Video Teil 2
vpp2kC.html 02.06.20 C 1/2 Zustands-raum Diagramme und Petri Netze
Video vpp2kD.html 10.06.20 D - Parallele Programmierung
Video vpp2kE.html 10.06.20 E - Parallele Programming mit Lua und Csp.lua
tutorial9.html - 17.06.20 Praktische Übung mit Lua/Csp - siehe Tutorial9
Video
tutorial10.html
test2.png
vpp2kF.html 01.07.20 Modul F - Synchronisation und Kommunikation, und praktische Übung mit Lua/Csp - siehe Tutorial10
Video vpp2kG.html 08.07.20 Modul G - Parallelisierung und Metriken
- vpp2kH.html 15.07.20 Modul H - Plattformen und Netzwerke (Selbststudium)
- vpp2kI.html 15.07.20 Modul I - Verteilte Programmierung und Systeme (Selbststudium, optional)

Materialien

File Version Description
lua_tutorial.pdf 2015 Lua Tutorial
vpp2k.script.pdf 23.07.20 Skript 2020

Software

Hinweis: Unter Linux müssen heruntergeladene Programme ausführbar gemacht werden: chmod a+x lvm


File Version Description
lvm LVM 1.1.7 LuaJIT+ 2.0.5X2.3 Lua 5.1X2.1 LUV 2.7.2 -- Build Jul 07 2020 Parallel LuaJit VM, Linux x86 32bit
lvm LVM 1.1.7 LuaJIT+ 2.0.5X2.3 Lua 5.1X2.1 LUV 2.7.2 -- Build Jul 07 2020 Parallel LuaJit VM, Linux x64 64bit
lvm LVM 1.1.7 LuaJIT+ 2.0.5X2.3 Lua 5.1X2.1 LUV 2.7.2 -- Build Jul 07 2020 Parallel LuaJit VM, Solaris x86 32bit
lvm.exe LVM 1.1.7 LuaJIT+ 2.0.5X2.3 Lua 5.1X2.1 LUV 2.7.2 -- Build Jul 07 2020 Parallel LuaJit VM, Windows 32bit
lvm LVM 1.1.7 LuaJIT+ 2.0.5X2.3 Lua 5.1X2.1 LUV 2.7.2 -- Build Jul 09 2020 Parallel LuaJit VM, Mac OSX (≥10.7) 64bit
weblvm.lua 1.1.7 WEB Server for lvm

Übungen/Arbeitsaufträge

File Version Description
tutorial5.html
test.png
08.05.2020 Interaktive Übung Zelluläre Automaten
tutorial6.html 08.05.2020 Interaktive Übung JavaScript
tutorial9.html 31.07.2020 Interaktive Übung Parallel Lua/Csp Teil 1
tutorial10.html
test2.png
31.07.2020 Interaktive Übung Parallel Lua/Csp Teil 2

Zusammenfassung

Dieser Kurs behandelt eine praktische und nicht formale Einführung in die parallele und verteilte Programmierung. Im Gegensatz zu anderen Kursen zur parallelen Datenverarbeitung konzentriert sich dieser Kurs auf die Parallelität von Kontrollpfaden und die Kommunikation zwischen Prozessen (ist jedoch nicht darauf beschränkt).

Lerninhalte

  1. Einführung von Multiprozessmodellen mit Prozessalgebra und Prozessflussdiagrammen basierend auf dem CSP-Modell von Hoare
  2. Erweiterung des CSP-Modells um Wettbewerb und gemeinsame Ressourcen; Konfliktlösung
  3. Einführung von Parallelen und verteilten Programmiersprachen (OCCAM, Functional Programming, Multithreading, MPI, Lua, JavaScript)
    • Prozesse
    • Threads
    • Koroutinen (Fibers)
    • Ausdrücke
  4. Virtuelle Maschinen und Parallelität. Passt es zusammen? Herausforderungen und Lösungen.
  5. Synchronisation und Kommunikation zwischen Prozessen; Fehler wie Deadlocks und Blockierung (Starvation); Eigenschaften paralleler und verteilter Systeme
  6. Synchronisationsobjekte und ihre Anwendung in der Programmierung {Mutex, Semaphor, Monitor, Ereignis, Warteschlange, Barriere, Kanal}
  7. Computerarchitekturen für parallele und verteilte Systeme (MultiCore, GPU, Cluster)
  8. Möglichkeiten der Parallelisierung und Verteilung gängiger Algorithmen und Programme
  9. Formale Grundlagen paralleler Systeme; Metriken; Effizienz; Skalierung
  10. Wahl, Führer, Konsensalgorithmen und Gruppenkommunikation

Ziele / Kompetenzen

Die Studenten erwerben / gewinnen / lernen

  1. Verständnis der Grundprinzipien und Architekturen verteilter (VS) und paralleler Systeme (PS) und der Fähigkeit zur Übertragung auf technische Systeme
  2. Verständnis und Fähigkeit der programmatischen Anwendung von Synchronisation und Kommunikation in VS und PS über das Prozessmodell (und der Lua Skriptsprache)
  3. Verständnis der Probleme und des Betriebs paralleler Systeme im Vergleich zu sequentiellen Systemen (Effizienz, Blockierung, Skalierung, Ressourcenanforderungen), gerade in Hinblick auf Virtuelle Maschinen
  4. Praktische Kenntnisse in der Programmierung von PS und VS mithilfe von Programmierübungen mit Lua und LuaJit/LVM
  5. Einblicke in die Grenzen und Möglichkeiten der Parallelisierung und Verteilung sowie in die Fähigkeit, effiziente Systeme zu entwickeln