PD Stefan Bosse
Universität Bremen, FB Mathematik & Informatik
SS 2020
Version 2020-04-15 sbosse@uni-bremen.de |
Parallelisierung primär auf Kontrollpfadebene!
Grundlagen von parallelen und verteilten Systemen
Konzepte der parallelen und verteilten Programmierung
Praktische Relevanz und Anwendung
Plattformen und Technologien, Virtualisierung
Netzwerke, Nachrichten, und Protokolle (MPI,..)
Begleitet von Übungen um obige Techniken konkret anzuwenden
2 SWS mit Grundlagen und Live Programming
2 SWS mit Programmierung und angewandter Vertiefung
Grundlegende Programmierfähigkeiten, Grundkenntnisse in Rechnerarchitektur und Netzwerken
Informatiker
Systemingenieure (Systems Engineering)
Produktionstechniker und Logistiker
Elektrotechniker
[tiridifilm/istockphoto.com]
Die Vorlesungsinhalte (Skript, Folien) werden auf http://edu-9.de unter der Rubrik Lehre zusammengestellt und angeboten
Weitere Materialien (Tutorials, Übungen, Software) werden ebenfalls auf http://edu-9.de bereitgestellt
Die Videos sind über http://edu-9.de verlinkt und sind auf http://ag-0.de verfügbar (opencast Server)
Interkation der Teilnehmer findet über einen Wiki statt! (dokuwiki). Dieser ist über http://ag-0.de erreichbar und in den jeweiligen Veranstaltungsseiten auf http://edu-9.de verlinkt.
Es wird noch einen online Chat geben.
Alle weiteren Hinweise und Einführungen (z.B. in Software) nur noch auf dem Wiki!!!
Folgende Möglichkeiten einer Prüfungsleistung stehen zur Auswahl:
Mündliche Prüfung (über mindestens die Hälfte der Modulblöcke)
Schriftliche Ausarbeitung zu einer Fragestellung zu dem Thema (Review/Survey)
Die Bearbeitung einer experimentellen Arbeit (Lua)
|
|
|
|
threads.lua/parallel.lua
| lvm
|
pipe
|
Verständnis der Grundprinzipien und Architekturen verteilter (VS) und paralleler Systeme (PS) und Fähigkeit zum Transfer auf technische Systeme
Verständnis und Fähigkeit der programmatischen Anwendung von Synchronisation und Kommunikation in VS und PS
Verständnis der Probleme und dem Betrieb von parallelen Systemen im Vergleich zu sequenziellen Systemen (Effizienz, Blockierung, Skalierung, Ressourcenbedarf)
Praktische Kenntnisse der Programmierung von PS und VS anhand von Programmierübungen mit Lua und lvm (LuaJit)
Erkenntnisse von Grenzen und Möglichkeiten der Parallelisierung und Verteilung und die Fähigkeit effiziente Systeme zu entwickeln → Virtuelle Maschinen!
Vorbereitung für Methoden und zukunftige Trends im Cloud Computing und Internet der Dinge
local s = {Semaphore(1),Semaphore(1),Semaphore(1)} local b = Barrier(3) Par({ function () b:await(); for i = 1,10 do s[1]:down(); s[2].down(); eat(); s[2]:up(); s[1]:up(); think() end end, function () b:await(); for i = 1,10 do s[2]:down(); s[3]:down(); eat(); s[3]:up(); s[2]:up(); think() end end, function () b:await(); for i = 1,10 do s[3]:down(); s[1]:down(); eat(); s[1]:up(); s[3]:up(); think() end end }) print('Done.')
In diesem Kurs soll die Programmierung mit der Skriptsprache Lua erfolgen und mit der virtuellen Maschine lvm ausgeführt
Der Lua Quelltext wird durch einen Übersetzer in Bytecode übersetzt der von lvm direkt ausgeführt wird.
Die LuaJit VM (lvm) unterstützt parallele Datenverarbeitung und das Konzept der Prozessblockierung
Kontrollpfadparallelität benötigt i.A. Kommunikation und das Konzept der Blockierung!
Formales Ausführungsmodell: Communicating Sequential Processes (CSP)
Programmfluß = Kontrollfluß + Datenfluß