DOZENS to hundreds of interconnected personal computers (PCs), stacked up row after row and operating simultaneously: that in a nutshell describes many of the latest high-performance supercomputers. These collections of inexpensive, readily available PCs are known as commodity clusters, and they offer cost-effective and nearly limitless computational horsepower.
Parallel processing using clusters of PCs has solved many kinds of computational problems at Lawrence Livermore and elsewhere, but graphics and visualization applications have not been able to take full advantage of cluster technology. Consumer graphics cards on PCs are designed for stand-alone operation, not for operating together with other machines. An R&D 100 Award–winning software package called Chromium solves this problem, providing the most effective means yet for PC graphics cards to communicate and synchronize their commands. With Chromium, a cluster of PCs can create a single enormous image from their combined data.
|VisIt, an interactive parallel visualization application, runs on a commodity cluster and displays to a tiled powerwall using Chromium.
Chromium takes its name from clustered rendering, or CR for short. A member of the development team noticed that Cr is the atomic symbol for the element chromium, and the software’s name was born. Chromium is a free, open-source software package developed by two Livermore computer scientists, Randall Frank (now with CEI in Apex, North Carolina) and Sean Ahern, in collaboration with researchers from Stanford University; the University of Virginia at Charlottesville; and Tungsten Graphics of Woodbury, Connecticut.
Chromium is the first graphics library to allow both parallel and serial graphics applications to generate images in parallel. It supports any program that uses the OpenGL programming language, an industry-standard interface for drawing two- and three-dimensional (3D) graphics. Even traditional serial programs can now take advantage of parallel cluster technology without modification.
In high-performance computing, scalability—a program’s ability to handle ever-larger amounts of data—is a critical issue. Chromium is the only parallel graphics library that can simultaneously scale upward along three critical axes: the quantity of data an application can process, the drawing or rendering performance (for example, the ability to render more triangles or more pixels per second), and the size in pixels of a single image. To date, Chromium has been used to handle data sets of up to 23 trillion bytes and output displays as large as 60 million pixels.
The team’s product is extremely popular, and more than 21,000 copies have been downloaded since the software’s release in August 2003. Chromium’s usefulness has fostered numerous parallel visualization projects, such as the Deep View Visualization project at IBM, Boston University’s Deep Vision Display Wall, the University of Kentucky’s powerwall autocalibration software, and Indiana University’s Cluster Rendering.
The Chromium software team: (from left) Randall Frank (now with CEI in Apex, North Carolina) and Sean Ahern.
Intercept and Run
OpenGL-based applications must dynamically link to OpenGL’s graphics library to support their own rendering demands. Chromium exploits this dependency by intercepting the link to OpenGL and masquerading as the OpenGL library. Chromium is thus entirely transparent to a running application, and applications need not be modified to take advantage of Chromium. Other parallel graphics products are on the market, but they all require the applications to be modified.
“What we call Chromium’s mothership manages the whole operation,” says Ahern. The mothership sets up Chromium’s processes and orchestrates all incoming and outgoing resources. It controls the rendering done by an application and coordinates the conversion of OpenGL graphics commands into streams of commands that can flow from one computer in the cluster to another.
OpenGL is a serial programming language that executes commands in the order in which they are made, but Chromium does not require such strict ordering for most applications. Instead, its mothership tracks streams of serial graphics commands and coordinates their transformation into sets of parallel streams that can be rendered in a scalable fashion. For example, Chromium can take a single incoming stream of commands and split it into multiple streams. These streams can then be projected on a powerwall display, where each output stream corresponds to one output projector, or tile, of an aggregate display.
Going Above and Beyond
Not only does Chromium provide a way for graphics processing to take advantage of commodity clusters, but it also proved to have abilities that its developers had not envisioned. “With its modular stream processing, we’ve been able to extend and enhance the OpenGL interface to drive devices that couldn’t have been considered before,” says Frank. For example, Chromium can perform remote simultaneous rendering operations from clusters to personal data assistants or to large networked displays.
Chromium can also help debug graphics applications and serve as a custom acceleration mechanism for desktop applications. It can easily change the look of a rendering. Plus it can modify, delete, or replace commands in the streams, allowing 3D graphics programs to be changed as they run. Chromium can make a rendering look like a blueprint, or it can break up a scene into floors to look like an architectural walk-through—all without modifying the application.
Feedback from numerous system suppliers and application developers indicates that the Chromium infrastructure has significantly advanced the commercial adoption, acceptance, and exploitation of an entirely new class of expandable supercomputer: the distributed, graphics supercluster.
Key Words: Chromium software, clustered rendering, commodity clusters, OpenGL library, parallel graphics library, parallel visualization, powerwall display, R&D 100 Award.
For further information contact Sean Ahern (925) 422-1648 (email@example.com). Chromium software and related documentation are available at chromium.sourceforge.net.
a printer-friendly version of this article.