Mit Virtuellen Maschinen
Prof. Dr. Stefan Bosse
Universität Koblenz - FB Informatik - FG Praktische Informatik
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen ::
Wie können parallele und nebenläufige Prozesse quantitativ erfasst werden?
Was kann schief gehen?
Was begrenzt die Parallelisierung?
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Zustands-Raum Diagramme
Für die Visualisierung und Analyse von nebenläufigen Prozessen und Aktionen
Zustands-Raum Diagramme beschreiben die möglichen Zustands-Entwicklungen - das Verhalten - von parallelen Programmen.
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Zustands-Raum Diagramme
Computer sind endliche Zustandsautomaten. Der Zustandsübergang wird durch die Programminstruktionen hervorgerufen.
Der Zustand S eines parallelen Programms welches aus N Prozessen Pi besteht setzt sich zusammen aus folgenden Tupeln:
Die Berechnung ändert globale und lokale Variablen (Datenfluss) sowie Instruktionszeiger (Kontrollfluss) und führt zu einer Zustandsänderung comp: si → sj.
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Nebenläufige Programmierung: Zustands-Raum Diagramme
Wesentliche Zustandsänderung ist die Änderung von lokalen und globalen Speicher.
Variablen sind Bestandteil von Ausdrücken und erlauben zwei Operationen: {read,write}
var x: read(x) ⇔ RHS value(x) → ε (value(x)) write(x,v) ⇔ LHS reference(x) → x := vStefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Nebenläufige Programmierung: Zustands-Raum Diagramme
Der Zugriff auf globale und somit geteilte Variablen muss atomar sein, d.h. immer nur ein Prozess kann den Wert einer Variable lesen oder einen neuen Wert schreiben.
Der parallele Zugriff auf eine geteilte Ressource muss aufgelöst werden (Konflikt): i.A. mutualer Ausschluss durch Sequenzialisierung der parallelen Zugriffe!
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Nebenläufige Programmierung: Zustands-Raum Diagramme
write(X,v1) || write(X,v2) || x3:=read(X) → write(X,v1); read(X,x3); write(X,v2) | x3=read(X); write(X,v2); write(X,v2) | ..
(WRITE(x,v1)→p1)∥(WRITE(x,v2)→p2) (WRITE(x,v1)→(WRITE(x,v2)→(p1∥p2)))|(WRITE(x,v2)→(WRITE(x,v1)→(p1∥p2)))| ..
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Nebenläufige Programmierung: Zustands-Raum Diagramme
var V1,V2,...process p1(a1,a2,...) process p2(a1,a2,...) var v1,v2,.... var v1,v2,.... Vi := ε(ai,vi,Vi) Vi := ε(ai,vi,Vi) vi := ε(ai,vi,Vi) vi := ε(ai,vi,Vi)end endStefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Nebenläufige Programmierung: Zustands-Raum Diagramme
Bei einem sequenziellen Programm ist das Ergebnis einer Berechnung (d.h. die Werte aller Variablen) deterministisch allein durch die Anweisungssequenz und die Eingabedaten gegeben, und kann beliebig oft wiederholt werden - immer mit dem gleichen Ergebnis → Reihenfolge aller Anweisungen der Berechnung vorgegeben und fest
Bei einem parallelen Programm können mehrere Anweisungen verschiedener Prozesse gleichzeitig ausgeführt werden bzw. konkurrieren.
Die Reihenfolge parallel ausgeführter Anweisungen von einzelnen Prozessen kann hingegen undeterministisch = zufällig sein!!
Jeder der Prozesse kann als nächster den Zustand des Programms ändern.
Ein Zustands-Raum Diagramm beschreibt die Änderung des Programmzustandes als sequenzielle Auswertung aller möglichen Prozessaktivitäten.
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Nebenläufige Programmierung: Zustands-Raum Diagramme
Das Diagramm ist ein gerichteter Graph, dessen Knoten den aktuellen Programmzustand s ∈ S beschreiben, und dessen Kanten die möglichen Zustandsübergänge beschreiben.
Es gibt einen ausgewiesen Startzustand (Initialisierung) und einen oder mehrere Endzustände.
Gibt es mehrere Endzustände liegt wohl möglich ein Entwurfsfehler vor, da das Programm unterschiedliche Endergebnisse liefern kann.
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Nebenläufige Programmierung: Zustands-Raum Diagramme
Initialisiere den Startzustand sx=s0 und erzeuge Wurzel-Knoten s0 im Diagramm.
Aktueller Zustand: sx. Setze P*:=P mit P={p1,p2,..,pN} als Prozessliste und S*={}
Wähle (entferne) einen beliebigen Prozess px aus der Prozessliste P* und setze P*:= {pn| pn ∈ P* ∧ pn ∉ px}
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Nebenläufige Programmierung: Zustands-Raum Diagramme
Evaluiere die nächste Instruktion ix,n von px und berechne die Wirkung auf lokale und globale Variablen sowie den Instruktionszeiger Ix,n.
Erzeuge einen neuen Zustandsknoten sj/=x , füge ihn zur Liste S*:=S* ∪ {sj} hinzu und verbinde ihn mittels einer Kante tx→j mit dem aktuellen Ausgangszustand sx
Wiederhole Schritt 3 bis 5 für alle anderen verbleibenden Prozesse p ∈ P bis P*={}
Setze S**:=S*. Für jeden Knoten sx ∈ S** wiederhole die Schritte 2 bis 6. Iteriere Schritt 7 bis alle Prozesse terminiert sind oder keine Zustandsänderung mehr auftritt.
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Nebenläufige Programmierung: Zustands-Raum Diagramme
Sequenzielles Programm Paralleles Programmfor i := 1 to 3 do i1 process p1 for i := 1 to 3 do i1 end process p2 for j := 1 to 3 do i2 endStefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Nebenläufige Programmierung: Zustands-Raum Diagramme
Beispiel und mögliche Entwicklung des Programmzustands (lokale Var. i,j)
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Globale Ressourcen und Synchronisation
In dem bisherigen Programmiermmodell gibt es nur globale Variablen als globale geteilte Ressourcen, die konkurrierend von Prozessen gelesen und beschrieben werden können.
Die globalen Variablen dienen dem Datenaustausch = Kommunikation zwischen den Prozessen (Shared Memory Model!).
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Globale Ressourcen und Synchronisation
t1: |X := v|Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Globale Ressourcen und Synchronisation
Zusammengesetzte Ausdrücke können aus mehreren Berechnungsschritten bestehen, so ist z. B. X := X + 1 als Ganzes nicht mehr atomar!
t1: |temp=X| t2: |X:=temp+1|⇔ |X:=X+1| ??Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Globale Ressourcen und Synchronisation
var X := 1 INCR(X) DECR(X)process p1 process p2 var t:=0 var t:=0 t := X t := X X := t + 1 X := t - 1end endStefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Globale Ressourcen und Synchronisation
Zustands-Raum Diagramm mit unterschiedlichen Endergebnissen (X=0,-1,1)
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Globale Ressourcen und Synchronisation
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Globale Ressourcen und Synchronisation
Nicht atomare Aktionen (Sequenz von Aktionen) mit globalen Ressourcen müssen durch Mutuale Ausschlusssynchronisation geschützt werden → Schutz von kritischen Codebereichen ⇒ Datenkonsistenz!
Eine Semaphore S ist ein Zähler s>0 der niemals negative Werte annehmen kann.
Es gibt zwei atomare Operationen die von einer Menge von Prozessen P={p1,p2,...} auf einer Semaphore S angewendet werden können:
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Globale Ressourcen und Synchronisation
operation down(S) ∈ p: |if s > 0 then s := s - 1 else WAITERS+(S,p),block(p)|operation up(S) ∈ p: |if s = 0 and WAITERS(S) ≠ [] then pi=WAITERS-(S),unblock(pi) else s := s + 1|
Operationen der Semaphore
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Globale Ressourcen und Synchronisation
semaphore S(1)... down(S) |i1,i2,i3,..,in)| up(S) ...Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Globale Ressourcen und Synchronisation
var X := 1semaphore S := 1INCR(X) DECR(X)process p1 process p2 var t:=0 var t:=0 down(S) down(S) t := X t := X X := t + 1 X := t - 1 up(S) up(S)end endStefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Globale Ressourcen und Synchronisation
Zustands-Raum Diagramm mit einem Endergebnis (X=0)
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Eigenschaften von Parallelen Systemen
Konkurrieren mehrere Prozesse um die Ressource K, so gewinnt maximal einer, die anderen verlieren den Wettbewerb. Wettbewerb
Ein solches Wettbewerbsproblem ist gekennzeichnet durch die Eigenschaften Sicherheit und Lebendigkeit.
Sicherheit bedeutet: Bedingung Anzahl der Prozesse im kritischen Bereich K muss |{ p | I(p) ∈ K}| ≤ 1 immer erfüllt sein.
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Eigenschaften von Parallelen Systemen
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Eigenschaften von Parallelen Systemen
Wenn bis zu einem beliebigen Zeitpunkt t eine Reihe von Prozessen versucht haben den kritischen Bereich zu erlangen, ihn aber nicht erhalten haben, zu wird es in der Zukunft eine Zeit t' > t geben, wo sie erfolgreich sind (d.h. die Anfrage-Operation terminiert).
D.h. eine Anfrage der Ressource terminiert mit einem gewonnen Wettbewerb garantiert irgendwann.
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Eigenschaften von Parallelen Systemen
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Eigenschaften von Parallelen Systemen
Der Service ist die Ressource, der kritische Bereich. Der Klient ist der Prozess, der die Ressource anfragt.
Aus Sicht des Service (Ressource) ist die Deadlock Freiheit wichtigstes Kriterium. Der konkurrierende Wettbewerb führt immer dazu, dass irgendein Prozess die Ressource nutzen kann → die Ressource gewinnt immer.
Aus Sicht des Klienten (Prozesses) ist die Starvation Freiheit wichtigstes Kriterium. Wenn immer ein Prozess die Ressource anfragt, wird er sie (eventuell) zugeteilt bekommen → der Prozess gewinnt immer.
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Eigenschaften von Parallelen Systemen
1. Bounded Bypass f(N)=X ≫
2. Starvation Freiheit ≡ Endlicher Bypass f(N) ≠ ∞ ≫
3. Deadlock Freiheit
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Eigenschaften von Parallelen Systemen
Tritt häufig ein wenn zwei (oder mehrere) Prozesse gegenseitig eine Ressource (Lock) beanspruchen die aber jeweils vom anderen bereits belegt ist.
Prozesse, die bereits Sperren halten, fordern neue Sperren an.
Die Anforderungen für neue Sperren werden gleichzeitig gestellt.
Zwei oder mehr Prozesse bilden eine kreisförmige Kette, in der jeder Prozesse auf eine Sperre wartet, die vom nächsten Prozess in der Kette gehalten wird → Dining Philosopher Problem.
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Eigenschaften von Parallelen Systemen
Deadlocksituation zweier Prozesse die wechselseitig gesperrte Ressourcen anfordern
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Eigenschaften von Parallelen Systemen
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Parallelität
Unterteilung in räumliche und zeitliche Parallelität
Parallele Datenverarbeitung bedeutet Partitionierung eines seriellen Programms in eine Vielzahl von Subprogrammen oder Tasks
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Parallelität
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Datenabhängigkeit
Räumliche und zeitliche Parallelität führen zu räumlicher und zeitlicher Datenabhängigkeit.
Räumliche Datenabhängigkeit findet auf Intra- und Intertaskebene statt.
Intrataskebene: Subtasks tauschen Daten aus → Sequenzielle Ausführung.
Beispiel: ST1: a=x+y; ST2: b=a+1; → b(a) → ST2(ST1)
Intertaskebene: Übertragung von Daten zwischen Tasks in einer Pipeline.
Zeitliche Datenabhängigkeit: Ergebnisse aus der Vergangenheit gehen in aktuelle Datenberechnung ein. Beispiel: Bewegungserkennung aus einer Bild-Sequenz.
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Datenabhängigkeit
Räumliche und zeitliche Datenabhängigkeit ⇔ Vertikale und horizontale Parallelisierung
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Rechenzeit
Die Rechenzeit ttot für die Ausführung einer Pipeline T1...TM enthält:
ttot=m∑i=1τi+m−1∑i=1td(Di,i+1)+tin+toutτi=max{tcomp(Ti,j(dj))|1⩽j⩽ni}+tcomm(Ti)
als die Zeit die benötigt wird, einen Task i unter Berücksichtigung von Datenabhängigkeiten der ni Subtasks T(dj) zu bearbeiten.
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Rechenzeit
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Klassifikation von parallelen Algorithmen
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Klassifikation von parallelen Algorithmen
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Klassifikation von parallelen Algorithmen
Klassifikation nach Kommunikationsbedarf aufgrund Datenabhängigkeit zwischen einzelnen Tasks eines parallelen Programms
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Speed-up
Bei der Datenverarbeitung gibt es drei Randbedingungen:
Speedup=S(N)=Performanz(N)Performanz(1),St(n)=Rechnenzeit(1)Rechenzeit(N)
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Speed-up
0<S(N)<N
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Kosten und Laufzeit
FUN matmult(A:ARRAY (p,q), B: ARRAY(p,q)) -> C:ARRAY (p,r)DEF matmult(A, B) = FOR i = 1 to p DO FOR j = 1 to r DO C[i,j] <- 0; FOR k = 1 to q DO C[i,j] <- C[i,j] + A[i,k] * B[k,j] END FOR k END FOR j END FOR iENDStefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Kosten und Laufzeit
Partitionierung kann beliebig erfolgen, da die einzelnen Ergebniswerte Ci,j nicht voneinander abhängen.
Datenabhängigkeit des Problems: Die Berechnung eines Ci,j Wertes hängt außerhalb der FOR-k-Schleife von keinem anderen Wert Cn,m mit n ≠ i und m ≠ j ab.
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Kosten und Laufzeit
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Kosten und Laufzeit
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Kosten und Laufzeit
Mögliche Partitionierungen der Matrixmultiplikation
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Kosten und Laufzeit
Kosten und Laufzeitanalyse der verschiedenen Parititionierungen
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Kommunikation
Kommunikation Fall 1
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Kommunikation
Kommunikation Fall 2
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Kommunikation
Kommunikation Fall 3
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Kommunikation
Bisher konnten Matrizen ganzzahlig auf VEs verteilt werden. In der Realität ist aber p=q=r,n!
Bisher wurde angenommen, dass alle VEs mit jeder anderen VE Daten mit einer Distanz/Ausdehnung D=1 austauschen kann. Nur möglich mit vollständig verbundenen Netzwerktopologien unter Verwendung von Kreuzschaltern.
Gängige parallele und ökonomische Rechnertopologie: Maschennetz
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Kommunikation
Zweidimensionales Maschennetzwerk
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Kommunikation
Das 2n x 2n Netz wird in vier Quadranten der Größe n × n unterteilt.
Alle VEs die ein A1,j-Element besitzen werden dieses nach rechts verschieben.
Alle VEs die ein Bi,1-Element besitzen werden dieses nach unten verschieben.
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Kommunikation
Dynamische und überlagerte Verteilung der Matrizen A, B, und C
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Kommunikation
Die Laufzeit der Matrixmuliplikation auf dem Netz beträgt Θ(n), da n Verschiebungen durchgeführt werden.
Die Kosten betragen Θ(n3), vergleichbar mit sequenzieller Ausführung. D.h. diese Partitionierung und Architektur ist kostenoptimal.
Das 2n x 2n Netz wird nur in drei Quadranten genutzt. Benötigt werden daher nur 3n2 VEs.
Aus Sicht der Rechnerarchitektur ungünstig zu implementieren und nicht generisch, d.h. abhängig vom verwendeten Algorithmus.
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Kommunikation
Reduktion dieses Verfahrens auf n × n Netz möglich
Die Zeilenelemente von A werden dann nach vorherigen Ablaufschema gegen den Uhrzeigersinn rotiert (nur horizontal), und die Spaltenelemente von B im Uhrzeigersinn (vertikal).
Man erhält gleiche asymptotische Grenzwerte für die Laufzeit Θ(n) und Kosten Θ(n3)!
Stefan Bosse - VPP - Modul F Metriken und Verhalten von Parallelen Programmen :: Kommunikation