projekte
Projekt 1
Projekt 2
Projekt 3
Projekt 4
Projekt 5
Projekt 6
Projekt 7
Projekt 8
Projekt 9

Rasterisierungsbeschränkte Visualisierungstechniken / Rendering-Infrastruktur

Dieses Teilprojekt wurde zu Beginn des Projekts zusammengelegt aus dem ursprünglichen Teil 1 („Renderinginfrastruktur für verteilte GPU-basierte Darstellungsmethoden“) und dem ursprünglichen Teil 7 („GPU-Visualisierung: Effiziente GPU-Verfahren für rasterisierungsbeschränkte Visualisierungstechniken“).

Projekt 1.1:
Rendering-Infrastruktur für verteilte GPU-basierte Darstellungsmethoden

Projektpartner: VIS-S, CG-TÜ, CG-KN, MPI

Im Zuge der Konzentration von Rechenressourcen sind datenerzeugende Rechner und Ausgabegeräte oftmals nicht am selben Ort. Die Bilddaten müssen daher komprimiert und übertragen werden, um an anderer Stelle ausgegeben zu werden. Dies ist für technische und wissenschaftliche Anwendungen genauso wichtig wie für die Medizin (Ferndiagnose) oder den Automobilbau (kollaboratives Design). Entfernte Bilderzeugungsserver erlauben die Ausnutzung von leistungsfähiger Hardware zum interaktiven Betreiben von HR-Displays, wobei Parallelisierung auf Clusterarchitekturen sowie die Verwendung von Graphikhardware im Vordergrund stehen. Eine Rendering-Infrastruktur ist darüber hinaus notwendig, um eine gemeinsame und kollaborative Nutzung der Ressourcen an den beteiligten Standorten zu gewährleisten.

Stereo-Darstellung einer astrophysikalischen Simulation zur Masseverteilung im Universum auf einem gekachelten Display mit vier Ausgabekanälen. Die Ausgabe erfolgt über einen lokal angebundenen Cluster-Rechner.

Ziel des Infrastruktur-Teils ist die Bereitstellung von Software, mit der möglichst transparent An-wendungen auf einem großen Tiled Display dargestellt werden können, welchen durch einen Gra-phik-Cluster betrieben wird. Dabei wollen wir möglichst tief, auf der Ebene des Graphiktreibers ansetzen, um damit die größtmögliche Transparenz gegenüber bestehenden Anwendungen zu erreichen. Wir erhoffen uns durch einen solchen Windows-Treiber, den Nutzerkreis von Powerwalls zu erweitern, da keine Überarbeitung bestehender Software erforderlich sein wird. Parallel dazu arbeiten wir am Aufbau einer Stereo-Powerwall mit mehreren zehn Megapixeln in Stuttgart, die dann zusammen mit der bestehenden Anlage in Konstanz zur Erprobung kollaborativer Anwendungen genutzt werden kann. Daher ist der bereits erwähnte Graphiktreiber auch so konzipiert, dass er das Multiplexing der Graphikbefehle auf mehrere Display-Server erlaubt. Für die bereits erwähnte Stereo-Display-Wand ist es zudem wünschenswert, bestehende Anwendung nicht nur transparent auf viele Tiles verteilen zu können, sondern diesen auch Stereo-Fähigkeiten zu verleihen. Obwohl dies prinzipiell auch über den Graphiktreiber geschehen könnte, ist ein solcher Ansatz weniger sinnvoll als eine Erweiterung pro Anwendung, da die Stereo-Parameter stark von dieser abhängen und nicht global festgelegt werden können.

Projekt 1.2:
GPU-Visualisierung: Effiziente GPU-Verfahren für rasterisierungsbeschränkte Visualisierungstechniken

Projektpartner: VIS-S, CG-TÜ, CG-KN, MPI

Der Einsatz von HR-Displays in der medizinischen Visualisierung oder der industriellen CAD/CAE-Entwicklung stellt erhöhte Anforderungen an Darstellungsmethoden bezüglich der Rasterisierungsleistung, d. h. der Erzeugung von Pixeln. Typische wissenschaftlich-technische Visualisierungsverfahren, wie beispielsweise für medizinische Daten (fMRI), Volumen- und Vektorfeldvisualisierung oder Stadtvisualisierung, sind wegen kostenintensiver Pixeloperationen und des mehrfachen Überzeichens von Pixeln besonders problematisch. Daher sollen neue Ansätze zur Beschleunigung von rasterintensiven und graphikhardwarenahen Visualisierungsmethoden entwickelt werden.

Volumenvisualisierung von fMRI-Daten (links), GPU-basierte Projektion von Glyphen (rechts)

Langfristiges Ziel des zweiten Teils von Projekt 1 ist es, aufwendige GPU-basierte wissenschaftliche Visualisierungstechniken in hoher Qualität auf hochauflösenden Displays zur ermöglichen. Da diese meist pixelbasiert sind, ist es sowohl erforderlich, den Aufwand pro Pixel zu reduzieren, ohne dabei die Bildqualität sichtbar zu verringern, was den Einsatz eines besonders hochauflösenden Displays sinnlos machen würde, als auch die Anwendungen auf GPU-Cluster zu verteilen, da eine einzelne GPU Bilder im Größenbereich mehrerer zehn Megapixel auf absehbare Zeit kaum erzeugen können wird. Als interessante Anwendungen sehen wir hier die Volumenvisualisierung, wo moderne CT-Scanner Aufnahmen mit der Auflösung heutiger großer Powerwalls erzeugen können, viel mehr jedoch noch die Visualisierung von Partikeldatensätzen, beispielsweise aus thermo-dynamischen Simulationen, bei der die hohe Auflösung das Erkennen einzelner Elemente in großen Punktwolken erst ermöglicht.

Stand der Forschung

Der Betrieb hochauflösender Tiled Displays erfolgt heutzutage meist mit Hilfe von Graphik-Clustern. Die Verwendung bestehender Anwendungen gestaltet sich daher schwierig, da Cluster normalerweise speziell angepasste Anwendungen erfordern, sei es durch Einsatz einer ent-sprechenden Middleware oder durch eine passende Implementierung von Grund auf. Ins-besondere im Bereich der Middleware existieren bereits zahllose Softwaresysteme von Szenengraphen, die von sich aus in der Lage sind, verteilt auf einem Graphik-Cluster zu laufen, über VR-Middleware wie VRJuggler oder die CAVE-Lib bis zu Systemen wie SAGE, die eine Art „verteilten Framebuffer“ darstellen, in die eine Anwendung ihren Backbuffer kopieren kann. Diese Sofware-bibliotheken haben alle gemeinsam, dass sie einer Anwendung, welche für sie geschrieben wurde, die Verteilung auf den Cluster mehr oder weniger abnehmen.

Einstellungen des Virtuellen Displays

Auch der strukturelle Aufbau verteilter Graphikanwendungen wurde bereits untersucht, wobei zwischen einer Client-Server-Architektur, bei der die Anwendung, mit der der Nutzer interagiert, auf einem Knoten läuft und auf mehreren Display-Servern eine Anzeige erzeugt wird, und einer Master-Slave-Architektur unterschieden wird, bei der mehrere Instanzen der Anwendung auf verschiedenen Knoten synchronisiert ausgeführt werden. Die am weitesten verbreitete Lösung zur transparenten Verteilung vorhandener Graphikanwendungen auf einen Cluster stellt wohl Chromium dar, welches die OpenGL-Bibliothek des Betriebssystems ersetzt durch eine, die die Graphikbefehle über das Netzwerk verteilt. Es existieren verschiedene Chromium-Klone, die auf demselben Prinzip basieren, aber nicht an die Funktionsvollständigkeit von Chromium heranreichen. Für Linux-Systeme existiert darüber hinaus ein verteilter X-Server, der die vorhandene Remote-Fähigkeit des Graphiksubsystems ausnutzt, um die 2D-Befehle eines Client-Rechners an verschiedene Display-Server einer Powerwall zu broadcasten.

Kommerzielle Anbieter von großen Tiled Displays haben in der Regel ebenfalls Softwarelösungen im Angebot, um ihre Wände anzusteuern. Dabei können meist einzelne Desktops oder andere Bildquellen wie Videos in Originalauflösung beliebig auf der Wand positioniert werden oder diese Ausgabe kann auf die Auflösung der Powerwall heraufgezoomt werden, wofür normalerweise eine spezielle Hardware zum Einsatz kommt.

Stand der eigenen Arbeiten

Wie einleitend bereits erwähnt, haben wir mit dem Bau eines Windows-Graphiktreibers begonnen, welcher gegenüber dem Betriebssystem die Knoten des Clusters als ein großes Display ausgibt und dadurch volltransparent ist.

Der Aufbau des Systems ist in Abb. 1 dargestellt: Der zweiteilige Kernel-Mode-Graphiktreiber ver-wendet die Kernel-Mode-Kommunikationsschicht (TDI), um alle an den Treiber gerichteten Anfragen zunächst an einen Display-Server weiterzuleiten, welcher diese wiederum an die restlichen Knoten weitergibt. Die zu versendenden Netzwerkpakete sind dabei in der Regel (bis auf die Blit-Operationen) relativ klein. Insbesondere die Verwendung der Kernel-Mode-Kommunikation stellte sich bei der Implementie-rung als problematisch heraus, da ihre Verwendung in einem Graphiktreiber nicht vorgesehen ist, speziell nicht zu dem Zeitpunkt, an dem der Graphiktreiber eine Anfrage – durch Verschicken von Netzwerkbotschaften – bearbeiten muss. Inzwischen ist es uns jedoch durch Umsortieren der Teil-aufgaben und Annahmen über die Arbeitsweise des Windows-NT-I/O-Managers gelungen, eine augenscheinlich tragfähige Lösung zu finden, die jetzt die tatsächliche Implementierung der Treiberanfragen ermöglicht.

Die Planungen für die in Stuttgart zu errichtende, hochauflösende Powerwall wurden durch erhebliche Verzögerungen bei der Gebäudeplanung zurückgeworfen. Bei der nichtsdestotrotz weiterlaufenden Konzeption der technischen Installation haben wir die direkt an die Projektoren angeschlossenen Display- und Compositing-Knoten als potentiellen Flaschenhals identifiziert, da hier eine große Zahl von Pixeln in kurzer Zeit zusammenläuft. Um dies besser einschätzen zu können, wurden Datendurchsatzmessungen in verschiedenen Konfigurationen durchgeführt, hauptsächlich im Hinblick auf die Konzentration zahlreicher Graphikkarten in einem Rechner. Dabei wurde auch die Nvidia-QuadroPlex-Technologie zum Anschluss von derzeit maximal vier GPUs an einen Rechner geprüft. Die Ergebnisse waren insofern überraschend, als dass zwei in einer externen QuadroPlex eingebaute Karten, die sich einen PCIe-Steckplatz teilen müssen, und zwei interne Karten in separaten Steckplätzen keine signifikanten Unterschiede zeigen, was an der Architektur der Graphiktreiber von Nvidia liegt. Da der von uns mit einer Graphikkarte praktisch erreichte Durchsatz für große Auflösungen keine überwältigend viele FPS erlaubt und diese Daten auch über das Netzwerk empfangen und dann dekomprimiert sein wollen, erscheint es uns im Moment weniger erstrebenswert, möglichst viele Ausgänge auf möglichst wenige Rechner zu verteilen. Wir planen jedoch, unsere Messungen mit PCIe-2.0-Graphikkarten zu wiederholen.

Softwareseitig wurden Algorithmen zur Volumenvisualisierung auf Cluster-Systemen untersucht, wobei sowohl das Load-Balancing auf Seiten der Eingabedaten im Objektraum als auch die Lastverteilung im Bildraum bei einem Sort-First-System, welches große Bildschirmauflösungen zum Ziel hat, adressiert wurden. Neben der Volumenvisualisierung eignen sich hochauflösende Tiled Displays besonders für die Darstellung umfangreicher Partikel-Datensätze, wie sie beispielsweise bei thermodynamischen Simulationen entstehen. Hierfür wurde in Zusammenarbeit mit dem Institut für Technische Thermodynamik der Universität Stuttgart ein GPU-basiertes Verfahren zur Darstellung von Metaball-Oberflächen entwickelt. Da diese Darstellungstechnik nur schlecht mit der Auflösung skaliert, erhoffen wir uns von der Integration des von den Projektpartnern am Max-Planck-Institut in Tübingen entwickelten Trackingverfahrens zur perzeptionsabhängigen Qualitätssteuerung eine deutliche Verbesserung der Darstellungsgeschwindigkeit.

Schematischer Aufbau des Graphiktreibers und der Display-Server-Komponenten.

Die Darstellung von Standard-Anwendungen oder vorhandenen, niedrig aufgelösten Videodaten, wie sie zum Beispiel bei Videokonferenzen oder dem kooperativen Arbeiten an mehreren Gigapixel-Displays anfallen, auf einem hochauflösenden Display erfordert das Skalieren der Bildinformationen. Dabei ist bei solch großen Zielauflösungen mit einem besonders hohen Zoomfaktor zu rechnen, so dass die üblichen Zoomverfahren keine zufriedenstellende Qualität erreichen. Um sowohl im Bezug auf Qualität als auch Verarbeitungsgeschwindigkeit den im Projekt gestellten Anforderungen Rechnung zu tragen, wurden spezielle GPU-basierte, kantenerhaltende Zoomtechniken untersucht und implementiert.

Die zum Betrieb eines Gigapixel-Display erforderliche Rechnerinfrastruktur kann neben der reinen Bilderzeugung auch für allgemeinere Berechnungen benutzt werden und somit sowohl die Datengenerierung in Simulationen als auch die Darstellung beschleunigen. Solchen GPGPU-Anwendungen tragen die Graphikkartenhersteller durch neue APIs wie CUDA Rechnung, die jedoch hauptsächlich zur Verwendung mit einer GPU gedacht sind. Im Hinblick auf den zum Betrieb eines Tiled Displays erforderlichen Graphik-Clusters wurde daher eine Verallgemeinerung der CUDA-Schnittstelle auf eine GPU-Cluster-Architektur vorgenommen. Diese erlaubt die Entwicklung verteilter GPU-Applikationen unter Verwendung eines eigenen Compilers, der dem Programmierer Kommunikations- und Lastverteilungsaufgaben vollständig abnimmt.

Veröffentlichungen

M. Kraus, M. Eissele, M. Strengert: GPU-Based Edge-Directed Image Interpolation. In: Scandinavian Conference on Image Analysis (SCIA 2007), S. 532-541. 2007

M. Kraus, M. Strengert, T. Klein and T. Ertl: Adaptive Sampling in Three Dimensions for Volume Ren-dering on GPUs. In: Asia-Pacific Symposium on Visualization (APVIS'07), S. 113-120, 2007

B. Moloney, D. Weiskopf, T. Möller, M. Strengert: Scalable Sort-First Parallel Direct Volume Rendering with Dynamic Load Balancing. In: Eurographics Symposium on Parallel Graphics and Visualization (EGPVG 2007), S. 45-52. 2007

C. Müller, S. Grottel, T. Ertl: Image-Space GPU Metaballs for Time-Dependent Particle Data Sets. In: Proceedings of VMV 2007, S. 31-40, 2007

C. Müller, M. Strengert, and T. Ertl: Adaptive Load Balancing for Raycasting of Non-Uniformly Bricked Volumes. In: Journal of Parallel Computing, Vol. 33, Issue 6, S. 406-419, 2007

M. Strengert, C. Müller, C. Dachsbacher, T. Ertl: CUDASA: Compute Unified Device and Systems Architecture. Accepted for: Eurographics Symposium on Parallel Graphics and Visualization (EGPVG 2008), 2008

Sonstige Forschungsleistungen (Patente/Vorträge/Ausstellungen etc.)

8.11.2007 Vortrag auf der VMV im Rahmen des BW-FIT Kolloquiums

Koordination:

Prof. Dr. Thomas Ertl (VIS-S)
Institut für Visualisierung und Interaktive Systeme
Universität Stuttgart
Universitätsstraße 38, 70565 Stuttgart
Tel: 0711/7816-331
Fax: 0711/7816-340
thomas.ertl@vis.uni-stuttgart.de
http://www.vis.uni-stuttgart.de