Title: High Resolution Displays at PPPL
1High Resolution Displays at PPPL
- Mike Miller
- mmiller_at_pppl.gov
- mmiller_at_eden.rutgers.edu
2Topics
- Single Machine Applications
- PowerPoint Presentations
- PSpice / ExpressPCB
- Stepper Motor Control Circuit
- AVS Express
- Limitations
- Parallel Visualization
- OpenGL concepts
- Systems currently in use
- (Custom solutions)
- WireGL
- Chromium
- How to execute
- Performance
3Single Machine Applications
- Hardware/Software Required
- Pentium 4 1.5GHz
- 1 GB Ram
- 40 GB Hard Disk
- 3 Matrox G200MMS Quad
- 699 each
- WinNT Required
- Matrox Virtual Desktop Hack
- Limitations
- PCI Bus
- 33 MHz 32bit 132 MB/sec
- Total for all devices
- Image Size
- 4096 x 2304 9 megapixels
- 18 MB/image _at_ 16bit
- 65,536 colors
- 7.33fps max
- 27 MB/image _at_ 24bit
- 16,777,216 colors (standard)
- 4.89fps max
4Implementing Parallel Visualization
- Hardware
- Dual P4 / 1.5GHz
- Myrinet Networking
- 1280 megabits / second
- 13 ms latency mostly consistent
- Uses GM, not TCP/IP
- 100 Mb switch
- 100 megabits/second
- 30 ms latency varies by size
- NVIDIA Quadro 2 Pro
- 1024 x 768 _at_ 60Hz
- Total Resolution 4096x2304
- Software
- Debian 2.2r4 testing
- GM 1.5-pre2b
- vncwall 1.0
- WireGL 1.2.1
- Chromium (nightly CVS)
5OpenGL Overview
http//www.opengl.org/
- High level graphics API
- Not focused on low level (pixel operations), but
its possible - The user defines geometric primitives
- All primitives have properties associated with
them
- Examples
- Primatives
- Pixels
- Vertices
- Create triangles
- Properties
- Material
- Lighting
6Example Atlantis
- Definition
- glBegin(GL_POLYGON)
- glVertex3fv(P001)
- glVertex3fv(P002)
- glVertex3fv(P003)
- glNormal3fv(N01)
- glEnd(GL_POLYGON)
- Rendering
- glPushMatrix(MASK) / glPopMatrix(MASK)
- glRotatef()
- glLightfv()
- glMaterialfv()
- glEnable(MASK)
- etc
7How do we Distribute the Display?
- Customized Solution
- Used by main campus
- Custom Graphics Apps
- Each application is rewritten to facilitate
selective rendering - Time Consuming
- Impossible for closed source software
- Virtual Display Driver
- Buggy, hard to implement in Windows
- Intercept Solutions
- vncwall
- Virtual Network Computing
- WireGL
- Intercepts OpenGL calls
- Chromium
- WireGL code base, many additions
8VNC over a Display Wall
http//www.ncsa.uiuc.edu/TechFocus/Deployment/DBox
/
- Standard VNC
- Virtual Network Computing
- Developed by ATT
- Allows remote execution display of applications
- Similar tossh ltremotegt, export DISPLAYltlocalgt
- Distributed VNC
- Developed by NCSA
- Allows the viewer to run on multiple machines /
only display certain tiles - Relatively efficient
- Does not implement GLX
9WireGL
- Replaces OpenGL libraries
- opengl32.dll (Windows)
- libGL.so (Linux / IRIX)
- wgl helper application
- Copies files to /tmp/wglXXXXX
- Executes code in above dir.
- pipeserver
- Runs on the servers
- reyclient, paredXXservers
- How it works
- libwiregl_client.so intercepts an OpenGL call
- Encodes using a custom packet
- Sends it to the appropriate machine
- Pipeserver converts that WireGL code back to an
OpenGL call
10Normal OpenGL vs WireGL
Normal Program
WireGLed Program
Program
Program
11GLX vs. WireGL
- GLX
- Designed to interface OpenGL into the X protocol
- Minimum state tracking
- Not designed for high speed operation
- Often replaced by DRI for desktop applications
- WireGL
- Designed for efficient state tracking
- Especially good with Vertex Arrays
- Allows OpenGL to retrieve information directly
from the applications memory - Thus, the state tracker can fit it in here.
12Chromium
http//sourceforge.net/projects/chromium/
Program
- Whats an SPU?
- Common SPUs
- Pack SPU
- Send commands directly
- Tilesort SPU
- Distributes Tiles, (in our case, 12)
- Render SPU
- Direct Output
- Print SPU
- Logging
13Distributed Visualization
- General
- Many graphics commands must be run in a set order
- glFinish() might be too much, since we dont need
actual execution - Use separate contexts to avoid state conflicts
- WireGL
- Supported, but not documented
- Chromium
- Creates multiple threads, each aware of the other
- Use Barriers to maintain order
- Barriers only affect graphics rendering, not
program execution
14Access Grids Extending the Computational Grid
Components of an AG Node
- Group-to-group interactions are different from
and more complex than individual-to-individual
interactions. - Large-scale scientific and technical
collaborations often involve multiple teams
working together. - The Access Grid concept complements and extends
the concept of the Computational Grid. - The Access Grid project aims at exploring and
supporting this more complex set of requirements
and functions. - An Access Grid node involves 3-20 people per
site. - Access Grid nodes are designed spaces that
support the high-end audio/video technology
needed to provide a compelling and productive
user experience. - The Access Grid consists of large-format
multimedia display, presentation, and interaction
software environments interfaces to grid
middleware and interfaces to remote
visualization environments. - With these resources, the Access Grid supports
large-scale distributed meetings, collaborative
teamwork sessions, seminars, lectures, tutorials,
and training.
RGB Video
Digital Video
DisplayComputer
Digital Video
NETWORK
Video CaptureComputer
NTSC Video
AudioCaptureComputer
Digital Audio
Analog Audio
Control Computer
EchoCanceller
Over 70 AG sites (PPPL will be next!)
15AG Providing New Capabilities
- Capabilities will include
- high-quality multichannel digital video and
audio, - prototypic large-format display
- integrated presentation technologies (PowerPoint
slides, mpeg movies, shared OpenGL windows), - prototypic recording capabilities
- integration with Globus for basic services
(directories, security, network resource
management), - macroscreen management
- integration of local desktops into the Grid
- multiple session capability
16(No Transcript)
17How to execute VNC
- Rey (server)
- Start a vncserver
- Similar to an X server with no display
- vncserver geometry 4096x2304
- Run vncwall (Java)
- Automatically launches tileviewer via vncd
- Pared Cluster (clients)
- Run vncd
-
-
- Let vncwall (on server) automatically launch
tileviewer
18How to execute WireGL
- Rey (client)
- wgl ltcommandnamegt
- Pared Cluster (servers)
- Start pipeserver
- Use a repeating script
- while (1)
- pipeserver -f
- end
- Wait for WireGL packets
19How to execute Chromium
- Rey (client)
- python2 ltconffilegt ltargsgt
- crappfaker
- Pared Cluster (servers)
-
- crserver
20Implementation Issues
- Projector Alignment
- 72 degrees of freedom
- Manual Alignment
- Automated Alignment
- Software based
- Image warping
- Hardware based
- Stepper Motor Project
- Projector Discrepencies
- Brightness / Contrast
- Lamp Age
- Color balance
- Trapezoidal Projections
- Screen curvature
21Performance
4003 dataset approximately 1.5 million triangles
Source http//graphics.stanford.edu/papers/clust_
render/clust_render.pdf
22References
- OpenGL
- http//www.opengl.org/
- WireGL
- http//graphics.stanford.edu/software/wiregl/
- Chromium
- http//sourceforge.net/projects/chromium/
- DisplayWall-in-a-Box
- http//www.ncsa.uiuc.edu/TechFocus/Deployment/DBox
/ - Princeton Main Campus Wall
- http//www.cs.princeton.edu/omnimedia/