One of the few resources increasing faster than the speed of computer hardware is the amount of data to be processed. Bin Hu



Ähnliche Dokumente
Kapitel 3. Speicherhierachie. Beispiel für Cache Effekte. Motivation Externspeicheralgorithmen. Motivation Für Beachtung von Cache Effekten

Algorithmen für große Datenmengen

Algorithmen und Datenstrukturen

DATENSTRUKTUREN UND ALGORITHMEN

Experimente. Zahlenbeispiel. Cache-Optimale Algorithmen. Warum Funktionieren Caches? Cache-Oblivious Speichermodell. Characterisierung von Caches

Algorithm Engineering. Alexander Kröller, Abteilung Algorithmik, IBR

Grundlagen: Algorithmen und Datenstrukturen

Kap. 3.3: Externe Sortierverfahren

1. Übungstest. Kap. 3.3: Externe Sortierverfahren. Überblick. Motivation. Durchwandern eines Arrays. Externspeicheralgorithmen

Algorithmen II Vorlesung am

Algorithmen und Datenstrukturen

Datenstrukturen & Algorithmen

Das EM-Modell. Vorlesung 3: Lubys Algorithmus. Graphenalgorithmen und lineare Algebra Hand in Hand

8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.

Algorithm Engineering XXL

Informatik II, SS 2018

Übungsklausur Algorithmen I

Suchen und Sortieren Sortieren. Heaps

Grundlagen der Rechnerarchitektur. Speicher

Sortieren II / HeapSort Heaps

Algorithmen und Datenstrukturen (für ET/IT)

Vorlesung 4: DATENSTRUKTUREN UND ALGORITHMEN

Übung zu Algorithmen I 31. Mai 2017

6. Sich selbst organisierende Datenstrukturen

Mehrwegbäume Motivation

Heapsort / 1 A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8]

Algorithmen I. Tutorium 1-5. Sitzung. Dennis Felsing

Cache-Speicher. Design Digitaler Systeme. Prof. Dr.-Ing. Rainer Bermbach

CUDA. Jürgen Pröll. Multi-Core Architectures and Programming. Friedrich-Alexander-Universität Erlangen-Nürnberg Jürgen Pröll 1

Definition Ein Heap (priority queue) ist eine abstrakte Datenstruktur mit folgenden Kennzeichen:

Algorithmen I. Tutorium 1-3. Sitzung. Dennis Felsing

Vorlesung Datenstrukturen

Grundlagen der Rechnerarchitektur

Denition: Rang eines Elements e einer Folge s = Position von e in sort(s) (angefangen bei 1). Frage: warum ist r nicht notwendig eindeutig?

Datenstrukturen und Algorithmen. Vorlesung 8

Grundlagen der Rechnerarchitektur. Speicher

In heutigen Computern findet man schnellen/teuren als auch langsamen/billigen Speicher

Vorlesung Datenstrukturen

Heapsort. 1. Erstelle aus dem gegebenen Array einen Max-Heap (DownHeap) 2. Tausche erstes und letztes Element des Arrays

Vorlesung Datenstrukturen

Tutoraufgabe 1 (Sortieralgorithmus):

7. Übung zu Algorithmen I 1. Juni 2016

Paging. Einfaches Paging. Paging mit virtuellem Speicher

Algorithmen I - Tutorium 28 Nr. 7

Gliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen

Einführung in die STL

é Er ist software-transparent, d.h. der Benutzer braucht nichts von seiner Existenz zu wissen. Adreßbus Cache- Control Datenbus

Algorithmen und Datenstrukturen

Copyright, Page 1 of 7 Heapsort

Informatik II, SS 2014

Informatik II, SS 2014

Programmierung. Rückblick. VWA - Programmierung Winter Algorithmus. Programmiersprache. Variable. Zuweisung. Bedingung.

Kapitel Andere dynamische Datenstrukturen

9 Minimum Spanning Trees

Algorithmen II Vorlesung am

Kapitel Andere dynamische Datenstrukturen

Leichtgewichtsprozesse

Leichtgewichtsprozesse

Übung Algorithmen I

Grundlagen Algorithmen und Datenstrukturen Kapitel 13

(Digital) Sorting. October 25, Algorithms & Datastructures 2 Exercises WS 2016

Einführung in die Programmiersprache C

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1

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

Kapitel : Andere dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2013/14. Prof. Dr. Sándor Fekete

Freispeicherverwaltung Martin Wahl,

Kap. 3 Sortieren. 7. VO DAP2 SS Mai Vorlesung am Do 7.5. entfällt wegen FVV um 14 Uhr HeapSort ff 3.1.

Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken.

Grundlagen der Algorithmen und Datenstrukturen Kapitel 6

Algorithmen und Datenstrukturen VO 3.0 Vorlesungsprüfung 19. Oktober 2007

Grundlagen: Algorithmen und Datenstrukturen

Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5

Rechnerarchitektur SS 2013

Datenstrukturen & Algorithmen

Algorithmen I - Tutorium 28 Nr. 3

13 (2-4)-Bäume Implementierbare Funktionen. (2-4)-Bäume sind durch folgende Eigenschaften deniert: 1. Alle Äste sind gleich lang

Karlsruher Institut für Technologie. Klausur Algorithmen I

Algorithmen I. Prof. Jörn Müller-Quade Institut für Theoretische Informatik Web:

Informatik II, SS 2016

Algorithmen und Datenstrukturen

5. Vorrangwarteschlangen - Priority Queues

STL-Container und Laufzeit

Dies ist gerade der konstruktive Schritt beim Aufbau von Binomialbäumen.

Übung 13 Algorithmen II

12 (2-4)-Bäume Implementierbare Funktionen. (2-4)-Bäume sind durch folgende Eigenschaften deniert: 1. Alle Äste sind gleich lang

Datenstrukturen und Algorithmen Beispiellösung zu Heimübungsblatt 7. Abbildung 1: Das Array A als Baum (vgl. Foliensatz 16, Folie 3)

Konzepte und Methoden der Systemsoftware. Aufgabe 1: Polling vs Interrupts. SoSe bis P

DSAL - 4. Globalübung. Benjamin Kaminski, Tim Quatmann. 15. Mai 2018


Cache Grundlagen. Schreibender Cache Zugriff. SS 2012 Grundlagen der Rechnerarchitektur Speicher 22

Die asymptotische Notation

LEISTUNGSVERGLEICH VON FPGA, GPU UND CPU FÜR ALGORITHMEN ZUR BILDBEARBEITUNG PROSEMINAR INF-B-610

ADS: Algorithmen und Datenstrukturen

1. Übungsblatt zu Algorithmen II im WS 2011/2012

Was bisher geschah ADT Menge mit Operationen: Suche nach einem Element Einfügen eines Elementes Löschen eines Elementes Realisierung durch

Frank Heitmann 2/28. 1: return A[1]

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

Prozesse und Prozessmanagement des BS. 1 Unterschied Prozess, Threads. 1.1 Prozess. 1.2 Threads

Transkript:

Bin Hu Algorithmen und Datenstrukturen 2 Arbeitsbereich fr Algorithmen und Datenstrukturen Institut fr Computergraphik und Algorithmen Technische Universität Wien One of the few resources increasing faster than the speed of computer hardware is the amount of data to be processed. Call-for-Papers, IEEE InfoVis 2003 Speichermodell Speicherzugriff Algorithmus 1 Testprogramm A 1: Array B = 1, 2,..., n; 2: für i = 1,..., n { 3: A[B[i]] = A[B[i]] + 1; 4: } Geschwindigkeitserhöhung pro Jahr Prozessoren: 30% 50% Speicher: 7% 10% Algorithmus 2 Testprogramm B 1: Array B = 1, 2,..., n; 2: Array C = RandomPermute(B); 3: für i = 1,..., n { 4: A[C[i]] = A[C[i]] + 1; 5: }

Speicherzugriff Speicherzugriff Probleme klassischer Algorithmen Zugriff im Hauptspeicher spricht einzelne Elemente an Zugriff im Externspeicher (ein I/O) liefert ganze Blöcke von Daten zurück Geringe Lokalität bei Speicherzugriffen mehr Zugriffe als nötig Sekundärspeichermodelle Part I Parameter N = Anzahl der Elemente in der Input-Instanz M = Anzahl der Elemente, die in den Hauptspeicher passen B = Anzahl der Elemente, die in einem Block passen Annahmen: M < N 1 B M/2

Sekundärspeichermodelle Sekundärspeichermodelle Aggerwal und Vitter (1988) Disk mit P 1 unabhängige Zugriffsköpfe Pro I/O Zugriff können P B Elemente bewegt werden Nicht praxisnah, da Zugriffsköpfe nicht unabhängig voneinander steuerbar sind Vitter und Shriver (1994) D verschiedene, unabhängige Disks Pro I/O Zugriff können D B Elemente bewegt werden Parallel Disk Model Performance Anwendungsfall Maß für Performance Anzahl der ausgeführten I/O-Operationen Anzahl der ausgeführten CPU-Operationen im RAM-Modell Anzahl der belegten Blöcke auf dem Sekundärspeicher Prioritätswarteschlangen (Priority Queue) Datenstruktur zum Speichern von Tupeln aus Information und Prioritätswert Einsatz Dijkstras Shortest-Path Algorithmus Sortieren (z.b. Heapsort) Scheduling...

Anwendungsfall Unterstützte Operationen Insert: Einfügen eines neuen Elements in die Warteschlange Get Min: Ausgabe des Elements mit kleinstem Schlüssel Del Min: Ausgabe und Entfernung des Elements mit dem kleinsten Schlüssel aus der Liste Part II Frage Welche Datenstruktur würden Sie verwenden? Aufbau und Eigenschaften Bestandteile Interne Datenstruktur H im Arbeitsspeicher Externe Datenstruktur aus einer Menge von sortierten Arrays unterschiedlicher Länge Aufbau und Eigenschaften Interne Datenstruktur H, aufgeteilt in Heaps H1 und H2 H1 enthält maximal 2c M Elemente (c 1) H2 enthält maximal die B kleinsten Elemente aus jedem Slot Externe Datenstruktur Besteht aus L Schichten Li, 1 i L Jede Schicht hat µ = (c M/B) 1 Slots Jeder Slot hat Länge li = (c M) i /B i 1 Jeder Slot ist leer oder enthält eine sortierte Folge von höchstens li Elementen Slot li+1 kann alles aus Schicht Li plus li Elemente aufnehmen

Aufbau und Eigenschaften Operationen Größenordnung Maximal 2cM + BµL 2cM + B( cm B )L = cm(2 + L) Elemente für H1 und H2 Zusätzlich cm Zwischenspeicher für Operationen M cm(3 + L), also L 1 c 3 Insert Versucht das Element in H1 einzufügen Ist dieser voll, kommen l1 = c M Elemente in die externe Datenstruktur: Ist ein freier Slot in Schicht L1 vorhanden, werden die Elemente dort sortiert eingefügt Sonst werden alle Elemente aus L1 mit den l1 Elementen aus H vereinigt und in L2 eingefügt Ist diese auch voll, wird der Prozess mit L3 wiederholt, usw. Operationen Del Min Invariante: Das kleinste Element befindet sich immer in H H wird in H1 und H2 aufgeteilt: H1 enthält die neu eingefügten Elemente, maximal 2cM H2 speichert maximal die B kleinsten Elemente aus jedem belegten Slot Merge-Level Store Load Compact

Merge-Level(i, S, S ) Produziert eine sortierte Folge S durch das Mischen der sortierten Sequenz S und der µ Slots in Li (inkl. der ersten Blöcke in H2) Analyse: O(li+1/B) I/O s Store(i, S) Annahme: Li enthält einen leeren Slot und Folge S besitzt Länge im Bereich [li/2, li] S wird in einen leeren Slot von Li gespeichert und seine kleinsten B Elemente nach H2 bewegt. Analyse: O(li/B) I/O s Load(i, j) Holt die nächsten B kleinsten Elemente vom j-ten Slot aus Li in den internen Heap H2 Analyse: O(1) I/O s Compact(i) Annahme: es existieren mind. 2 Slots in Li, die zusammen (inkl. den Elementen in H2) höchstens li Elemente haben Diese beiden Slots werden zusammengefügt, sodass ein Slot in Li frei wird Die kleinsten B Elemente werden nach H befördert Analyse: O(li/B) I/O s

Analyse Experimenteller Laufzeitvergleich Analyse Insert: 18 B (log cm/b(n/b)) I/O Operationen Del Min: 7/B I/O Operationen (Amortisierte Analyse, Beweis siehe Skriptum) Experiment 1 Zuerst N Elemente in eine leere Prioritätswarteschlange Einfügen, dann alle entfernen Experimenteller Laufzeitvergleich Experiment 2 Ausgehend von einer Prioritätswarteschlange mit 20 Millionen Elementen wird zufällig Insert oder Del Min aufgerufen Part III

Cache Lokalitäten Cache Cache ist der schnellste Speicher, auf die der Prozessor zugreifen kann und enthält Regionen des (langsamen) Arbeitsspeichers, die zuletzt referenziert wurden Hit: Zugriff auf Speicherbereiche im Cache, kann mit Prozessorgeschwindigkeit bearbeitet werden Miss: Zugriff auf Speicherbereiche außerhalb vom Cache, Daten müssen vom Arbeitsspeicher nachgeleden werden Parameter Kapazität Z Seitengröße L Zeitliche Lokalität Merkmal: Ein Speicherbereich wird innerhalb einer kurzen Zeitspanne öfters angesprochen Ausnutzung: Angesprochene Speicherbereiche möglichst lange im Cache behalten Örtliche Lokalität Merkmal: Speicherbereiche werden angesprochen, die nahe beieinander liegen Ausnutzung: Bei einem Miss jeweils ganze Speicherblöcke in den Cache holen Ausnutzung des Caches Beispiel: Matrix-Multiplikation Ausnutzung des Caches Cache-Aware (Cache-bewusst): Algorithmus enthält Parameter, mit denen das Cache Verhalten für Kapazität Z und Seitengröße L optimiert wird Cache-Oblivious (Cache-ignoroerend): sonst Beispiel: Matrix-Multiplikation Multiplikation zweier n n Matrizen: C = A B Matrizen zeilenweise gespeichert n sehr groß, d.h. n L Algorithmus 3 BLOCK-MULT (A, B, C, n) 1: für i = 1 bis n/s { 2: für j = 1 bis n/s { 3: für k = 1 bis n/s { 4: MULT(Aik, Bkj, Cij, s) 5: } 6: } 7: } Cache-Aware Algorithmus MULT (A, B, C, s): Standard-Prozedur, die C = C + AB auf s s Untermatrizen in Zeit O(s 3 ) berechnet s sollte so gewählt sein, dass die s s Untermatrizen zusammen in den Cache passen

Beispiel: Matrix-Multiplikation Cache-Oblivious Algorithmus Nach dem Divide&Conquer Prinzip wird die Multiplikation schrittweise in Teilmultiplikationen aufgeteilt Sobald das Unterproblem ganz in den Cache passt, kann es ohne Misses gelöst werden Part IV Zusammenfassung Zusammenfassung Algorithmen, die versuchen, organisiert und strukturiert auf den Sekundärspeicher zuzugreifen, um die Anzahl an I/O Operationen zu minimieren Wozu? Geschwindigkeit von Speicher kann nicht mit der CPU mithalten Sekundärspeicher ist groß, aber langsam Zugriffe liefern ganze Blöcke von Daten