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
3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1

Grundlagen der Programmierung 2. Parallele Verarbeitung

Laufzeit und Komplexität

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

Kurs 1613 Einführung in die imperative Programmierung

Sortierverfahren für Felder (Listen)

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

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

Programmiertechnik II

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

Einführung in die Informatik

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

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

Überblick. Lineares Suchen

Sortieralgorithmen. Inhalt: InsertionSort BubbleSort QuickSort. Marco Block

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

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

SOI Die Schweizer Informatikolympiade

Grundlagen der Informatik 2 (GdI2) - Algorithmen und Datenstrukturen -

Programmierung Paralleler Prozesse

Grundlagen der Parallelisierung

Abschnitt: Algorithmendesign und Laufzeitanalyse

16. All Pairs Shortest Path (ASPS)

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

Nutzung paralleler Prozesse bei der Umweltsimulation

Dr. Monika Meiler. Inhalt

Übungen Programmieren 1 Felix Rohrer. Übungen

Sortieren. Eine Testmenge erstellen

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

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

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen

Codes und Informationsgehalt

Approximationsalgorithmen

Wave-Datei-Analyse via FFT

Architektur Verteilter Systeme Teil 2: Prozesse und Threads

Zahlensysteme. Digitale Rechner speichern Daten im Dualsystem 435 dez = binär

Methoden zum Lösen von Rekursionsgleichungen

Tutorübung zur Vorlesung Grundlagen Rechnernetze und Verteilte Systeme Übungsblatt 12 (8. Juli 12. Juli 2013)

1. Grundlagen Sortieren Vertauschen Selektion Einfügen Quicksort Suchen...

Kurs 1575, Musterlösung zur Winter Klausur 2003/04

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

3 Rechnen und Schaltnetze

HOCHSCHULE KONSTANZ TECHNIK, WIRTSCHAFT UND GESTALTUNG. Das Luzifer-Rätsel. Prof. Dr. Hartmut Plesske Wintersemester 2008/09. von.

Ferienakademie 2001: Kryptographie und Sicherheit offener Systeme. Faktorisierung. Stefan Büttcher

Approximationsalgorithmen: Klassiker I. Kombinatorische Optimierung Absolute Gütegarantie Graph-Coloring Clique Relative Gütegarantie Scheduling

Folge 19 - Bäume Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

Mathematische Grundlagen der Kryptographie. 1. Ganze Zahlen 2. Kongruenzen und Restklassenringe. Stefan Brandstädter Jennifer Karstens

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

9 Multithreading. 1 Idee des Multithreading

Tag 9: Datenstrukturen

Parallele Programmierung

Binäre lineare Optimierung mit K*BMDs p.1/42

3. Übung Algorithmen I

Name: Seite 2. Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort.

Parallele Berechnungen

Jetzt sollt ihr von der Vorlage der Grundversion 1.0 ein eigenes Textadventure erstellen.

Motivation. Formale Grundlagen der Informatik 1 Kapitel 10. Motivation. Motivation. Bisher haben wir mit TMs. Probleme gelöst/entschieden/berechnet.

Anleitung für zwei C++ - Openmp - Beispiele auf der NWZSuperdome

Lenstras Algorithmus für Faktorisierung

Parallele Algorithmen mit OpenCL. Universität Osnabrück, Henning Wenke,

Funktionale GUI-Programmierung in Haskell mit Grapefruit

Suchen und Sortieren Sortieren. Heaps

Modul 122 VBA Scribt.docx

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?

Grundlagen der Programmierung 2. Bäume

Prozesse und Scheduling

Embedded OS für ARM Cortex Microcontroller

Steuerung der Rollläden

Reihungen. Martin Wirsing. in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03

Aufgabenstellung und Zielsetzung

Übersicht. Nebenläufige Programmierung. Praxis und Semantik. Einleitung. Sequentielle und nebenläufige Programmierung. Warum ist. interessant?

Objektorientierte Programmierung

Algorithmen und Datenstrukturen

Das Prinzip an einem alltäglichen Beispiel

Algorithmen & Datenstrukturen 1. Klausur

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Wirtschaftsinformatik I

Codierungstheorie Rudolf Scharlau, SoSe

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v)

Kurs 1612 Konzepte imperativer Programmierung Kurs 1613 Einführung in die imperative Programmierung

Praktikum Diskrete Optimierung (Teil 11)

Algorithms & Datastructures Midterm Test 1

Perzentile mit Hadoop ermitteln

Datentypen: Enum, Array, Struct, Union

Design and Implementation of a Soft-error Resilient OSEK Real-time Operating System

Vorlesung Algorithmische Geometrie. Streckenschnitte. Martin Nöllenburg

Kapitel 6. Komplexität von Algorithmen. Xiaoyi Jiang Informatik I Grundlagen der Programmierung

Transparente Nutzung von Multi-GPU Cluster unter Java/OpenMP

Grundlagen der Programmierung

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

Objektorientierte Programmiersprachen

Java Einführung Operatoren Kapitel 2 und 3

13. Binäre Suchbäume

22. Algorithmus der Woche Partnerschaftsvermittlung Drum prüfe, wer sich ewig bindet

MAXIMUM2.STR Struktogramme. Aufgabe: 3 Zahlen eingeben, größte Zahl ermitteln und ausgeben.

Anwendungen der Wirtschaftsmathematik und deren Einsatz im Schulunterricht

Aufbau eines VR-Systems zur multimodalen Interaktion mit komplexen physikalischen Modellen

Algorithmen zur Integer-Multiplikation

IT-Sicherheit Kapitel 3 Public Key Kryptographie

Transkript:

Massivparallele Modelle und Architekturen Wintersemester 2010/2011 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 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 1 2 3 4 5 6 7 8 9 b) In jedem even-schritt werden n/2 Vergleicher 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. Die Herleitung von Work erfolgt wie oben die Herleitung von I: Anzahl der benötigten Vergleicher 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. 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. T

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 = (n(n-1)/2)/n = (n-1)/2. 1... 14 c) Für n=8 gilt: Stehen nur zwei Vergleicher zur Verfügung, kann nach folgendem Schema sortiert werden (Beachte, dass zusätzliche Operationen p für Kommunikation etc. hier vernachlässigt werden): 2 1 Es werden in jedem Zeitschritt beide Vergleicher benutzt. Nach sieben Schritten sind dann je zwei even- und zwei 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 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 4 benötigt, also wiederholt sich diese Prozedur noch einmal. Nach 14 Zeitschritten ist die Sortierung abgeschlossen. Es ergibt sich für den Speedup S = 28/14 = 2. Außerdem: U(2) = 100%, da immer beide Vergleicher benutzt werden können. 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? 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 nicht erreicht werden, da die parallelisierbaren Teile zum einen nicht teilbar und zum anderen zerpflückt (nicht zusammenhängend) sind, und somit nicht optimal auf die p Prozessoren verteilt

3 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). 3. Aufgabe: Additionsalgorithmus im PRAM Modell Gegeben Sei ein EREW-PRAM Algorithmus zur Addition von n Zahlen. Zunächst werden die n Zahlen gleich 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 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: Alle 9 Fälle sind Work-optimal, denn die Anzahl der Operationen ist immer gleich der Zeitkomplexität O(T seq ), bzw. der Anzahl der Operationen des (besten) sequentiellen Algorithmus. Aus diesem Grund sind auch die Werte für Effizienz und Utilization in allen Fällen gleich. Alle Fälle sind ebenfalls Work-time-optimal, denn es gibt keinen anderen Work-optimalen Algorithmus mit gleicher Anzahl p, der schneller ist. Die Beweise dafür sind hier nicht aufgeführt. c) Die Laufzeit des Algorithmus ist gegeben durch T = n/p 1 + log(p). p wird ersetzt: 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)).

4 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] // active B[i+ 2 t ] B[i] // proc(i) writes endfor // in den Vorlesungsfolien steht anstelle von n P, besser n verwenden 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 es nicht gibt: 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. a) Ergänzen Sie den folgenden Programmcode. Input: A[0... n-1] Output: max temp[i] true

5 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. Im letzten Schritt muss nur noch das so erhaltene Maximum ausgegeben werden. Input: A[0... n-1] Output: max temp[i] true parallel [i = 0... n-1] [j = 0... n-1] if (A[i] < A[j]) temp[i] false if (temp[i]) max A[i] 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 Work-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: 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 Prozessoren bei jedem Schreibkonflikt immer den gleichen Wert schreiben (Common-Regel), dann spielt es keine Rolle, welcher zufällig oder priorisiert ausgewählt wird.