Parallele Programmierung Serie 2 Cebulla Alexander, Maciej Zbigniew Besta, Mueller Urs, Florian Negele, Pravin Shinde, Roth Renzo, Huber Sandro, Severin Heiniger, Stuecklberger Christian, Gehr Timon, Michel Werder, Severin Wischmann
Übersicht Amdahl, Work/Span & DAG revisited Lösungen Übung 1 Übung 2: Sieb des Eratosthenes Visual Studio Tortoise SVN Fragen 2
3 Revisited Amdahl, Work/Span, DAG
Vergleich Amdahl & Work/Span Sunday, March 03, 2013 Parallel Programming 4
Vergleich Amdahl & Work/Span Amdahl: S n = T 1 T n = 1 s+ p n = 1 1 p + p n T n = s + p n = T 1 p + p n = s + (T 1 s) n Weil T 1 = s + p; Falls normiert: T 1 = 1 Work/Span: T n T + T 1 T n Was fällt auf? 5
Vergleich Amdahl & Work/Span Amdahl: S n = T 1 T n = 1 s+ p n = 1 1 p + p n T n = s + p n = T 1 p + p n = s + (T 1 s) n Weil T 1 = s + p; Falls normiert: T 1 = 1 Work/Span: T n T + T 1 T n Was fällt auf? Die obere Schranke für die Laufzeit gemäss work/span entspricht Amdahl s law, wenn s = T gilt. 6
Vergleich Amdahl & Work/Span Amdahl: T n = s + (T 1 s) n Work/Span: T 1 n T n Wo liegt der Zusammenhang? 7
Vergleich Amdahl & Work/Span Amdahl: T n = s + (T 1 s) n Work/Span: T 1 n T n Wo liegt der Zusammenhang? Die untere Schranke für die Laufzeit gemäss work/span lässt sich aus Amdahl s law herleiten, wenn man s = 0 (vollständige Parallelisierbarkeit) annimmt. 8
Vergleich Amdahl & Work/Span Sind Amdahl s law und work/span nun identisch? 9
Vergleich Amdahl & Work/Span Sind Amdahl s law und work/span nun identisch? Nein! Die Grössen s und T sind a priori nicht das Gleiche. Die Grösse s kann vom Programmierer relativ einfach abgeschätzt werden. Die Grösse T ist theoretisch und kann nicht gemessen oder einfach berechnet werden. 10
Vergleich Amdahl & Work/Span Amdahl geht davon aus, dass der Programmteil p beliebig auf Threads aufgeteilt werden kann. Dies ist ziemlich weit von der Realität entfernt. Amdahl s law liefert deswegen selten ein Resultat, dass einem realen Test standhält. Die Resultate der Work/Span-Analyse hingegen fallen wesentlich realistischer aus. Merke: Amdahl verwendet reale Daten und berechnet ein rein theoretisches Resultat. Work/Span verwendet theoretische Daten und berechnet ein «realistisches» Resultat. 11
DAG Wieviele parallele Threads? Einheiten insgesamt: Work =? Span =? 12
DAG 5 Threads Work = 18 Span = 9 13
Zusammenhang DAG & Work/Span Welche Grössen der Work/Span-Analyse sind schon wieder Work und Span? Work = 18 =? Span = 9 =? 14
Zusammenhang DAG & Work/Span Welche Grössen der Work/Span-Analyse sind schon wieder Work und Span? Work = 18 = T 1 Span = 9 = T 15
Zusammenhang DAG & Work/Span Work = T 1 Span = T Um eine Work/Span-Analyse durchzuführen hilft es also, das Programm als DAG zu sehen. 16
Zur Übersicht Work = T 1 = s+p Span = T Zusammenhang Amdahl & Work/Span: s sei T p sei T 1 - T 17
18 Lösungen Übung 1
Lösung Übung 1: Aufgabe 1 n JJJJ: p = n s = 1 p+s = n+1 Normieren: s+p = 1 s = 1 n+1 p = n n+1 T 1 T n = 1 1 p + p n = 1 n+1 1 n + n n+1 = n+1 2
Lösung Übung 1: Aufgabe 2 a. T 1 T n = 1 1 p + p n b. S n = T 1 T n = n : = 1 0.4 + 0.6 n 1 1 1 p + p = 0.4 + 0.6 n n 1 = 1 = 10 0.4 0.4 + 0.6 n Daher: S n 2.5 = 2 n = 6 4 = 2.5
Lösung Übung 1: Aufgabe 3 T n T 1 T + T n T 1 + T n Gegeben: T = 20% T 1 Gesucht: T 8_mmm S 8_mmm T n T 1 T n + T T 8 100% 20% + 20% = 30% 8 S 8_mmm = 100% = 10 30% 3
Lösung Übung 1: Aufgabe 4 T 1 T n = 1 s+ p n = 1 1 p + p n T 1 T n = 1 1 p + p 4 = 2 1 2 = 1 p + p 4 1 0.75p = 0.5 p = 2 3 Die Parallelisierbarkeit von 2 ist eine nur schwer zu 3 erfüllende Anforderung. Der Kauf des Uniprozessors würde für viele Anwendungen mehr Sinn machen. Beispiele folgen im Laufe des Semesters.
Lösung Übung 1: Aufgabe 5 Der Scheduler sei greedy (gierig), nicht «optimal». a. T n T 1 T n + T T 1 n + T b. T n T 1 + T n T min n + T min min n = 2T n c. Übung 1 T 1 T n n T 1 + T n = T 1 + ε T 1 = 1 + ε T 1 n n n wegen n T 1 T T T 1 T n 0
Unterschied zwischen «greedy» und «optimal» Scheduling Wenn das Programm aus Blöcken besteht (wie unten abgebildet), sind greedy und optimal synonym! Im allgemeinen Fall (ohne Block-uniforme Laufzeiten) ist greedy nicht immer optimal und optimal ist nicht immer greedy. optimal greedy Work/Span ist korrekt, wenn das Scheduling greedy abläuft. 24
Was ist heisst «greedy»? Greedy bedeutet gierig. Wenn immer möglich wird der Prozessor voll ausgelastet. Greedy kann man sich gut an einem Rückgeld-Automaten verbildlichen: Rückgeld Fr. 3.25: 1xFr.2.-, 1xFr.1.-, 1x Fr.0.20, 1x Fr. 0.05 Also: 3.25 = 2 + 1 + 0.2 + 0.05 Das ist greedy, weil immer die grösstmögliche Münze zurückgegeben wird. Münzsysteme sind so gewählt, dass greedy optimal ist. Optimal heisst hier, für den gegebenen Betrag, werden möglichst wenig Münzen verbraucht. 25
Was ist heisst «greedy»? Für ein Gegenbeispiel müssen wir unser Münzsystem ändern: Es gebe Fr 5.-, Fr. 4.-, Fr. 2.-, Fr. 1.- Rückgeld Fr. 8.- Greedy:? Optimal:? 26
Was ist heisst «greedy»? Für ein Gegenbeispiel müssen wir unser Münzsystem ändern: Es gebe Fr 5.-, Fr. 4.-, Fr. 2.-, Fr. 1.- Rückgeld Fr. 8.- Greedy: 8 = 5 + 2 + 1 (3 Münzen) Optimal: 8 = 4 + 4 (2 Münzen) 27
28 Vorbesprechung Übung 2
Serie 2: Primzahlberechnung Sequentielles C# Programm Basiert auf Sieb des Eratosthenes Optimierungen vorsehen Abgabe: Im Repository bis 7. März 29
Prinzip des Siebs 1 +i i i*i +i +i 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 1 i +i i*i 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 +i 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 i 30
Optimierung i i*i +2i +2i 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 (i 1)/2 i*i +2i 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 i (i 1)/2 31
Einfaches Sieb Programm for (int i = 0; i < lim; i++) sieve[i] = false; for (int i = 2; i * i < lim; i++) if (!sieve[i]) for (int j = i * i; j < lim; j += i) sieve[j] = true; 32
33 Tools Visual Studio, Tortoise SVN
Tools Microsoft Visual Studio 2010/2012 Entwicklungsumgebung Verfügbar MSDN Academic Alliance program (MSDNAA) Via IDES: http://ides.ethz.ch/ Produkt MSDNAA ETH bestellen Email mit Zugangsdaten (DreamSpark, ) Vorinstalliert in Computerräumen CAB H 56 CAB H 57 Tortoise SVN Versionsverwaltung http://tortoisesvn.net/ 34
Visual Studio Neues Projekt 35
Visual Studio Konsolenapplikation Projektname Z.B. Primes 36
Versionsverwaltung Warum wird es verwendet? Übliche Arbeitsbedingungen Transparente Abgaben Einhalten des Abgabedatums Möglichkeiten Komplette Historie verfügbar Was wurde wann geändert? Beliebige Versionen wiederherstellen Änderungen einer Version rückgängig machen 37
Vokabular Checkout Lokale Kopie des Repositorys erstellen Im Kontextmenü eines Verzeichnisses: SVN Checkout Add Datei zur Versionsverwaltung hinzufügen Im Kontextmenü einer Datei: TortoiseSVN Add Check for Modifications Lokale Änderungen überprüfen Im Kontextmenü einer Datei: SVN Check for modifications Update Aktuelle Daten aus dem Repository herunterladen Im Kontextmenü einer Datei: SVN Update Commit Änderungen ins Repository übertragen Im Kontextmenü einer Datei: SVN Commit 38
Subversion Repositories Für Übungsabgaben Jeder Student hat Vollzugriff auf eigenen Ordner https://svn.inf.ethz.ch/svn/gutknecht/pp/<group>/<nethz id>/hwxy Letzter Commit vor Übungsstunde am Abgabedatum zählt Komplettes und kompilierbares Projekt einchecken Keine Binärdateien:.dll,.exe,.obj,.pdw (Insbesondere keine der Unterordner: bin, obj, debug, release) Für Beispiele und Lösungen: https://svn.inf.ethz.ch/svn/gutknecht/pp/shared/ Alle Studenten haben Lesezugriff 39
Feedback In der Übungsstunde Nachbesprechung vergangener Serien Ideen und typische Fehler Vorbesprechung der neuen Serie Aufgabenstellung Technische Details Unterlagen werden auf der Homepage publiziert Im SVN Repository Für jede einzelne Übung Assistent erstellt bei Korrektur eine Datei: feedback.txt 40
Fragen? 41