Out-of-Core Techniken Hauptseminar: Visualisierung großer Datensätze Betreuer: Dipl. Inf. Marco Ament Vortragender: Edwin Püttmann
Inhaltsverzeichnis 1. Einleitung 2. Computational Model 3. Vorverarbeitung 4. Datenstrukturen 5. Oberflächenvereinfachung 6. Rendering 7. Beispiel 01.07.2011 2
Einleitung out-of-core Was ist out-of-core External-memory algorithms Warum? Größe der Daten > Haupt-/Grafikspeicher Flaschenhälse zwischen verschiedenen Speichern Hauptspeicher Festplatte Grafikspeicher Hauptspeicher (Cache Hauptspeicher) 01.07.2011 3
Einleitung Visualisierungsarten Batch visualization Batch processing Anwendung: Vergangenheit (schwache Hardware) Sehr aufwendige Visualisierung Interactive visualization Vorverarbeitung (batch processing): Anlegen einer Datenstruktur (Index) Online-Verarbeitung: Abfrage der Datenstruktur Anwendung: Meisten Visualisierungen Medizin(MRT, CT), Meteorologie(Wetterkarten), 01.07.2011 4
Einleitung - Kennzahlen Cache (SRAM) Hauptspeicher (DRAM) Grafikspeicher SSD Festplatte Zugriffszeit um 1 ns um 10 ns < 10 ns um 250 μs um 9 ms Größe 32 256 kb 4 16 GB bis 1 GB bis 2TB bis 2TB Datendurchsatz um 10 GB/s(FSB) um 8GB/s (PCI-E) bis 160 GB/s 600 MB/s (SATA 3) 600 MB/s (SATA 3) [1] Wikipedia 01.07.2011 5
Einleitung - Festplatten Kleinste Einheit Block oder Sektor Größen 512 kb 2048 kb 4096 kb [2] http://maettig.com/?page=studium/fat32 01.07.2011 6
Computational model Metrik für Festplattenspeicher N = Elemente in der Problemstellung M = Elemente, die in den Hauptspeicher passen B = Elemente, die in einen Block passen Verhältnisse M < N und 1 B M 2 Laufzeiten Sequentielles Durchsuchen: Θ( N ) IOs B Sortieren: Θ( N N B logm ) IOs B B Random Access: Θ(N) IOs 01.07.2011 7
Vorverarbeitung Rohdaten Gitterdaten Direkte Form Indirekte Form x0 y0 z0 0.23 x1 y1 z1 0.12 x2 y2 z2 0.87 x0 y0 z0 0.23 x1 y1 z1 0.12 x3 y3 z3 1.66 x0 y0 z0 0.23 x1 y1 z1 0.12 x2 y2 z2 0.87 x3 y3 z3 1.66 [3] [3] Visualization-Folien tri 0,1,2 1 tri 0,1,3 2 quad 2,1,0,3 3 [3] 01.07.2011 8
Vorverarbeitung Sortierung External Merge Sort (k-way merge) N oder gesamter Datensatz k = M/B z.b. Quicksort k = M/B M 01.07.2011 9
Vorverarbeitung Dereferenzierung Typische Speicherung der Daten in indirekter Form Lokale Dereferenzierung Viele IO-Operationen Out-of-core ineffizient Globale Dereferenzierung ( Normalization ) Überführung in direkte Form 0,1,2 0,1,3 2,1,0,3 x0 y0 z0 0.23 x0 y0 z0 0.23 x2 y2 z2 0.87 x1 y1 z1 0.12 x1 y1 z1 0.12 x1 y1 z1 0.12... x0 y0 z0 0.23 x1 y1 z1 0.12 x2 y2 z2 0.87 x3 y3 z3 1.66 Nachteil: hohe Redundanz 01.07.2011 10
Vorverarbeitung Meta-Cell Ordnen der Vertices nach x-wert und unterteilen in k Teile 1 n 1 k x Ordnen der Vertices innerhalb der Teile jeweils nach y-wert und unterteilen in k Teile k 1 n 1 x Ordnen der Vertices innerhalb der Teile nach z-wert und unterteilen in k Teile ( Meta-Cells) Zuordnung der Zellen zu den Meta-Cells Kopieren von Vertices falls nötig 01.07.2011 11
Datenstrukturen Interaktive Visualisierung benötigt schnellen Zugriff auf relevante Daten Anlegen eines Index Geometrische Daten Baumstrukturen (Suchbäume) Bäume Octrees K-d-Baum BSP-Baum R-Baum Intervall-Baum BBIO-Baum 01.07.2011 12
Datenstrukturen Octree Raumaufteilung Aufteilung in acht Würfel (zur Veranschaulichung Quadtree) demo 01.07.2011 13
Datenstrukturen k-d-baum Raumaufteilung Hierarchische orthogonale Aufteilung demo [1] http://en.wikipedia.org/wiki/k-d_tree Out-of-Core Clustering wie Meta-Cell [1] http://de.wikipedia.org/wiki/k-d-baum 01.07.2011 14
Datenstrukturen BSP-Baum Raumaufteilung Hierarchische Aufteilung durch freies (k-1)-dimensionales Objekt [1] http://de.wikipedia.org/wiki/bsp_tree 01.07.2011 15
Datenstrukturen R-Baum Raumaufteilung Hierarchische Aufteilung in k-dimensionale Regionen Balanciert demo [1] http://de.wikipedia.org/wiki/r-baum 01.07.2011 16
Oberflächenvereinfachung Sowohl Mittel als auch Zweck Für Contribution Culling wird eine Vereinfachung der Geometrie durchgeführt Existierende in-core-algorithmen können nicht bei großen Datensätzen angewendet werden Allgemein Vertex removal Edge collapse Triangle collapse [4] Bildsynthese-Folien 01.07.2011 19
Oberflächenvereinfachung Fehler Fehler Mittlere Krümmung Gauß-Krümmung Differenzen der Flächeninhalte [4] Bildsynthese-Folien 01.07.2011 20
Oberflächenvereinfachung Spatial Clustering Uniform Einteilung in uniformes Gitter Vertex in einer Zelle zusammenfassen Out-of-Core Vertex-Gewichtung ohne vollständiges Netz Adaptiv Einteilung in uniformes Gitter Erkennung der geometrischen Eigenschaften des Netzes Erneute Einteilung in angepasstes Gitter Zusammenfassen der Vertices [5] Out-Of-Core Algorithms for Scientific Visualization and Computer Graphics 01.07.2011 21
Oberflächenvereinfachung Surface Segmentation Uniform Adaptiv [5] Out-Of-Core Algorithms for Scientific Visualization and Computer Graphics 01.07.2011 22
Rendering Um die Daten zu Rendern müssen sie in den Grafikspeicher geladen werden. (Flaschenhals) Keine unnötigen Daten laden Sichtbarkeitsberechnung Sichtbarkeitsinformationen vorberechnen Culling (to cull: aussortieren, auslesen) Bezeichnet das Aussortieren von nicht sichtbaren oder kaum sichtbaren Daten. Parallelisierung Caching Prefetching Impostors (Betrüger) 01.07.2011 23
Rendering Culling View-Frustrum Culling Entfernen von Objekten außerhalb des Sichtbereichs Einfacher Out-of-core-Ansatz: Traversierung eines Octrees [7] Occlusion Culling Entfernen von verdeckten Elementen Z-Buffer, Deffered Shading [6] [6] http://cumbia.informatik.uni-stuttgart.de/ger/teaching/lecture/ws04/seminar_spiele/bsp/ [7] OpenGL Optimizer Programmer's Guide: An Open API for Large-Model Visualization [7] 01.07.2011 24
Rendering Culling Out-of-core-Ansatz (schwierig) Approximation Contribution Culling (Level Of Detail) Statische LODs mehrere Detailstufen des Netzes oder Modells Adaptives LOD Lokale Anpassung der Detailstufe [4] Bildsynthese-Folien 01.07.2011 25
Rendering Caching/Prefetching Caching Cache: Schneller Puffer für langsamere Speicher (GPU RAM Festplatte) Idee: kleine Änderung zwischen Frames Austauschstrategie LRU (least recently used) LFU (least frequently used) (Spekulatives) Prefetching Vorrausschauendes Caching von Daten Kriterien Position Sichtbarkeit Bedienung 01.07.2011 26
Rendering Impostors / Normal Map Geometrie wird durch Grafik (Texturen) ersetzt [8] Dynamically Generated Imposters Normal/Bump-Map Normalen der Fläche in einer Textur [8] Dynamically Generated Imposters [4] Bildsynthese-Folien 01.07.2011 27
Anwendungsbeispiel iwalk Vorverarbeitung Aufbau des Octree Interaktiv Sichtbarkeitsberechnung PLP(prioritized-layered projection) [9] [9] iwalk: Interactive Out-Of-Core Rendering of Large Models 01.07.2011 28
Anwendungsbeispiel iwalk Caching Prefetching from-point [9] iwalk: Interactive Out-Of-Core Rendering of Large Models 01.07.2011 30
Quellen (Bilder) [1] wikipedia.org [2] http://maettig.com/?page=studium/fat32 [3] Visualization-Folien [4] Bildsynthese-Folien [5] Cláudio T. Silva, Yi-Jen Chiang, Jihad El-Sana, Peter Lindstrom: Out-Of-Core Algorithms for Scientific Visualization and Computer Graphics [6] http://cumbia.informatik.unistuttgart.de/ger/teaching/lecture/ws04/seminar_spiele/bsp/ [7] OpenGL Optimizer Programmer's Guide: An Open API for Large-Model Visualization [8] Gernot Schaufler: Dynamically Generated Imposters [9] Wagner T. Corrêa, James T. Klosowski, Cláudio T. Silva: iwalk: Interactive Out- Of-Core Rendering of Large Models [10] James T. Klosowski, Cláudio T. Silva: The Prioritized-Layered Projection Algorithm for Visible Set Estimation 01.07.2011 31