So for what is CGLX good for and what does it do for you. In general CGLX will allow OpenGL applications to be displayed on a visualisation cluster like a tiled display or a multi projector based system for VR applications. Currently displaying OpenGL content on multible displays would require using the proxybased XDMX server or utilizing Chromium.

+

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.

−

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 is also not able to take advantage of the graphics cards on the rendering nodes, which means no hardware acceleration is available.

+

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.

−

Chromium on the other side is able to 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 configures 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.

+

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.

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 runns currently on curvescreen and on the losangeles cluster. It was successfully compiled under Fedora 4 and under Centos 4.0. Active stereo is supported for Nvidia Quadro cards with frame locking and G-Sync. Currently only the Quadro 4500FX+Gsync can support both features. To run CGLX applications on other systems a software synchronisation is implemented. (!Note: Active stereo is not possible with software synchronisation. Only exception -> on a single machine).

Currently CGLX is still a beta release but it will be downloadable from our cvs servers. Next step will be to port CGLX to MacOSX for [[Research Projects: HIPerWall | HIPerWall]]. Performance and comparison data between CGLX, XDMX and Chromium will be available soon on this page :-).

−

−

=== How to start CGLX ===

−

−

* first start the demons on each rendering node in the grid. (csdemon)

−

* Start the configuration tool on the head node. (csconfig)

−

* Open a cluster configuration file or add servers to your current setting.

−

* Send the configuration to the servers

−

* select a program you want to start

−

* start program.

−

* Here are some programms with the correct parameters that are already compiled for CGLX and are available as demos.

−

** "simple"

−

** "myglxgear"

−

** "myatlantis"

−

** "myroller"

−

** "soar ps_texture_1k.png height.geo"

−

* If you want to run the demos in stereo mode just add "-s" to the parameter list. !Not all demos support stereo at this time.

== Acknowledgments ==

== Acknowledgments ==

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

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

Calit2 took center stage at [http://life.calit2.net/archives/2008/08/falko-kuester-at-nvision-2008.php NVISION 2008] with the OptIPortable (HIPerSpace Nano) placed in the atrium of the San Jose Convention Center, with every visitor coming to the workshop or exhibit passing by the OptIPortable display at least twice each day.

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.

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.

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,...).

Calit2 took center stage at NVISION 2008 with the OptIPortable (HIPerSpace Nano) placed in the atrium of the San Jose Convention Center, with every visitor coming to the workshop or exhibit passing by the OptIPortable display at least twice each day.

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.