Kapitel 5: Graphikhardware und Parallelisierung

Ähnliche Dokumente
OpenGL. (Open Graphic Library)

Grundlagen der Spieleprogrammierung

Grundlagen der Spieleprogrammierung

3D Programmierpraktikum: OpenGL Shading Language (GLSL)

Jörn Loviscach Hochschule Bremen

computer graphics & visualization

Programmierpraktikum 3D Computer Grafik

Computer Graphik I Intro

Zwischenvortrag zum Entwicklungsstand der Bachelor-Arbeit. Direct 3D-Output für ein Rendering Framework

RST-Labor WS06/07 GPGPU. General Purpose Computation On Graphics Processing Units. (Grafikkarten-Programmierung) Von: Marc Blunck

Softwareprojekt Spieleentwicklung

Architektur moderner GPUs. W. Sczygiol - M. Lötsch

Computer Graphics Shader

4D Server v12 64-bit Version BETA VERSION

Ansätze 4. GPU. Echtzeit- Raytracing. Polygon- Rendering. Computerspiele Sommer (c) 2013, Peter Sturm, Universität Trier 1

GPU Programmierung 6. Juli 2004 M. Christen, T. Egartner, P. Zanoni

Verteiltes Rendering: Herausforderungen und Lösungsansätze

Excel beschleunigen mit dem mit Windows HPC Server 2008 R2

1. Sichtbarkeitsproblem beim Rendern einer dreidimensionalen Szene auf einer zweidimensionalen

Hochschule Bremen. Rechnerstrukturen Labor WS 04/05 I7I. Thema: Grafikkarten. Laborbericht. Datum

Karten-Freischaltung mit dem UNLOCK MANAGER

Thin versus Fat Clients

Ein kleiner Einblick in die Welt der Supercomputer. Christian Krohn

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum

Welche HP KVM Switche gibt es

SS08, LS12, Friedrich-Alexander-Universität Erlangen Florian Hänel, Frederic Pollmann HS Multicore Architectures and Programming GPU EVOLUTION

Marketing-Leitfaden zum. Evoko Room Manager. Touch. Schedule. Meet.

Quick Reference Historie des Dokuments

Voraussetzungen für die Nutzung der Format Rechenzentrumslösung (Hosting)

GPGPU mit NVIDIA CUDA

Lizenzen auschecken. Was ist zu tun?

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Seminar Game Development Game Computer Graphics. Einleitung

Mikrocontroller Grundlagen. Markus Koch April 2011

AirKey Das Handy ist der Schlüssel

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet

Um ein solches Dokument zu erzeugen, muss eine Serienbriefvorlage in Word erstellt werden, das auf die von BüroWARE erstellte Datei zugreift.

Select & Preprocessing Cluster. SPP Server #1. SPP Server #2. Cluster InterConnection. SPP Server #n

ERPaaS TM. In nur drei Minuten zur individuellen Lösung und maximaler Flexibilität.

Copyright 2014 Delta Software Technology GmbH. All Rights reserved.

Parallels Mac Management 3.5

Entwicklungen bei der Linux Clustersoftware

C++ Tutorial: Timer 1

Einführung in die Programmierung

Menü Netzwerk 1. Job-Pufferung Netzwerkpuffer Netzwerk<x>-Konfig NPA-Modus PCL-SmartSwitch. PS-SmartSwitch MAC-Binär-PS. Drucken. Arbeiten mit Farben

Im Jahr t = 0 hat eine Stadt Einwohner. Nach 15 Jahren hat sich die Einwohnerzahl verdoppelt. z(t) = at + b

GEZIELT MEHR SICHERHEIT MIT 4I ACCESS SERVER & 4I CONNECT CLIENT

Diese CD ersetzt die ursprünglich auf der RAVE-CD enthaltenen Repair Operation Times (ROTs) und die auf der KSD-CD enthaltenen Fehlercodes.

Spotlight 5 Gründe für die Sicherung auf NAS-Geräten

10.1 Auflösung, Drucken und Scannen

Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit,

Die Shading Language

Abituraufgabe zur Stochastik, Hessen 2009, Grundkurs (TR)

Hinweise zur Installation der USB Treiber für Windows XP 32bit

PCC Outlook Integration Installationsleitfaden

Wo finde ich die Software? - Jedem ProLiant Server liegt eine Management CD bei. - Über die Internetseite

OSEK-OS. Oliver Botschkowski. PG AutoLab Seminarwochenende Oktober AutoLab

Virtual Private Network. David Greber und Michael Wäger

Anbindung LMS an Siemens S7. Information

Lizenzierung von System Center 2012

DESIGN GUIDE 3D-DRUCK !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! und Ihre Ideen werden be/greifbar. !!! DESIGN GUIDE für 3D-DRUCK !!!!!!! Version 02 am

WLAN Konfiguration. Michael Bukreus Seite 1

crm-now/ps Webforms Webdesigner Handbuch Erste Ausgabe

InterCafe Handbuch für Druckabrechnung

Agiles Design. Dr.-Ing. Uwe Doetzkies Gesellschaft für Informatik mail:

Software-Lizenzierung und Aktivierung: Verteilen von Software mit Apple Remote Desktop

Android Remote Desktop & WEB

Tutorium Informatik 1. Aufgabe 2: Formatierte Ein- und Ausgabe

Hardware, Software, Services

Effizient, sicher und flexibel: Desktop-Virtualisierung mit Citrix XenDesktop

BASIS Karten, WEA-Katalog, Projektierung, Objekte etc.

Installation Hardlockserver-Dongle

Der Weg zur eigenen App

GLASFASERNETZ DATACENTER RHEIN-NECKAR RHEIN-NECKAR-CLOUD MULTIMEDIA. Fixed Line BESCHREIBUNG. carrier ethernet TBFL_PFK_MA_

TechNote. Produkt: TWINFAX 7.0 (ab CD_24), TWINFAX 6.0 Modul: SMTP, T611, R3 Kurzbeschreibung: Briefpapier- und Mailbodyunterstützung

Preis- und Leistungsverzeichnis der Host Europe GmbH. Dedicated Storage - ISCSI V 1.1. Stand:

Wireless Mobile Classroom

Wie Google Webseiten bewertet. François Bry

Videoüberwachung als Virtuelle Maschine. auf Ihrem Server, PC oder Mac. Peter Steinhilber

GPGPU Basiskonzepte. von Marc Kirchhoff GPGPU Basiskonzepte 1

QTS. Qualitätssicherungs-Teileverfolgungs- System online. Benutzung der grafischen Oberfläche via Internetbrowser

Computergrafik Universität Osnabrück, Henning Wenke,

Objektorientierte Programmierung

Installation und Inbetriebnahme von Microsoft Visual C Express

Bewusster Umgang mit Smartphones

Terrain-Rendering mit Geometry Clipmaps

Application Service Providing ASP - das neue Geschäftsmodell im ecommerce!

Einsatz von LabVIEW FPGA im Rahmen eines HIL-Testautomaten. Christian Tölle

Installation OMNIKEY 3121 USB

Predator G3. Premium Design. Advanced Technology. Immersive entertainment

RFID Lösungen Fragebogen über Ihr RFID Projekt

1 Was ist das Mediencenter?

Digi Vox Ultimate Pro

Bedienungsanleitung für den Dokumentenserver

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Installationsvoraussetzungen

LabView7Express Gerätesteuerung über LAN in einer Client-Serverkonfiguration. 1. Steuerung eines VI über LAN

Ein buchner Unternehmen: Starke Software Gmbh Lise-Meitner-Str Schwentinental Tel.:

Installation der SAS Foundation Software auf Windows

Transkript:

Kapitel 5: Graphikhardware und Parallelisierung 1 Überblick Taxonomie für Graphikhardware Historie der Graphikhardware Architektur-Beispiele Programmierbare Hardware Taxonomie von Parallelisierungsansätzen Tiled Displays und Remote Rendering 2

Graphik-Hardware Abbildung der Graphik-Pipeline auf Hardwareund Software-Komponenten Taxonomie nach Akeley (GTXRD) 3 4 Graphik-Hardware Beispiele GTXR-D dummer Framebuffer (z.b. VGA) GTX-RD Rasterop Unterstützung (z.b. SGI O2) GT-XRD T&L Hardware (z.b. SGI RealityEngine, GeForce) G-TXRD Scenegraph-Traversal in Hardware (z.b. E&S) Anforderungen an Geometrie-Subsystem Ca. 100 FLOPs pro Vertex (ca. je 28 für je T&L) Ca. 300 FLOPs pro Dreieck Bei 10 Mio. Dreiecke/s T&L-Leistung ca. 3 GigaFLOPs jedoch nur 500.000 Dreiecke in Szene bei 20 Hz! Anforderungen an Raster-Subsystem >10 Ops pro Pixel (ohne spezielles Texturing) Bei 100 MegaPixel/s Füllrate 1000 MIPS Leistung Bei 20Hz und 10 Pixel/Dreieck: 500.000 Dreiecke pro Frame Bei 1Kx1K Framebuffer 5-fach Overdraw je Pixel

5 20 Jahre Graphik-Hardware 1980er: einfache Rasterisierung (bitblt, Fenster, Geraden, Polygone, Text-Fonts) 1990-95: Geometry-Engines nur bei High-End- Workstations (z.b. SGI O2 vs. Indigo2) ab 1995: neue Rasterisierungsfunktionen (Realismus durch Texturen) z.b: SGI Infinite Reality ab 1998: Geometrie-Prozessor (T&L) auf PC-Graphik 2000: PC-Graphik zieht mit High-End-Performance-Werten gleich, 3D wird Standard im Aldi-PC 2001: PC-Graphik bietet neue Funktionsvielfalt (Multi-Texturing, Vertex- und Pixel-Shader) 2003: Shading Languages: OpenGl 2.0, NVIDIA Cg GPUs > 100 Mio. Trans., 8 Pipes mit 16 Texture Units 2004: NV40 & R420 mit 150 Mio. Transistoren, VS 3.0, PS 3.0, GLSL Implementierungen verfügbar, Überbuffers, Graphik und Parallelität Computergraphik-Hardware war immer parallel intern (auf dem Chip oder Board) mehrere Geometrieeinheiten mehrere Rasterisierer bedienen einen Framebuffer Multi-Pipe Mehrere Graphikkarten in einem System (evtl. SMP) bedienen ein oder mehrere Displays Verteilte Graphik (Distributed Graphics) mehrere Knoten eines eng gekoppelten Graphik-Clusters mit jeweils ein (oder mehreren) Graphikkarten bedienen ein oder mehrere Displays gesteuert von einer Anwendung 6

SGI Onyx Architektur 2 Pipes - Geometry Engines (GE) - Rastermanger (RM) - Display Generator (DG) 7 Aufbau InfiniteReality IR2/3 Geometry Pipe 4 Geometry Engines Raster Manager bis zu 4 RM pro Pipe Fragment Generator Image Engines flexibles Framebuffer- Format Display Generator bis zu 8 Kanäle 8

Trend Graphik-Hardware Schnellere Entwicklung als Moore sches Gesetz Verdopplung der Transistorfunktionen alle 6-12 Monate getrieben durch den Spielemarkt Verbesserung bei Leistung und Funktionalität Texturen, Multi-Texturen, Texture Shader Pixel-Operationen (Transparenz, Blending, Pixel Shader) Geometrie- und Beleuchtungsmodifikation (Vertex Shader) Graphik CPU Leistung Netzwerk Zeit 9 Exponentielles Wachstum NVIDIA GeForce FX 6800U (222M) ATI Radeon X800 XT (160M) transistors (Mio) 120 110 100 90 80 70 60 50 40 30 20 10 NVIDIA GeForce FX 5800 (125M) ATI Radeon 9700 Pro (110M) NVIDIA GeForce4 (63M) NVIDIA GeForce3 (57M) ATI Radeon 8500 (60M) Riva 128 (3M) 0 9/97 3/98 9/98 3/99 9/99 3/00 9/00 3/019/01 3/02 9/02 3/03 time (month/year) 10 6/04

High-end GPU - Characteristika Hersteller: Transistoren Technologie Taktrate Mem Bandbreite Füllrate (peak) Pixel Pipelines Texturen pro Unit FSAA Bits pro Farbkanal Tri transform (peak) Dreiecke (3Dmark) Vertex Shader ATI Radeon 9800 P 107 Mio 0.15 micron 380 MHz 22 GB/s 3 GigaPixel/s 8 8 6x 18 Gsample/s 10 380 Mio 19 Mio 4 Nvidia GeforceFX 5900 U 130 Mio 0.13 micron 450 MHz 27 GB/s 1.8/3.6 GigaPixel/s 4/8 16 4x 27 Gsample/s 10 315 Mio 28 Mio 4+ www.tomshardware.de 11 Nvidia Geforce FX 6800 Vertex Processing Units (6) Fragment Shader Units (16) Raster Operation Units (16) 12

Nvidia Geforce FX 6800 Vertex Processing Unit Fragment Shader Unit Raster Operation Unit 13 Von der Konfigurierbarkeit zur Programmierbarkeit Konfigurierbarkeit : Wähle Hardware-Verarbeitungsoptionen durch State Changes T&L: verschiedene Textur-Koordinaten-Generierungsarten Rasterisierung: Imaging Subset (e.g. Filterung) Fragment-Verarbeitung: verschiedene Blending-Modi Programmierbarkeit : Kleine Programme bestimmen Hardware-Verhalten T&L: Vertex Shader (Vertex-Programme) Rasterisierung: Texture Shader Fragment-Verarbeitung: Pixel Shader (Fragment-Programme) Formuliere Shader in Assembler oder High-Level Shading Language und kompiliere (im Treiber) 14

Programmierbare GPUs (aus dem NVIDIA Cg Manual) 2 or mehr programmierbare Prozessoren in der GPU Statische Pipeline (mit Konfigurierbarkeit) bleibt, wo keine Flexibilität notwendig (oder möglich) 15 Shader Vertex Shader programmierbare Berechnung von Vertex-Attributen alles, was linear dazwischen interpoliert werden kann Vertex-Position, Vertex-Normalen, Vertex-Farben Texturkoordinaten (Environment-Mapping) keine Vertizes können generiert/gelöscht werden keine Information über Topologie Fragment Shader programmierbare Berechnung von Pixel-Attributen alles, was pro Pixel berechnet werden sollte Farben, Normalen, Texturwerte Fragmente können nicht erzeugt bzw. verschoben werden keine Information über zugehörige geometrische Primitive Stream Processing 16

17 Low-level APIs Ähnlichkeit mit Assembler: nahe an der Hardware-Funktionalität Input: Vertex/Fragment-Attribute Output: neue Vertex/Fragment-Attribute Sequenz von Register-Instruktionen Stark beschränkter Kontrollfluss (wenn überhaupt) Plattform-abhängig ABER: Konvergenz! Die low-level APIs von heuer: OpenGL extensions: GL_ARB_vertex_program, GL_ARB_fragment_program DirectX 9: Vertex Shader 2.0, 3.0 Pixel Shader 2.0, 3.0 # c[4] = (1,0.5,0,0) # R2.x = L*N ADD R7,R2.x,c[4].x; # L*N + 1 MUL R8,R7,c[4].y; # (L*N + 1)/2 ADD R9,-R8,c[4].x; # 1 - (L*N + 1)/2 Die low-level APIs von letzten Jahr: OpenGL extensions: GL_NV_vertex_program(1_1), GL_NV_texture_shader(2,3), GL_NV_register_combiners(2), GL_NV_fragment_program, GL_EXT_vertex_shader, GL_ATI_fragment_shader, GL_ATI_text_fragment_shader DirectX 8.0 and 8.1: Vertex Shader 1.0, 1.1, Pixel Shader 1.0, 1.1, 1.2, 1.3, 1.4 High-level APIs Ähnlichkeit zu C/C++ Datentypen (Primitive, Vektoren, Matrizen) Flusskontrolle (if, for, functions) Spezielle Funktionen (dot, lit) Plattform-unabhängig Die high-level APIs dieses Jahres Cg (nvidia) C for Graphics HLSL (Microsoft) High-level shading language, Teil von DirectX 9 OpenGL 2.0 Shading Language ARB Extension in OpenGL 1.5 float4 cspec = pow(max(0, dot(nf, H)), phongexp).xxx; float4 cplastic = Cd * (cambi + cdiff) + Cs * cspec; 18

Vertex-Verarbeitung: Fixed vs. Prog. Konfigurierbare Vertex Pipeline Programmierbare Vertex Pipeline 19 Fixed Function Rasterization Vertex Clamping Rasterisierung 20

Fragment-Verarbeitung: Fixed vs. Prog. Konfigurierbare Fragment Pipeline Programmierbare Fragment Pipeline 21 Syntax der GLSL stark angelehnt an ANSI C Datentypen: float, int, bool vec{2,3,4}, ivec{2,3,4}, bvec{2,3,4} mat{2,3,4} sampler{1,2,3}d void Funktionen main als Einsprungspunkt Parameter in, out, inout, const Übergabe by-value Eingebaute Funktionen Strukturierung Sequenz Selektion (if-else) Schleife (for, white, do-while) Sprünge (return, break, continue, discard) Pragmas 22

Beispiel Vertex- & Fragment-Shader 23 Integration on OpenGL 24

Taxonomie der Graphik-Parallelität Wo wird was sortiert? Bildschirmunterteilung oder Bild-Compositing Sort-First Database Traversal Sort-Middle Database Traversal Sort-Last Database Traversal Preprocessing 3D Primitives Preprocessing Preprocessing G G G G G G G G G G G G 2D Primitives R R R R R R R R R R R R Rendered Pixels Display Display Display 25 [Molnar et al. 94] Sortierungsstrategien Sort-Middle flexibel, verwendet in RealityEngine (Dreiecksbus) ungeeignet für PC, da G und R nicht separierbar Sort-First gut für Bildschirmaufteilung (Multi-Tiled-Display) skaliert gut mit Bildschirmauflösung schlecht für große Szenen Sort-Last erfordert Tiefentest pro Pixel (Depth-Compositing) skaliert gut mit Szenengröße schlecht für hohe Bildschirmauflösung 26

Sort-First Client Phase 1 Servers Phase 2 Display Phase 3 27 Sort-Last Servers Client Phase 1 Peer-to-Peer Communication Phase 2 Display Phase 3 28

Hybrides Sort-First und Sort-Last Unterteile Bildschirm und Szene Clustering von Objekten im Objektraum gemäß ihrer Überlappung im Bildraum (blickpunktsabhängig) weniger redundantes Rendering weniger Compositing überlappender Pixel gute Skalierbarkeit [Samanta et al. 00] 70 60 29 Speedup 50 72% 40 Hybrid 30 45% 20 Sort-Last 10 25% Sort-First 0 0 20 40 60 80 Number of servers Software für Graphik-Cluster WireGL / Chromium (Stanford) App Server App Server.. App Server Server Display Parallel OpenGL Parallel OpenGL [Humphreys 01] 30

Verteilte Graphik für ein Display Graphikkarte übernimmt Teil des Bildes oder der Szene Anschluss (digital) an Hardware-Bildcompositing Prototyp: Lightning-2 von Stanford/Intel Sepia von HP Alternativ: Rücklesen des Framebuffer, Transport über Netzwerk und Zusammenfügen in Software Client Readback Send Client Readback Send Depth Composite Server Render. 31 Readback Client Send Graphikserver Remote Visualization Wie kommt das Bild zum Benutzer? Framebuffer auslesen, komprimieren, senden Interaktion? Spezielle Client-Software? Qualität? Ermöglicht ASP für Pre- und Postprocessing Lösungen: Spezielle Client-Server-Anwendung SGI OpenGL VizServer Generische Lösung basierend auf VNC (Virtual Network Computing), Univ. Stuttgart 32