Chromium
Chromium. Mike Houston, Stanford University and The Chromium Community. How Chromium works. Replaces system’s OpenGL driver Industry standard API Support existing unmodified applications Manipulates streams of API commands Alter/inject/discard commands and parameters
Chromium
E N D
Presentation Transcript
Chromium Mike Houston, Stanford University and The Chromium Community
How Chromium works • Replaces system’s OpenGL driver • Industry standard API • Support existing unmodified applications • Manipulates streams of API commands • Alter/inject/discard commands and parameters • Route commands over a network • Render commands using graphics hardware • State tracking • Allows parallel applications to issue OpenGL • Constrain ordering between multiple streams
Graphics Stream Processing • Treat OpenGL calls as a stream of commands • Form a DAG of stream transformation nodes • Nodes are computers in a cluster • Edges are OpenGL API communication • Each node has a serialization stage and a transformationstage
Stream Serialization S A OpenGL • Convert multiple streams into a single stream • Efficiently context-switch between streams • Constrain ordering using Parallel OpenGL extensions [Igehy98] • Two kinds of serializers: • Network server: • Application: • Unmodified serial application • Custom parallel application
Stream Transformation • Serialized stream is dispatched to “Stream Processing Units” (SPUs) • Each SPU is a shared library • Exports a (partial) OpenGL interface • Each node loads a chain of SPUs at run time • SPUs are generic and interchangeable
SPU Chains • SPUs are loaded as parts of linear chains • Common usage: intercept a few OpenGL calls, pass all others to downstream SPU • Useful for simple state changes, such as “wireframe” drawing
Output Scalability (Sort-First) Server Display Server Display . . . . . . Server Display • Larger displays with unmodifiedapplications • Other possibilities: broadcast, ring network App
Example: Sort-First Server Render Server Render . . . Server Render App Tilesort
Input Scalability (Sort-Last) App App Display . . . App • Parallel geometry extraction • Parallel data submission Server
Example: Sort-Last Application Readback Send Application Readback Send . . . Application Readback Send • Application runs directly on graphics hardware • Same application can use sort-last or sort-first Server Render
SPU Inheritance • The Readback and Render SPUs are related • Readback renders everything except SwapBuffers • Readback inheritsfrom the Render SPU • Override parent’s implementation of SwapBuffers • All OpenGL calls considered “virtual”
Readback’s SwapBuffers void RB_SwapBuffers(void) { self.ReadPixels( 0, 0, w, h, ... ); child.Clear( GL_COLOR_BUFFER_BIT ); child.SemaphorePCR( READBACK_SEMAPHORE ); child.RasterPos2i( tileX, tileY ); child.DrawPixels( w, h, ... ); child.SemaphoreVCR( READBACK_SEMAPHORE ); child.SwapBuffers( ); } • Easily extended to include depth composite • All other functions inherited from Render SPU
More Complicated Example: Hybrid App Server Tilesort Readback Send App Server Tilesort Readback Send . . . . . . App Server Tilesort Readback Send Server Render
Networks Supported • TCP/UDP • Myrinet • Quadrics • Infiniband (coming soon)
New Things to Chromium Dale’s talk • Extensions • DMX Support • Display list management (DLM) • VNC Support • CRUT
Extensions • GL_ARB_fragment_program • GL_ARB_vertex_program • GL_NV_fragment_program • GL_NV_vertex_program • GL_NV_texture_rectangle • GL_EXT_shadow_funcs • GL_EXT_texture_rectangle • GL_IBM_raster_pos_clip
DMX Support • DMX • Distributed Multi-headed X • Single X session across multiple-displays • OpenGL through Chromium • Chromium “DMX aware” • Moving/resizing = retiling • M to N rendering
Display List Management • Display List Manager (DLM) • State tracking is really tricky • Replay state calls on client • Call list on servers • Bounding Box tracking of display list • Future optimizations • Avoid broadcasting data in display list • Send calls once per server as needed
VNC • X forwarding • Forwards GLX calls to client • DRI bypasses X • Can’t get pixel data • OpenGL apps load Chromium • Render on local host • Readback pixel data • Send to user’s display
Quake3 Arena Niederauer, et al.
Viewed in a new way Niederauer, et al.
Architectural Analysis • Intercept geometry • Determine floor positions • Change to orthographic view • Insert clip planes at the ceilings • Split floors apart • Multi-pass rendering “Non-Invasive Interactive Visualization of Dynamic Architectural Environments” Christopher Niederauer, Mike Houston, Maneesh Agrawala, Greg HumphreysACM SIGGRAPH 2003 Symposium on Interactive 3D Graphics
Batch Scheduler Integration • Offline rendering to a webpage • Use massive compute resources • Rendering with Vis cluster • Integrate support with RMS Pittsburg Supercomputer Center
Terascale Computing System Compute Nodes Control File Servers /home Interactive Quadrics Switched ethernet Mass Store Viz Archive buffer Summary • 750 Compute Nodes • 3000 EV68 processors • 6 Tf (peak, est >4Tf on LSMS) • 3. TB memory • 27 TB local disk • Multi-rail fat-tree network • Redundant monitor/ctrl • WAN/LAN accessible • Parallel visualization • File servers: 30TB, ~32 GB/s • Mass store, ~1 TB/hr WAN/LAN Pittsburg Supercomputer Center
Example • qsub –l rmsnodes=3:12,other=visnodes=5 • Job waits until 3 nodes (12 cpus) become available AND 5 vis nodes are available • When resources available, job runs • Visit vis web page for rendering Pittsburg Supercomputer Center
General Improvements • Continue to track OpenGL changes • Add extensions • Optimizations • Display list management • Tilesort • Software Compositors
PICA Support • Parallel Image Compositing API (PICA) • API for hardware and software compositing • Will be supported by most hardware compositors • Chromium support • Hooks almost complete • Need software compositors • Readback (N to 1) • Binary-swap • SLIC • Need info from hardware folks
“Vis as a service” • Better integration with schedulers • Reservation systems • Compute/Render/Display • Distributed event model (CRUT) • Compression • Geometry data • Pixel data • Encryption
Look at how much was done last year! • 4 releases • Constant bug fixes • Constant improvements • Constant optimizations Chromium is supported by a large community! Chromium is used in the real world!
Go get it! http://chromium.sourceforge.net
Acknowlegements • The Chromium community • Greg Humphreys • Brian Paul • Joel Welling • Alan Hourihane • DOE!!!