VizStack is a framework to run GPU enabled applications. These applications are typically visualization applications. The applications could be serial, single GPU applications or parallel applications using multiple GPUs. Depending on the intended application, these GPUs may be connected to displays. The GPUs could come from one or more nodes.
So, what can one do with VizStack ? Using VizStack, you can use one or more nodes with GPUs
- as a shared remote visualization farm
- to drive display walls or CAVEs
- to run serial or parallel GPU enabled apps
You can convert one or more systems equipped with GPUs into a remote visualization farm. A single node can host as many remote visualization sessions as the number of GPUs in it. A single GPU will be dedicated to each user in this case. VizStack is being enhanced to support GPU sharing. Once this is available, more than one remote visualization session could be hosted off a single GPU.
VizStack lets you use a cluster of machines equipped with GPUs to drive a display wall. VizStack supports the concept of "tiled displays". A tiled display specifies a logical grouping of GPUs to drive a rectangular array of display devices. Generic NxM display walls may be created using VizStack. These may optionally be configured to display stereo imagery. Active stereo, passive stereo and autostereoscopic displays can be used for the tiled displays.
To make it easy to use your system, VizStack provides integration with several popular applications. Hewlett-Packard's RGS (Remote Graphics Software) and TurboVNC/VirtualGL are supported out-of-the box for remote visualization sessions. Scripts to launch popular applications like Avizo and Paraview are available as well. Scripts to start desktop sessions are available too. These could be used to gain access to a physically accessible system, either directly or from a distance using DVI/KVM extenders.
A central goal of VizStack is to maximize GPU utilization. VizStack pools GPUs from one/more nodes and allocates GPUs to users. Individual GPUs may be allocated to users. This allows multiple users to share a single node. One of the key features of VizStack is its ability to configure GPUs and X servers dynamically. A user could allocate a GPU and configure an X server to run on that GPU with some configuration. Later, the X server could be stopped, reconfigured and started again with another configuration. The configuration is specified via scripting, making it possible to automate a variety of setups programmatically.
VizStack provides a python API. This allows users to configure the system to match the needs of perhaps any application. The API provides means to allocate/free GPUs, start/stop X servers and launch application components. All VizStack application integrations also use this API internally.
VizStack is a very flexible framework. You may think of it as a kind of a swiss army knife for running visualization applications . VizStack does not restrict usage of a system (of one or more machines) for one purpose. Instead, usage may vary by GPU. If you consider a cluster of machines with GPUs, then some of the GPUs could be used for remote visualization sessions, some could be used for driving tiled displays and others could be used for any other purpose - e.g. offline rendering.