visus-homeThe ViSUS Visualization Framework

The ViSUS software framework has been designed as an environment that allows the interactive exploration of massive scientific models on a variety of hardware. Furthermore, it has the ability to do so over platforms distributed geographically.

The ViSUS software framework was designed with the primary philosophy that the visualization of massive data need not be tied to specialized hardware or infrastructure. In other words, a visualization environment for large data can be designed to be lightweight, highly scalable and run on a variety of platforms or hardware. Moreover, if designed generally, such an infrastructure can have a wide variety of applications, all from the same code base.

The components of ViSUS can be grouped into three major categories:

  1. A lightweight and fast out-of-core data management framework using multi-resolution space filling curves.
  2. A dataflow framework that allows data to be processed during movement.
  3. A portable visualization layer which was designed to scale from mobile devices to powerwall displays with same code base.

 

 

Software Architecture

Data Access Layer The ViSUS data access layer is a key component allowing immediate, efficient data pipeline processing that otherwise would be stalled by traditional system I/O cost. In particular, the ViSUS I/O component (and its generalized Data Base component) are focused on enabling the effective deployment of Out-of-Core and data streaming algorithms. Out-of-core computing specifically addresses the issues of algorithm redesign and data layout restructuring. These are necessary to enable data access patterns having minimal performance degradation with external memory storage. Algorithmic approaches in this area also yield valuable techniques for parallel and distributed computing.

Parallel I/O for Large Scale Simulations The multi-resolution data layout of ViSUS is a progressive, linear format and therefore has a write routine that is inherently serial. During the execution of large scale simulations, it would be ideal for each node in the simulation to be able to write its piece of the domain data directly into this layout. Therefore a parallel write strategy must be employed. This is inefficient due to the large number of small granularity, concurrent accesses to the same file. Moreover, as the data gets large, it becomes disadvantageous to store the entire dataset as a single, large file and typically the entire dataset is partitioned into a series of smaller more manageable pieces. This disjointness can be used by a parallel write routine. As each simulation process produces a portion of the data, it can store its piece of the overall dataset locally and pass the data on to an aggregator process. These aggregator processes can be used to gather the individual pieces and composite the entire dataset. Once the aggregator's buffer is complete, the data is written to disk using a single large I/O operation. This approach also reduces the overhead due to the number of small network messages needed to transfer the data to the aggregators.

LightStream Dataflow and Scene Graph Even simple manipulations can be overly expensive when applied to each variable in a large scale dataset. Instead, it would be ideal to process the data based on need by pushing data through a processing pipeline as the user interacts with different portions of the data. The ViSUS multi-resolution data layout enables efficient access to different regions of the data at varying resolutions. Therefore different compute modules can be implemented using progressive algorithms to operate on this data stream. ViSUS LightStream facilitates this steam processing model by providing definable modules within a dataflow framework with a well understood API. ViSUS also provides a scene graph hierarchy for both organizing objects in a particular environment, as well as the sharing and inheriting of parameters.

Portable Visualization Layer - ViSUS Appkit The visualization component of ViSUS was built with the philosophy that a single code base can be designed to run on a variety of platforms and hardware ranging from mobile devices to powerwall displays. To enable this portability, the basic draw routines were designed to be OpenGL ES compatible. This is a limited subset of OpenGL used primarily for mobile devices. More advanced draw routines can be enabled if a system's hardware can support it. In this way, the data visualization can scale in quality depending on the available hardware.