Platform agnostic




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.

Beyond the display of the data, the underlying GUI library can hinder portability to multiple devices. At this time ViSUS has made use of the Juce and Qt library which are lightweight and supports mobile platforms such as iOS and Android in addition to major operating systems.

ViSUS provides a demo viewer which contains standard visualizations such as slicing, volume rendering and isosurfacing.  Additionally, the base system can display 2D and 3D time- varying data.  The system considers a 2D dataset as a special case of a slice renderer and therefore the same code base is used for 2D and 3D datasets.

​Combining all of the above design decisions allows the same code base to be used on multiple platforms seamlessly for data of arbitrary dimensions.​

Dynamic I/O


​ViSUS provices an end-to-end data movement framework is comprised of two important steps, data input (writes) from the simulation and analysis and visualization (reads) for data exploration.  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.

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.

 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.​

Analytics & Visuals


Scientists need actionable information during simulation capture, not at the end. Ideally, a user-scientist would like to view a simulation as it is computed, in order to steer or correct the simulation as unforeseen events arise.

Simulation data is often very large. For instance, a single field of a time-step from the S3D combustion simulation (shown above) is approximately 128 GB in size. In the time needed to transfer this single time-step, the user-scientist would have lost any chance for significant steering/correction of an ongoing simulation or at least take the opportunity to save computing resources by early termination of a job that is not useful anymore.

By using the parallel ViSUS data format in simulation checkpointing, we can link this data directly with an Apache server using a ViSUS plug-in running on a node of the cluster system. By doing this, user-scientists can visualize simulation data as checkpoints are reached. ViSUS can handle missing or partial data, therefore the data can be visualized even as it is being written to disk by the system.

ViSUS's support for a wide-variety of clients (a stand-alone application, a web-browser plug-in, or an iOS application for the iPad or iPhone) allows the application scientist to monitor a simulation as it is produced, on practically any system that is available without any need to transfer the data off the computing cluster.

This work is the natural evolution of the ViSUS approach of targeting practical applications for out-of-core data analysis and visualization. This approach has been used for direct streaming and real-time remote monitoring of the early large scale simulations such as those executed on the IBM BG/L supercomputers at LLNL.

​This work continues its evolution towards the deployment of high performance tools for in-situ and post-processing data management and analysis for the software and hardware resources of the future including exascale DOE platforms of the next decade.​