VizStack A framework to help you use your GPUs


VizStack's Sourceforge poject page describes VizStack as follows:

VizStack is a framework to run GPU-enabled applications. You may set up tiled displays, and run popular applications on them. VizStack can convert nodes into a shared remote visualization farm. Individual GPUs can be allocated to users too.

Users typically install VizStack on a cluster of linux machines. It's possible to install it on a single linux machine as well, and this is indeed the easiest way to try out VizStack. VizStack runs effectively on clusters of heterogeneous systems also.

VizStack pools the GPUs of the installed systems. Users allocate GPUs from this pool. VizStack provides a flexible GPU selection mechanism, which makes it easy to meet complex application specific requirements. After allocation, users configure each GPU dynamically, and start X servers on them. The application components are then run on the allocated GPUs. The GPUs can be released when they are no longer needed.  VizStack provides a Python API for these operations, making it easy to setup things to suit any environment.

Configuring a display wall by configuring each GPU individually is a tedious, error prone process. VizStack eases configuration of display walls by providing a higher level construct, called a "tiled display". Mono, active and passive tiled displays can be setup in VizStack. A CAVE display can be considered to be an aggregate of tiled displays. VizStack supports nVidia's Frame Lock feature, allowing you to setup tear-free tiled displays.

A broad list of features is

  1. GPU support
    • Any number of GPUs per node. 8 GPUs per node are supported by nVidia.
    • Quadro, Quadroplex (D and S series)
  2. Out of the box support for
    • Remote Visualization using HP RGS software or TurboVNC/VirtualGL
    • ParaView and Avizo
  3. Rich GPU allocation semantics
    • Individual GPUs can be allocated to users
      • Multiple users per node
  4. GPU Sharing
    • Multiple Remote Users per GPU using TurboVNC/VirtualGL
  5. Display Setup
    • NxM generic Tiled Displays
      • Mono, active and passive stereo, autostereoscopic modes
    • Works with DVI extenders and switches
    • Display synchronization via nVidia G-Sync.
    • Bezels  can be configured for display devices
  6. Job Launch mechanism for multiple nodes
    • SSH
    • SLURM resource manager
  7. Control everything via a Python API
    • Flexibly allocate resources needed to meet any application requirement
    • Configure X servers programmatically
  8. XML based configuration system
    • Custom templates for site-specific display devices and GPUs

While this is not immediately apparent, VizStack can also help you setup multi-seat X configurations !

VizStack can use all the GPUs available on a system. The image below illustrates that a single machine equipped with multiple GPUs can be used in many ways at the same time. The tiled display is connected to an 8-processor HP DL 785 server, equipped with 6 GPUs and 64 gigabytes of memory. Two pairs of keyboards and mice are also connected to the system.

Using all GPUs on a HP DL785 G5 in many ways, all together

Four users are simultaneously using the machine for a variety of purposes, as follows

  1. A user is using a 1x1 desktop and runningAvizo on the display on the Top Left corner. The user controls Avizo using a Keyboard and Mouse. The desktop takes up 1 GPU.   Additionally, using VizStack's Amira support, Avizo is running on the 2x2 tiled display on the right. The 2x2 display is being driven using 2 more GPUs, with each of them driving 1x2. This user is using 3 GPUs in all.
  2. Another user is using a 2x1 desktop and running Google Earth. This user can control Google Earth using a separate Keyboard & Mouse. This user is using 1 GPU for the desktop.
  3. A third user is running an RGS on one of the QuadroPlex S series GPUs. VizStack can run RGS on an S series GPU, which do not have cannot drive display devices. Note that the RGS sessions under VizStack can run at any resolution - not just limited to those driven by display devices.
  4. The remaining GPU is being used to run an OpenSG program using VirtualGL. VizStack has support for VirtualGL (not just TurboVNC).  VizStack's VirtualGL support can be used to deliver stereo imagery to an end users desktop, provided the user's desktop has stereo support.

The physical users (1) & (2) are using separate keyboards and mice, and will be unaware of the other person using the same machine if they were to be separated physically.

Comments (0) Trackbacks (1)

Leave a comment