Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Externspeicher- Algorithmen:Teil 2 Petra Mutzel Technische Universität Wien Institut für Computergraphik und Algorithmen Algorithmen und Datenstrukturen.

Ähnliche Präsentationen


Präsentation zum Thema: "Externspeicher- Algorithmen:Teil 2 Petra Mutzel Technische Universität Wien Institut für Computergraphik und Algorithmen Algorithmen und Datenstrukturen."—  Präsentation transkript:

1 Externspeicher- Algorithmen:Teil 2 Petra Mutzel Technische Universität Wien Institut für Computergraphik und Algorithmen Algorithmen und Datenstrukturen 2

2 Robert E. Bixby: Solving Linear and Integer Programs Montag, 7. April 2003, 17 Uhr s.t. Informatik-Kolloquium Zemanek-Hörsaal, Favoritenstraße

3 Externe Array-Heaps Lemma 1: l i+1 =l i (μ+1) μ=(cM/B)-1 L1 L2 L3 l2l2 l i =(cM) i /B i-1 μμ L Schichten Li Slots: enthalten sortierte Folge oder sind leer c=1/7 L<=4

4 I/O Schranken Theorem: Annahme: cM>3B und 0

5 Beweis: Amortisierte Analyse (1) Insert: 18/B(log cM/B (N/B)) >= 18L/B I/O´s Del_Min 7/B amortisierte I/O´s. Bankkonto-Methode: –Jedes Element erhält beim Einfügen ein Guthaben von 18L/B –Wir zeigen: es werden höchstens 18/B benötigt um von einer zur anderen Schicht zu wandern –Beim Entfernen werden 7/B Einheiten im Heap belassen

6 Beweis: Amortisierte Analyse (2) Insert mit Overflow kostet 6l i+1 /B, denn: –Merge_level(i,S;S´): kostet 3l i+1 /B und Store(i+1,S´): kostet 3l i+1 /B Wie können diese Kosten bezahlt werden? Fall1: 1. Overflow zur Schicht L1: Jedes Element, das mittels nun bewegt wird, gibt von ihrem Bakkonto jeweils 12/B Einheiten dafür ab; da Schicht L2 mindestens zur Hälfte gefüllt ist, kommen so (12/B) (l 2 /2)=6l 2 / B Einheiten zusammen. (Interpretation: stellen Sie sich vor, jedes Element erhält beim Einfügen (anfangs) 18L/B Einheiten; nun möchten die Elemente in die Schicht L2 wechseln, das kostet aber insgesamt 6l 2 /B. Diese können dadurch aufgebracht werden, indem alle bewegten Elemente jeweils 12/B Einheiten von ihrem momentanen Bankkonto abgeben.)

7 Beweis: Amortisierte Analyse (2) Insert mit Overflow kostet 6l i+1 /B, denn: –Merge_level(i,S;S´): kostet 3l i+1 /B und Store(i+1,S´): kostet 3l i+1 /B Fall2: Overflow von Schicht Li nach Li+1: Jedes Element hatte ja anfangs 18L/B Einheiten zur Verfügung; das sind für jede Schicht (also auch für Schicht i) genau 18/B Einheiten, die das Element verbrauchen kann. Da Schicht Li mindestens zur Hälfte gefüllt ist, können diese Kosten (genauso wie im 1. Fall) durch 12/B Einheiten von den Bankkonten der bewegten Elemente genommen werden. Beobachtung: Damit hat jedes Element nach der Merge_level() und Store()-Operation noch 6/B Einheiten pro Schicht übrig.

8 Beweis: Amortisierte Analyse (2) Invariante: Zu jedem nicht-leeren Slot j der Schicht Li gehört ein Deposit Di,j von 6x/B, wobei x die Anzahl der freien Felder in j entspricht. Das heisst: Um die Invariante zu erfüllen, muss jedes durch den Store() Aufruf nach Schicht Li+1 bewegte Element 6/B Einheiten an Di,j abgeben Insgesamt: kostet also eine Merge_Level() und eine Store() Operation pro Overflow (Schicht) 18/B Einheiten per Element.

9 Beweis: Amortisierte Analyse (3) Beim Entfernen werden 7/B=(1+6)/B Einheiten im Heap belassen Eine Load()-Operation wird durch das Nehmen von B(1/B)=1 Einheiten aus dem Heap bezahlt. Diese Einheiten kamen jeweils durch die letzten (aus Slot j) B entfernten Elemente zustande. Die restlichen B(6/B)=6 Einheiten dieser entfernten Elemente werden dem Di,j zugeordnet, auf dem Load() operiert hat (denn danach sind es dort B Einheiten weniger, es werden also 6*B/B=6 Einheiten mehr in Di,j benötigt). Insgesamt: sind das 7/B Einheiten für die Load() Operation

10 Beweis: Amortisierte Analyse (4) Es bleibt: die Bezahlung für Compact(i): 3l i /B Dies wird durch die Deposits D i,j an den slots j1 und j2, die kompaktiert werden, bezahlt: Die Gesamtanzahl der leeren Plätze in den slots j1 und j2 ist mindestens l i. Dafür gibt es in den Deposits Di,j1 und Di,j2 zusammen mindestens 6l i /B Einheiten. Nach dem Mischen gibt es in Di,j1 höchstens l i /2 freie Slots, d.h. für das neue Di,j1 werden nur 3l i /2 Einheiten benötigt Die anderen 3l i /2 Einheiten werden für Compact(i) ausgegeben.

11 Literatur Andreas Crauser: LEDA-SM: External Memory Algorithms and Data Structures in Theory and Praxis. Dissertation, Max-Planck-Institut für Informatik, Saarbrücken, Kapitel 4: Priority Queues; Klaus Brengel, Andreas Crauser, Paolo Ferragina, Ulrich Meyer: An Experimental Study of Priority Queues in External Memory, Proc. of the Workshop on Algorithmic Engineering (WAE ´99), Lecture Notes in Computer Science 1668, , Springer-Verlag, 1999 Die Vorlesung hält sich eng an:

12 When this book was first written, magnetic tapes were abundant and disk drives were expensive. But disks became enormously better during the 1980s,.... Therefore the once-crucial topic of patterns for tape merging has become of limited relevance to current needs. Yet many of the patterns are quite beautiful, and the associated algorithms reflect some of the best research done in computer science during ist early years; The techniques are just too nice to be discarded abruptly onto the rubbish heap of history.... Therefore merging patterns are discussed carefully and completely below, in what may be their last grand appearance before they accept a final curtain call. Donald E. Knuth: The Art of Computer Programming 1967 (Neuauflage 1998):

13 Pavel Curtis in Knuth:``The Art of Computer Programming´´ 1967 (Neuauflage 1998): For all we know now, these techniques may well become crucial once again.

14 Cache-Optimale Algorithmen Teil 2:

15 CPU Cache Kapazität Z Arbeits- Speicher Kapazität M Extern- speicher Faktor 100 schneller als Hierarchisches Speichermodell moderner Computer Hits vs. Cache misses L = Anzahl der Elemente, die in eine Zeile passen Auch zur Cache-Optimierung könnte EM-Seichermodell verwendet werden Problem: Speicherhierarchie, alle mit anderer Block- größe und Kapazität B = Anzahl der Elemente, die in einen Block passen

16 Lösung: ``Cache-oblivious´´ Speichermodell Blockgröße B und Kapazität M sind unbekannt Eine Algorithmen-Analyse muss für alle Blockgrößen und Kapazitäten gelten ---also auch für alle Speicherhierarchie-Ebenen Dies erhöht die Portabilität von Programmen: eben nicht für festes B und M entwickelt Dies garantiert optimale Speicherzugriffe auf jeder Speicherhierarchie-Ebene.

17 Z/L Cache-Zeilen der Länge L L = Anzahl der Wörter, die in eine Cache- Zeile passen CPU Arbeits- speicher beliebig groß Das ``ideal-cache´´-Modell von Frigo et al Kapazität: Z Bytes 2-Ebenen Speicherhierarchie Annahme: Z=Ω(L 2 ): ``Cache ist hoch´´ Cache- misses

18 Das ``ideal-cache´´-Modell von Frigo et al CPU kann nur Wörter bearbeiten, die sich im Cache befinden Wenn sich ein referenziertes Wort im Cache befindet: Cache-Hit Sonst: Cache miss: Zeile muss erst in den Cache gebracht werden. Falls der Cache voll ist, muß eine Cache-Zeile vorher entfernt werden. Der ideale Cache entfernt diejenige off-line optimale Zeile, die zuletzt (zeitlich) wieder benötigt wird. Praxis: least recently used

19 ``Cache-oblivious´´ Analyse Cache-Komplexität Q(n,Z.L): die Anzahl der Cache- Misses, abhängig von Z und L (n Eingabegröße der Instanz). Die Anzahl der ausgeführten CPU-Operationen im RAM Modell T(n) Ein Algorithmus heisst ``Cache-Aware´´ (Cache- bewußt), wenn er Parameter enthält, mit denen die Cache-Komplexität für gegebenes Z und L optimiert werden kann. Andernfalls heißt der Algorithmus ``Cache-oblivious´´ (Cache-ignorierend). Ein optimaler ``Cache-oblivious´´ Algorithmus für 2 Ebenen, ist auch für mehrere Ebenen optimal.

20 Beispiel: Matrix-MultiplikationCache-Aware Algorithmus Annahme: s ist Teiler von nInsgesamt: Θ(1+n 2 /L+(n/Z) 3 (Z/L))=Θ(1+n 2 /L+n 3 Z/L) Algorithmus BLOCK_MULT(A,B,C,n) Für i=1 bis n/s Für j=1 bis n/s Für k=1 bis n/s MULT(Aik,Bkj,Cij,s); MULT(A,B,C,s) ist die Standard-Prozedur, die C=C+AB auf s x s Untermatrizen in Zeit O(s 3 ) berechnet. s sei der größte Wert, so dass die drei Untermatrizen zusammen in den Cache passen. Eine s x s Untermatrix benötigt ((s+s 2 )/L) Cache Zeilen. Der Cache besitzt Z/L Cache Zeilen. Cahe hat Größe Z: 3s 2 <=Z: s=Θ(Z). Jeder Aufruf von MULT() benötigt höchstens Z/L=Θ(s 2 /L)=Θ(Z/L) Cache-Misses, um die drei Untermatrizen in den Cache zu bringen.

21 Cache-Oblivious Algorithmus Idee: Divide & Conquer Prinzip A: m x n Matrix, B: n x p Matrix Fall 1: m>= max{n,p}: splitte A horizontal in A 1 und A 2 mit jeweils m/2 Zeilen; es folgen 2 Aufrufe der Form A 1 B und A 2 B. Denn es gilt: Fall 2: n>= max{m,p}: splitte A vertikal in A 1 und A 2 mit jeweils n/2 Spalten und B horizontal in B1 und B2 mit jeweils n/2 Zeilen. Denn es gilt

22 Cache-Oblivious Algorithmus Idee: Divide & Conquer Prinzip A: m x n Matrix, B: n x p Matrix Fall 3: p>= max{m,n}: splitte B vertikal in B 1 und B 2 mit jeweils p/2 Spalten. Denn es gilt: Fall 4: Falls m=n=p=1 gilt, dann werden die beiden Elemente multipliziert und zur resultierenden Matrix C hinzuaddiert.

23 Analyse des Cache-Oblivious Algorithmus Theorem: Der Algorithmus benötigt Θ(mnp) Zeit im RAM Modell. Die Cache Komplexität beträgt Θ(m+n+p+(mn+np+mp)/L+mnpZ/L) Cache-Misses. Theorem: Zur Multiplikation zweier nxn Matrizen benötigt der Algorithmus REC_MULT Θ(n 3 ) Zeit im RAM Modell und Θ(n+n 2 /L+n 3 Z/L) Cache-Komplexität. Gegenüberstellung BLOCK_MULT: Θ(1+n 2 /L+(n/Z) 3 (Z/L))=Θ(1+n 2 /L+n 3 Z/L)

24 Analyse des Cache-Oblivious Algorithmus Intuitiv benutzt der Algorithmus den Cache effektiv, denn: sobald ein Unterproblem ganz in den Cache passt, können dessen Unterprobleme ohne einen einzigen Cache-Miss gelöst werden. Deswegen sind Divide&Conquer Verfahren grundsätzlich sehr gut für große Datenmengen geeignet. Divide&Conquer Verfahren sind grundsätzlich gute Kandidaten für Cache-optimale Algorithmen.

25 Algorithmus mit besserer Laufzeit Verfahren von Strassen (1986) zur Matrixmultiplikation Auch ein Divide&Conquer Verfahren: jede Untermatrix wird in 4 Viertel der Höhe und Länge jeweils ungefähr n/2 zerlegt RAM-Komplexität: Θ(N log 7 )=Θ(N 2,81 ) Cache-Komplexität: Θ(n+n 2 /L+n log 7 Z/L) In Praxis: sehr aufwändig zu implementieren Für n<= noch ungefähr genauso langsam wie REC_MULT Offenes Problem! Eher theoretischer, aber überraschender Beitrag

26 Weiterführende Literatur Frigo, Leiserson, Prokop, Ramachandran: Cache-Oblivious Algorithms, MIT, Cambridge IEEE Transactions, 1999 Ende von External Memory 2

27 Vielen Dank

28


Herunterladen ppt "Externspeicher- Algorithmen:Teil 2 Petra Mutzel Technische Universität Wien Institut für Computergraphik und Algorithmen Algorithmen und Datenstrukturen."

Ähnliche Präsentationen


Google-Anzeigen