Title: Chromium
1Chromium
- Mike Houston, Stanford University
- and
- The Chromium Community
2How Chromium works
- Replaces systems 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
3Graphics 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
transformation stage
4Stream Serialization
- 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
5Stream 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
6SPU 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
7Output Scalability (Sort-First)
App
- Larger displays with unmodified applications
- Other possibilities broadcast, ring network
8Example Sort-First
App
Tilesort
9Input Scalability (Sort-Last)
Server
- Parallel geometry extraction
- Parallel data submission
10Example Sort-Last
Server
Render
- Application runs directly on graphics hardware
- Same application can use sort-last or sort-first
11SPU Inheritance
- The Readback and Render SPUs are related
- Readback renders everything except SwapBuffers
- Readback inherits from the Render SPU
- Override parents implementation of SwapBuffers
- All OpenGL calls considered virtual
12Readbacks 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
13More Complicated Example Hybrid
Server
Render
14Networks Supported
- TCP/UDP
- Myrinet
- Quadrics
- Infiniband (coming soon)
15New Things to Chromium
- Extensions
- DMX Support
- Display list management (DLM)
- VNC Support
- CRUT
16Extensions
- 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
17DMX 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
18DMX In Action
19Display 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
20VNC
- X forwarding
- Forwards GLX calls to client
- DRI bypasses X
- Cant get pixel data
- OpenGL apps load Chromium
- Render on local host
- Readback pixel data
- Send to users display
21What are people doing with Chromium?
22Dynamic Screen Calibration
23Quake3 Arena
Niederauer, et al.
24Viewed in a new way
Niederauer, et al.
25Architectural 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
26Batch Scheduler Integration
- Offline rendering to a webpage
- Use massive compute resources
- Rendering with Vis cluster
- Integrate support with RMS
Pittsburg Supercomputer Center
27Terascale Computing System
Summary
- 750 Compute Nodes
- 3000 EV68 processors
- 6 Tf (peak, est gt4Tf 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
28Example
- qsub l rmsnodes312,othervisnodes5
- 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
29What coming in the next year?
30General Improvements
- Continue to track OpenGL changes
- Add extensions
- Optimizations
- Display list management
- Tilesort
- Software Compositors
31PICA 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
32Vis as a service
- Better integration with schedulers
- Reservation systems
- Compute/Render/Display
- Distributed event model (CRUT)
- Compression
- Geometry data
- Pixel data
- Encryption
33Look 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!
34Go get it!
http//chromium.sourceforge.net
35Acknowlegements
- The Chromium community
- Greg Humphreys
- Brian Paul
- Joel Welling
- Alan Hourihane
- DOE!!!