Research Projects: CGLX

From Gravity
Revision as of 10:45, 9 September 2008 by Fkuester (Talk | contribs)

Jump to: navigation, search

Project Name CGLX: A Cross-Platform Cluster Graphics Library
Team Members Kai-Uwe Doerr, Falko Kuester
Project Sponsor California Institute for Telecommunications and Information Technolgoy (Calit2), The Jacobs School of Engineeing (JSoE)
CGLX runing Rollercoaster CGLX runing Atlantis CGLX runing Soar Engine



Visit the CGLX homepage and download CGLX today!


CGLX (Cross-Platform Cluster Graphic Library ) is a flexible, high-performance OpenGL-based graphics framework for the development of distributed high performance visualization systems such as OptIPortals. CGLX allows OpenGL programs to transparently scale across display clusters and fully leverage the available resources, while maximizing the achievable performance and resolution of such systems.

To overcome performance and configuration related challenges in networked display environments, CGLX launches and manages instances of an application on all rendering nodes through a light-weight thread-based network communication layer. A GLUT-like (Open GL Utility Toolkit) interface is presented to the user, which allows this framework to intercept and interpret OpenGL calls and to provide a distributed large scale OpenGL context on a multi-tile display. CGLX provides distributed parallized rendering of OpenGL applications with all OpenGL extensions that are supported through the graphics hardware. Applications using it, are free to take advantage of the existing CPU, GPU and network capabilities to adaptively and progressively retrieve data from remote storage, process and visualize it in a fully synchronized fashion, minimizing the memory footprint of the application and removing the need for data replication.

CGLX is currently available for:

  • Linux
  • Mac OS X

Currently displaying OpenGL content on multible displays would require using a proxy-based XDMX server, utilizing Chromium, or video capture, streaming and re-display.

Since DMX runs basically on one "head" workstation with a display manager which handles all graphic content for all the tiles in the array, XDMX is limited to a small display array and not scalable without dramatic performence penalties. XDMX also can not take advantage of the graphics cards on the rendering nodes, which means that hardware acceleration is not available.

Chromium on the other side can take advantage of the hardware acceleration on the tile nodes, but it comes with another limitation. Chromium uses tile sorting processes to determine which node in the cluster needs to draw which sections of the OpenGL Content. After splitting the graphics content Chromium will send out this information over the network to each node in the cluster. Stream Processing Units on these nodes will read these "OpenGL Streams" an directly pass it to the graphics card on the nodes. Chromium can be configured using first-sort or last-sort behavior which allows all nodes in the visualization cluster to draw on one single image on dedicated output server node. Two disadvantages can be found when using chromium. The time needed to sort and split OpenGl commands increases with the number of tiles installed. Because these streams need to be send trough the network this also displaysbb a natural limitation in scalability. Another disadvantage with Chromium is that the whole OpenGL API (1.2) had to be reimplemented to enable Chromium split and sort graphic content by intercepting all OpenGl commands. This approch allows conventional OpenGl applications to be linked against the Chromium library. This means that without changing any code, applications can then run on a chromium-based visualization cluster.

CGLX was developped to overcome some especially performance related issues with cluster based visualisation for OpenGL applications. The key idea behind CGLX is that each node in a visualization cluster will be running the same application and utilizing the local graphics card with all available hardware acceleration. CGLX will intercept only a few selected OpenGL calls, by reimplementing them. Internally CGLX will handle all the communication between the application on the nodes and the head application. All information that needs to be distributed among the nodes will be handled by CGLX and its communication layer.

CGLX 'Atlantis on Hiperwall' CGLX 'Rollercoaster Hiperwall'

To run an OpenGl applcation on a cluster the application first needes to be compiled against the cglX.lib. CGLX needs to know how the cluster (tile Display) looks like. Therefore the CGLX's configuration tool 'csconfig' needs to be executed. This application needs to run on the head node of the cluster. It allows the node configuration and starting of applications. To start an application on the rendering nodes (tiles) "csconfig" contacts the CGLX demons (csdemon) on the rendering nodes. After the connection between the configuration tool (csconfig) and the demons (csdemons) is established the nodes can be configured (resolution, tile position, synchronisation,...).

CGLX 'csconfig' CGLX 'head application'


This research is supported in part by the California Institute for Telecommunications and Information Technology (Calit2).


Media Coverage

Related Resarch Projects

External Links


This material is presented to ensure timely dissemination of scholarly and technical work. Copyright and all rights therein are retained by authors or by other copyright holders. All persons copying this information are expected to adhere to the terms and constraints invoked by the author's copyright. This work may not be reposted without the explicit permission of the copyright holder.


Personal tools