p max = 4 T = 8 Work = 28 3 I = Work / T = 3,5 2 Cost = p max * T = 32 U = I / p max = 87,5% 1

Ähnliche Dokumente
Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)).

Kapitel 2: Analyse der Laufzeit von Algorithmen Gliederung

Übersicht. Datenstrukturen und Algorithmen Vorlesung 5: Rekursionsgleichungen (K4) Übersicht. Binäre Suche. Joost-Pieter Katoen. 20.

Prof. Dr. Heinrich Müller; Dr. Frank Weichert 7. September 2015

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit

Abgabe: (vor der Vorlesung) Aufgabe 2.1 (P) O-Notation Beweisen Sie die folgenden Aussagen für positive Funktionen f und g:

6. Parallele Algorithmen

Laufzeit und Komplexität

Sortierverfahren für Felder (Listen)

Grundlagen der Programmierung 2. Parallele Verarbeitung

Skript zur Vorlesung Parallele Algorithmen. Andreas Goerdt Technische Universität Chemnitz Fakultät Informatik Theoretische Informatik

Algorithmen und Datenstrukturen

Allgemeine Speed-Up Formel. Gesetz von Gustafson-Barsis

Achtung: Groß O definiert keine totale Ordnungsrelation auf der Menge aller Funktionen! Beweis: Es gibt positive Funktionen f und g so, dass

Kapitel 3: Untere Schranken für algorithmische Probleme Gliederung

1 Zahlentheorie. 1.1 Kongruenzen

Programmiertechnik II

Übungen Programmieren 1 Felix Rohrer. Übungen

Algorithmen und Datenstrukturen

Überblick. Lineares Suchen

4 Effizienz und Komplexität 3.1 1

12. September 2012 Kompexität. Analyse von Algorithmen (Ziele) Empirische Analyse Beispiel Schlussfolgerungen

Einführung Elementare Datenstrukturen. Der Konstruktor muß den Listenkopf head erzeugen. Der Vorgänger und Nachfolger von head ist head selbst.

Algorithmentheorie Randomisierung. Robert Elsässer

Algorithmen und Datenstrukturen Wintersemester 2004/ November T(n) = T(n a) + T(a) + n

3.2. Korrektheit und Komplexität am Beispiel: Sortieren Sortieren ist eine wichtige Basis-Operation für komplexe Algorithmen

Algorithmen und Datenstrukturen 1-1. Seminar -

Parallelrechner (1) Anwendungen: Simulation von komplexen physikalischen oder biochemischen Vorgängen Entwurfsunterstützung virtuelle Realität

Informatik II Musterlösung

Kurs 1613 Einführung in die imperative Programmierung

Kurs: Parallele Algorithmen (01824) Datum: Oktober 2011 Prüfer: Prof. Verbeek Dauer: 30 Minuten Art: Leistungsnachweis (unbenotet, bestanden)

Informatik Vorkurs. Algorithmik

Tag der Mathematik 2016

WS 2009/10. Diskrete Strukturen

Sortieralgorithmen. Inhalt: InsertionSort BubbleSort QuickSort. Marco Block

Programmieren I. Kapitel 5. Kontrollfluss

RO-Tutorien 3 / 6 / 12

Grundlagen der Programmierung Prof. H. Mössenböck. 6. Methoden

Algorithmen und Datenstrukturen (für ET/IT)

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Divide-and-Conquer. Vorlesung 9: Quicksort (K7)

Randomisierte Algorithmen 2. Erste Beispiele

Übungsblatt 1. f(n) = f(n) = O(g(n)) g(n) = O(f(n)) Zeigen oder widerlegen Sie: 3 n = Θ(2 n ) Aufgabe 1.2 Gegeben sei die folgende Funktion:

Untersuchen Sie, inwiefern sich die folgenden Funktionen für die Verwendung als Hashfunktion eignen. Begründen Sie Ihre Antwort.

T (n) = max. g(x)=n t(n) S(n) = max. g(x)=n s(n)

(a) Wie unterscheiden sich synchrone und asynchrone Unterbrechungen? (b) In welchen drei Schritten wird auf Unterbrechungen reagiert?

Grundlagen der Parallelisierung

Komplexität von Algorithmen

Einführung in die Informatik

Übersicht Datenstrukturen und Algorithmen. Literatur. Algorithmus: Wikipedia Definition. Vorlesung 1: Einführung. Prof. Dr.

Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6

Algorithmen II Vorlesung am

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c)

Kapitel 3: Variablen

Die Involutfunktion Inhalt

Amortisierte Analysen

Algorithmen und Datenstrukturen 1

Werkzeuge zur Programmentwicklung

Einstieg in die Informatik mit Java

Einführung in die Programmierung 1

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 10

Seminarvortrag Amdahlsches und Gustafsonsches Gesetz

Dr. Monika Meiler. Inhalt

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

Allgemeine Hinweise: TECHNISCHE UNIVERSITÄT MÜNCHEN. Name Vorname Studiengang Matrikelnummer. Hörsaal Reihe Sitzplatz Unterschrift

SOI Die Schweizer Informatikolympiade

Sortieralgorithmen. Jan Pöschko. 18. Januar Problemstellung Definition Warum Sortieren?... 2

Corinne Schenka Vorkurs Mathematik WiSe 2012/13

Programmierung Paralleler Prozesse

Parallele Berechnungen

Algorithmen und Datenstrukturen

JAVA - Suchen - Sortieren

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Dr. Thomas Neumann

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2

Lösungsvorschläge Blatt 4

Noch für heute: primitive Datentypen in JAVA. Primitive Datentypen. Pseudocode. Dezimal-, Binär- und Hexadezimalsystem. der logische Typ boolean

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Paradigmen im Algorithmenentwurf

Paralleler Programmentwurf nach Foster

Automatisches Parallelisieren

JAVA-Datentypen und deren Wertebereich

Informatik B von Adrian Neumann

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Abschnitt: Algorithmendesign und Laufzeitanalyse

= 7 (In Binärdarstellung: = 0111; Unterlauf) = -8 (In Binärdarstellung: = 1000; Überlauf)

Rechnerische Komplexität

Dynamisches Huffman-Verfahren

Einführung in die Programmierung Vorlesungsprüfung

Vollständige Induktion

Architektur Verteilter Systeme Teil 2: Prozesse und Threads

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Quadratisches Sieb. Aufgabenstellung

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen

Java. Wir verwenden oft Java für Datenstrukturen und Algorithmen. Die Vorlesung ist aber von der Programmiersprache unabhängig.

Übungen zu Programmierung I - Blatt 8

Randomisierte Algorithmen

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

16. All Pairs Shortest Path (ASPS)

Transkript:

Massivparallele Modelle und Architekturen Wintersemester 13/14 Lösungsvorschlag 1. Übung 1. Aufgabe: Leistungsbewertung paralleler Systeme Betrachtet werden soll der Odd-Even-Sort-Algorithmus mit n Eingangswerten ohne Vergleich des ersten und letzten Elements im odd-schritt. Für die Bestimmung des Parallelitätsgrades q(t) seien hier die Vergleicher (Operationen) maßgeblich. Nehmen Sie weiterhin an, Sie haben beliebig viele Ressourcen (Vergleicher) zur Verfügung und es fallen keine zusätzlichen Operationen für Kommunikation, Synchronisation oder Organisation an. a) Zeichnen Sie ein Parallelitätsprofil für n=8. b) Bestimmen Sie allgemein für gerade n die folgenden Größen: den Parallelitätsindex I das Maß für die geleistete Arbeit Work(p) das Maß für die Kosten Cost(p) die Auslastung U(p) den maximalen Speedup S max gegenüber einer sequentiellen Ausführung mit einem einzigen Vergleicher. c) Sei wieder n=8. Wie hoch wäre der Speedup, wenn genau zwei Vergleicher zur Verfügung stünden? Bestimmen Sie U(2). mit (p max = p) a) p Fachgebiet Rechnerarchitektur Prof. R. Hoffmann b) In jedem even-schritt werden n/2 Vergleiche benötigt, in jedem odd-schritt (n/2)-1. Da es gleich viele even-schritte wie odd-schritte gibt, beträgt der Parallelitätsindex I = (n/2 + n/2-1)/2 = (n-1)/2. Alternativ kann man auch zunächst T und Work bestimmen: es werden n/2 even-schritte, sowie n/2 odd- Schritte benötigt. Daher folgt T = n/2 + n/2 = n. p max = 4 T = 8 Work = 28 3 I = Work / T = 3,5 2 Cost = p max * T = 32 U = I / p max = 87,5% 1 Die Herleitung von Work erfolgt wie oben die Herleitung von I: Anzahl der benötigten Vergleiche für even und für odd mal der Anzahl der Schritte, d. h. Work = ((n/2)-1 + (n/2)) * n/2 = n(n-1)/2. 1 2 3 4 5 6 7 8 9 T

2 I ergibt sich nun auch aus I = Work/T. Die maximale Anzahl der benötigten Ressourcen p max ergibt sich aus der Anzahl der im even-schritt benötigten Vergleicher: p max = n/2. Die Kosten betragen Cost = T * p max = n* n/2 = n 2 /2. Die Auslastung U(p max ) ist der Quotient I/p max = 2(n-1)/2n = (n-1)/n. Für große n ist die Auslastung nahezu optimal. Der maximale relative Speedup (unter Verwendung des gleichen Algorithmus) ergibt sich aus dem Vergleich von T bei beliebig vielen Ressourcen und T 1 bei nur einem einzigen Vergleicher. T 1 entspricht der Gesamtzahl aller Vergleiche, also T 1 = Work(p max ). Daraus folgt S max = T 1 / T = (n(n-1)/2) / n = (n-1)/2. c) Für n=8 gilt: Stehen nur zwei Vergleicher zur Verfügung, kann nach dem folgenden Schema sortiert werden (Beachte, dass zusätzliche Operationen für Kommunikation etc. hier vernachlässigt werden). 1... 14 Es werden in jedem Takten beide Vergleicher benutzt. Nach sieben Takten sind dann je zwei even- und zwei odd-phasen komplett durchlaufen (In der Zeichnung bedeuten rote Pfeile auf schattiertem Hintergrund einen Vergleich/Tausch im odd-schritt, schwarze Pfeile auf hellem Hintergrund einen Vergleich/Tausch im even-schritt). Insgesamt werden 14 = 2*7 Takte benötigt.. Es ergibt sich für den Speedup S = 28/14 = 2. (28 ist die Anzahl der Operationen) U(2) = 100%, da immer beide Vergleicher benutzt werden können. p 2 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Zum Vergleich: bei beliebig vielen Ressourcen (4 Vergleicher werden benötigt) wären es S max = 3,5. T 2. Aufgabe: Amdahl s Gesetz Das folgende Schema illustriert den sequentiellen Ablauf eines Programms. Jedes Kästchen symbolisiert dabei einen unteilbaren Task. Vereinfacht wird angenommen, dass ein Task auf einem Prozessor genau eine Zeiteinheit benötigt. Die dunklen Kästchen stellen nicht parallelisierbare Tasks dar. Die hellen können parallelisiert werden. a) Wie groß ist der parallelisierbare Anteil g?

3 b) Was ist nach Amdahl s Gesetz der maximale Speedup für p=, p=5, p=4, p=3 und p=2? Kann dieser Speedup tatsächlich erreicht werden? a) g = 15/20 = 75%. b) p = : S max = 1/f = 20/5 = 4 p = 5: S max = 1/(0,25+0,75/5) = 2,5 p = 4: S max = 1/(0,25+0,75/4) 2,29 p = 3: S max = 1/(0,25+0,75/3) = 2 p = 2: S max = 1/(0,25+0,75/2) = 1,6 Dieser Speedup kann in der Praxis nicht immer erreicht werden, da die parallelisierbaren Teile nicht beliebig teilbar, und somit nicht immer optimal auf die p Prozessoren verteilt werden können. Amdahl s Gesetz stellt lediglich eine obere Schranke dar. Im Spezialfall für p = wird angenommen, dass der parallelisierbare Anteil auf 0 reduziert wird (unendlich viele Prozessoren erledigen die in unendlich kleine Teile zerlegten Tasks in unendlich kleiner Zeit). (Bei dem vorgegebenen Zeitraster sind nur max. 5 Prozessoren sinnvoll und S max ist dann nur 20/9!!). 3. Aufgabe: Additionsalgorithmus im PRAM Modell Gegeben Sei ein EREW-PRAM Algorithmus zur Addition von n Zahlen. Zunächst werden die n Zahlen gleichmäßig auf p Prozessoren verteilt, wo in einer lokalen Phase sequentiell die jeweilige Teilsumme gebildet wird. Danach wird per Reduktionsbaum in einer globalen Phase die Gesamtsumme gebildet. a) Erstellen Sie eine Tabelle für n = 256 und p = 1, 2, 4, 8, 16, 32, 64, 128, 256, mit den Werten für Work, Cost, Anzahl der Schritte T, Speedup und Effizienz. b) Geben Sie je eine allgemeine Formel für Cost und für T in Abhängigkeit von n und p an. Annahme: p = 2 i mit i N und n mod p = 0 (p ist eine Zweierpotenz und n lässt sich auf p ohne Rest aufteilen). c) Nehmen Sie nun an, p = n/log(n). Geben Sie die Laufzeitkomplexität des Algorithmus an. a) und b) p allgemein 1 2 4 8 16 32 64 128 256 log(p) 0 1 2 3 4 5 6 7 8 Work n-1 255 255 255 255 255 255 255 255 255 T n/p -1+log(p) 255 128 65 34 19 12 9 8 8 Cost=T*p n-p +p*log(p) 255 256 260 272 304 384 576 1024 2048 Speedup T seq /T 1 2,0 3,9 7,5 13,4 21,3 28,3 31,9 31,9 Effizienz Speedup/p 1 1,00 0,98 0,94 0,84 0,66 0,44 0,25 0,13 Utilization Work/Cost 1 1,00 0,98 0,94 0,84 0,66 0,44 0,25 0,13 Anmerkungen: Der Fall p=32=n/log n ist der "Accelerated Cascading" Fall (siehe c). Hierbei ist Cost = O(T seq ), also ist der Algorithmus dann cost-optimal.

4 c) Die Laufzeit des Algorithmus ist gegeben durch T = n/p 1 + log(p). p wird ersetzt durch p=n/log(n) T = n/(n/log(n)) - 1 + log(n/log(n)) = log(n) - 1 + log(n) - log(log(n)) = 2log(n) - 1 - log(log(n)) Für große n nähert sich die Laufzeit 2log(n) an. Damit liegt die Laufzeitkomplexität des Algorithmus in O(log(n)). Cost = (n/log n) T = O(2n) 4. Aufgabe: Data Broadcasting im PRAM Modell Der folgende Code beschreibt einen Algorithmus für Data Broadcasting, d. h. der Wert einer Zelle (eines Prozessors) wird an alle anderen Prozessoren gesendet. Wenn n eine Zweierpotenz ist, werden n/2 Prozessoren (zum Senden bzw. Empfangen) benötigt. for t = 0 to log 2 n 1 do parallel [i = 0.. 2 t -1] // dyn. active B[i+ 2 t ] B[i] // proc(i) writes endfor Erweitern Sie den Code so, dass er auch für n funktioniert, das keine Zweierpotenz darstellt. Es muss lediglich eine Bedingung eingefügt werden, die verhindert, dass im letzten Schritt versucht wird, an Adressen zu schreiben, die außerhalb des Gültigkeitsbereiches liegen: for t = 0 to log 2 n 1 do parallel [i = 0.. 2 t -1] // active if (i + 2 t < n) B[i + 2 t ] B[i] // proc(i) writes endfor 5. Aufgabe: Maximum mit CRCW-PRAM Es soll ein CRCW-PRAM Algorithmus entwickelt werden, der mit n 2 Prozessoren, die auf einen gemeinsamen Speicher mit der Common-Regel schreiben, das Maximum von n Zahlen in linearer Zeit O(1) ermittelt. Die einzelnen Prozessoren seien in einer n n-matrix angeordnet und können wie folgt programmiert werden: parallel [i = 0... n-1][j = 0... n-1] do something Input ist der Array A vom Typ Zahl (z.b. int oder float) der Länge n, Output ist die Zahl max. Es steht zusätzlich ein Hilfsarray temp vom Typ boolean der Länge n zur Verfügung.

5 a) Ergänzen Sie den folgenden Programmcode. Input: A[0... n-1] Output: max parallel [i = 0... n-1][j = 0] temp[i] true b) Bestimmen Sie zunächst die Werte für Work, Cost, Speedup und Effizienz und ordnen Sie sie dann Komplexitätsklassen zu. c) Würde Ihr Algorithmus auch mit der Arbitrary- oder Priority-Regel funktionieren? a) Die Idee ist, dass in der Prozessor-Matrix gleichzeitig jeder Wert aus A mit jedem anderen verglichen werden kann. Prozessor [i][j] vergleicht A[i] mit A[j]. Immer wenn das Element A[i] kleiner ist als A[j], wird das entsprechende Flag temp[i] im Hilfsarray auf false gesetzt. Das bewirkt, dass nach allen Vergleichen, nur ein einziger Wert in diesem Array noch true ist, nämlich der, der keinen einzigen Größenvergleich verloren hat (war immer der größte). Im letzten Schritt muss nur noch das so erhaltene Maximum ausgegeben werden. Input: A[0... n-1] Output: max parallel [i = 0... n-1][j = 0] temp[i] true parallel [i = 0... n-1] [j = 0... n-1] if (A[i] < A[j]) temp[i] false parallel [i = 0... n-1][j = 0] if (temp[i]) max A[i] // wenn Ai = MAX dann wird niemals auf false gesetzt Insgesamt werden konstant (unabhängig von n) T=3 Zeitschritte benötigt. Deshalb liegt die Laufzeitkomplexität in O(1). b) Die Kosten ergeben sich aus der Anzahl der Prozessoren die in irgendeinem Schritt maximal benötigt werden (n 2 im zweiten Parallelschritt) und der Laufzeit T: Cost = T * p = 3 * n 2. Die Kostenkomplexität ist also in O(n 2 ). Die Arbeit ergibt sich aus den tatsächlich genutzten Ressourcen: n Prozessoren im ersten Schritt. n 2 Prozessoren im zweiten Schritt und n Prozessoren im dritten Schritt. Work = 2n + n 2. Die Komplexitätsklasse ist O(n 2 ). Anmerkung: Dieser Algorithmus ist nicht cost-optimal, denn die Anzahl der Schritte des (besten) sequentiellen Algorithmus beträgt T seq = n-1 bzw. dessen Laufzeitkomplexität O(n). Der schnellste sequentielle Algorithmus bräuchte T seq = n-1 Schritte. Der Speedup ergibt sich nun aus dem Quotienten von T seq und T:

6 Speedup = (n-1) / 3. Komplexitätsklasse O(n). Die Effizienz ist der Quotient aus Speedup und der Anzahl der Prozessoren: Effizienz = (n - 1) / (3 * n 2 ). Das liegt in der Komplexitätsklasse O(1/n). Ein weiterer Wert ist die Utilization. Sie ist der Quotient aus Work und Cost: Utilization = (2n + n 2 ) / (3 * n 2 ) = 2 / 3n + 1. Dies führt zur Komplexitätsklasse O(1/n). c) Ja. Auch mit den Konfliktregeln Arbitrary und Priority würde der Algorithmus funktionieren. Grund: Wenn alle den gleichen Wert (False) schreiben wollen, dann genügt es, wenn einer erfolgreich ist.