Mit Virtuellen Maschinen
PD Stefan Bosse
Universität Bremen - FB Mathematik und Informatik
PD Stefan Bosse - VPP - Überblick ::
PD Stefan Bosse - VPP - Überblick :: Schwerpunkte in diesem Kurs
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,..)
PD Stefan Bosse - VPP - Überblick :: Schwerpunkte in diesem Kurs
Begleitet von Übungen um obige Techniken konkret anzuwenden
PD Stefan Bosse - VPP - Überblick :: Zielgruppen des Kurses
tiridifilm/istockphoto.com
PD Stefan Bosse - VPP - Überblick :: Materialien
Die Vorlesungsinhalte (Skript, Folien) werden auf http://edu-9.de unter der Rubrik Lehre zusammengestellt und angeboten. Achtung: Kürzel vpp3k beachten!
Weitere Materialien (Tutorials, Übungen, Software) werden ebenfalls auf http://edu-9.de bereitgestellt
Es gibt einige Videos und sind über http://edu-9.de erreichbar
Es gibt eine Mailing Liste (ZfN) über die aktuelle Informationen versendet werden (Updates, Ankündigungen). Eine Anmeldung ist nicht erforderlich.
PD Stefan Bosse - VPP - Überblick :: Leistungen
Folgende Möglichkeiten einer Prüfungsleistung stehen zur Auswahl:
Mündliche Prüfung
Schriftliche Ausarbeitung zu einer Fragestellung zu dem Thema (Review/Survey)
Die Bearbeitung einer experimentellen Arbeit (Lua) mit kleiner schriftlicher Arbeit (Dokumentation)
PD Stefan Bosse - VPP - Überblick :: Literatur
PD Stefan Bosse - VPP - Überblick :: Literatur
PD Stefan Bosse - VPP - Überblick :: Software
LuaJit
Fengari VM
PD Stefan Bosse - VPP - Überblick :: Software
lvm
> lvm parfib.luaThread [fe5af458:4] releasedThread [fe5afa00:5] released{ 1 = 9227465, 2 = 24157817, 3 = 63245986, 4 = 165580141, 5 = 14930352, 6 = 39088169, 7 = 102334155, 8 = 267914296,}
686478381
Time 6235 ms
PD Stefan Bosse - VPP - Überblick :: Software (Optional)
LuaOS Web IDE
VNetOS Web IDE
PD Stefan Bosse - VPP - Überblick :: Software (Bilbiotheken)
parallel.lua (In lvm bereits integriert)
require('parallel')local function worker (id,set) local results = T{} for i = 1,#set do results:push(fib(set[i])) end return resultslocal data = {34,35,36,37,38,39,40,41}local p = Parallel:new(data,options)p:time(): map(worker): reduce(sum): apply(print): time()
PD Stefan Bosse - VPP - Überblick :: Software (Bilbiotheken)
csp.lua (In lvm bereits integriert)
require('Csp')Par({ function (pid) local x=ch1.read(); ch2.write(fib(x)) end, function (pid)
Seq({ function () .. end, function () .. end }) end function (pid) Seq({..}) end},{ ch1:Channel(1), ch2:Channel(1))
PD Stefan Bosse - VPP - Überblick :: Software
rpc.lua
local rpc = Rpc({verbose=2})rpc:getreq('127.0.0.1',12345,function (req) print(req) return { result=req.x+req.y, stat='OK' }end)local stat,reply = rpc:trans('127.0.0.1',12345, {x=1,y=2})print(reply)
PD Stefan Bosse - VPP - Überblick :: Konzept
PD Stefan Bosse - VPP - Überblick :: Ziele
PD Stefan Bosse - VPP - Überblick :: Inhalte
PD Stefan Bosse - VPP - Überblick :: Virtuelle Maschinen
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.')
PD Stefan Bosse - VPP - Überblick :: Virtuelle Maschinen und Interpreter
Interpreter Zyklus: Editieren → Übersetzen → Ausführen
PD Stefan Bosse - VPP - Überblick :: Just-in-Time Compiler
Interpreter können im wesentlichen auf drei Arten (Architekturklassen) implementiert werden:
Direkte Ausführung des Quelltextes (die Nutzereingabe und bereits geschriebene Skripte) (Parse → Execute)
Virtuelle Maschine und Übersetzung des Quelltextes in eine Zwischenrepräsentation die von einer virtuellen Maschine ausgeführt werden kann → Bytecode
Virtuelle Maschine mit Bytecode Übersetzung, Ausführung des Bytecodes, und ausgewählter Übersetzung des Bytecodes in nativen Maschinencode → JIT Compiler!
PD Stefan Bosse - VPP - Überblick :: Just-in-Time Compiler
Virtuelle Maschine: Virtualisierung ≡ Abstraktion und Automatisches Speichermanagement
Parallelisierung der Datenverarbeitung von VM schwierig, Verteilung hingegen ist prinzipiell moglich.
PD Stefan Bosse - VPP - Überblick :: Parallele und Verteilte Programmierung mit Lua
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
PD Stefan Bosse - VPP - Überblick :: Parallele und Verteilte Programmierung mit Lua
Kontrollpfadparallelität benötigt i.A. Kommunikation und das Konzept der Blockierung des Prozessflusses!
Formales Ausführungsmodell: Communicating Sequential Processes (CSP)
CSP ist eine von Tony Hoare an der Universität Oxford entwickelte Prozessalgebra zur Beschreibung von Interaktion zwischen kommunizierenden Prozessen
Programmfluss = Kontrollfluss + Datenfluss
Parallele und Verteilte Datenverarbeitung: Übergang vom Shared Memory (SM) zum Distributed (Shared) Memory (DSM) Modell!
PD Stefan Bosse - VPP - Überblick :: Parallele und Verteilte Programmierung mit Lua
(benötigt lvm weblvm.lua
)