220 likes | 366 Views
High Resolution Displays at PPPL. Mike Miller mmiller@pppl.gov mmiller@eden.rutgers.edu. Single Machine Applications PowerPoint Presentations PSpice / ExpressPCB Stepper Motor Control Circuit AVS Express Limitations. Parallel Visualization OpenGL concepts Systems currently in use:
E N D
High Resolution Displays at PPPL Mike Miller mmiller@pppl.gov mmiller@eden.rutgers.edu
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 Topics
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 @ 16bit 65,536 colors 7.33fps max 27 MB/image @ 24bit 16,777,216 colors (standard) 4.89fps max Single Machine Applications
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 @ 60Hz Total Resolution: 4096x2304 Software Debian 2.2r4 ‘testing’ GM 1.5-pre2b vncwall 1.0 WireGL 1.2.1 Chromium (nightly CVS) Implementing Parallel Visualization
High level graphics API Not focused on low level (pixel operations), but it’s possible The user defines geometric primitives All primitives have properties associated with them Examples: Primatives Pixels Vertices Create triangles Properties Material Lighting OpenGL Overview http://www.opengl.org/
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… Example: Atlantis
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 How do we Distribute the Display?
Standard VNC Virtual Network Computing Developed by AT&T Allows remote execution & display of applications Similar to:ssh <remote>, export DISPLAY=<local> Distributed VNC Developed by NCSA Allows the viewer to run on multiple machines / only display certain tiles Relatively efficient Does not implement GLX VNC over a Display Wall http://www.ncsa.uiuc.edu/TechFocus/Deployment/DBox/
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” rey=client, paredXX=servers 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 WireGL
pipeserver OpenGL OpenGL OpenGL libGL.so libGL.so libwiregl_client.so GLX/DRI GLX/DRI Myrinet (Using GM) Video Card Machine 1 Machine 2 Video Card Analog / Digital Video Out Analog Out Machine 3 Machine 4 Monitor Projector Machine 5 Machine 6 Normal OpenGL vs WireGL Normal Program WireGLed Program Program Program
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 application’s memory Thus, the state tracker can fit it in here. GLX vs. WireGL
OpenGL crserver libcrutil_client.so OpenGL libGL.so GLX/DRI SPU #1 Video Card SPU #2 Analog Out Projector SPU #n Chromium http://sourceforge.net/projects/chromium/ Program • What’s an SPU? • Common SPUs • Pack SPU • Send commands directly • Tilesort SPU • Distributes “Tiles,” (in our case, 12) • Render SPU • Direct Output • Print SPU • Logging
General Many graphics commands must be run in a set order glFinish() might be too much, since we don’t 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 Distributed Visualization
Mixer Access Grids: Extending the Computational Grid • 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. Components of an AG Node RGB Video DigitalVideo DisplayComputer Digital Video NETWORK Video CaptureComputer NTSC Video AudioCaptureComputer Analog Audio Digital Audio Control Computer EchoCanceller Over 70 AG sites (PPPL will be next!)
AG: 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
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 How to execute: VNC
Rey (client) wgl <commandname> Pared Cluster (servers) Start pipeserver Use a repeating script while (1) pipeserver -f end Wait for WireGL packets How to execute: WireGL
Rey (client) python2 <conffile> <args> crappfaker Pared Cluster (servers) crserver How to execute: Chromium
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 Implementation Issues
102 patches @ 1800 triangles each = 183,600 triangles <5000 triangles– large polygons, large textures Performance 4003 dataset = approximately 1.5 million triangles Source: http://graphics.stanford.edu/papers/clust_render/clust_render.pdf
References • 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/