NERSCPowering Scientific Discovery Since 1974

VisIt - 3D Scientific Visualization

Description and Overview

VisIt is a point-and-click 3D scientific visualization application that supports most common visualization techniques (e.g., iso-contouring and volume rendering) on structured and unstructured grids. Due to its distributed and parallel architecture, VisIt is able to handle very large datasets interactively. In addition, VisIt is extensible, allowing users to add data loaders or additional analysis tools to VisIt. The NERSC Analytics Group has developed extensions to VisIt to support NERSC user applications, and coordinates with the VisIt development team to add these extensions to the main VisIt development code branch.

Overview

VisIt supports visualization and analysis of a wide range of computational meshes, including two- and three-dimensional rectilinear, curvilinear, and unstructured meshes as well as structured AMR and CSG meshes (see the VisIt FAQ for a list of supported formats). VisIt provides extensive functionality for interactive and static visualization and analysis of extremely large data and also has the ability to animate data, allowing users to see the time evolution of their data and create movies. An example screenshot of VisIt is shown below.

VisIt provides via its distributed and parallel architecture support for interactive visualization and analysis of extremely large data sets. VisIt's rendering and data processing capabilities are split into viewer and engine components. These components may be executed in a distributed fashion across multiple machines. The Viewer is responsible for rendering and is typically run on a local desktop or visualization server to allow VisIt to leverage the available graphics hardware. The Engine is typically run on a remote machine (where the data is located) and is responsible for performing most of the data processing and input/output (I/O). This eliminates the need to move the data and makes high-end compute and I/O resources available to the engine. The engine can be run serially on a single processor or in parallel on thousands of processors.

VisIt's visualization capabilities are grouped into two main categories. Plots provide functionality for visualizing data and include, e.g., contour, curve, mesh, pseudocolor, streamline, surface, vector or volume plots. Operators define operations performed on the data prior to visualization, such as data slicing, selection, or transformation. VisIt also provides additional extensive data analysis functionality via, e.g., expressions and queries.

VisIt achieves extensibility through the use of dynamically loaded plugins. All of VisIt's plots, operators, and database readers are implemented as plugins and are loaded at run-time from the plugin directory. New plugins can be added easily by installing them in the plugin directory. VisIt also provides a graphical plugin creation tool that greatly simplifies the process of creating new plugins.

VisIt provides an easy-to-use GUI as well as C++, Python and Java interfaces. The Python scripting interface gives users the ability to batch process data using a powerful scripting language. This feature can be used to create extremely sophisticated animations or implement regression suites. It also allows simulation systems that use Python as a back-plane to easily integrate visualization capabilities into their systems. The C++ and Java interfaces make it possible to provide alternate user interfaces for VisIt or allow existing C++ or Java applications to add visualization support.

Getting Started

The best way to learn how to use VisIt is to go through the tutorials available online (see Further Information below). Looking at examples of visualizations similar to what you want to do, or from your science domain, can also be helpful (see Examples below). VisIt supports a large variety of data formats (see the VisIt FAQ for a list of supported formats). If your data format is not supported by VisIt, then you may have to convert your data files in order access them in VisIt or write your own data reader (see the VisIt documentation, Getting Data into VisIt, for more information).

Using VisIt at NERSC

VisIt supports different modes for visualizing and analyzing data. Remote visualization allows you to run VisIt's GUI on a local desktop (or on Euclid) while utilizing the parallel compute power of one of the NERSC machines by executing VisIt's compute engine on, e.g., Hopper. In the batch data analysis and visualization mode, VisIt provides a command line interface or you can execute a set of predefined analysis scripts without displaying the GUI.   

Using VisIt on Hopper   

The VisIt install on Hopper is provided for the purpose of running the parallel remote visualization backend on Hopper and for running scripts via VisIt's Python Command Line Interface (CLI). If you need to run VisIt's GUI, please install a compatible version of VisIt on your local workstation (recommended) or, if you do not want to install VisIt on your local machine, then you can also run the VisIt GUI on Euclid. See Installing VisIt for information about how to install/setup VisIt with support for remote visualization at NERSC.

Using VisIt on Euclid   

Euclid supports running the VisIt GUI as well remote visualization and batch processing using VisIt as described below. If you do not want to install VisIt on your local machine, then you can also run the VisIt GUI on Euclid, and follow the instructions in the Remote Visualization section for running a parallel remote compute engine on Hopper. VisIt on Euclid is already configured with a host profile for Hopper. Please note that you will achieve the best performance by running the VisIt GUI on your local workstation and the remote compute engine on Hopper (or any other NERSC machine with VisIt).

Remote Visualization   

To run VisIt in client-server mode, you must install on your local machine a version of VisIt that is the same as the version of VisIt that you want to run as your remote compute engine. For example, if you installed version 2.1.x on your local machine, and VisIt 2.1.x has been installed on Hopper or Euclid, then you will be able to run a remote compute engine on either of those machines. For more details on how to obtain and install appropriate versions of VisIt, see the Installing VisIt section below. When running VisIt remotely, you only need to run module load visit on the NERSC machine on which you are running the VisIt GUI and not on the machine that is running the compute engine. This means, if you are running the VisIt GUI on a local desktop (recommended for best performance) and the compute engine on Hopper, then no module load call is required.

To use a remote compute engine on Hopper or Euclid, start VisIt on your local machine, and select Open file from the File menu. 

VisIt's file open dialog.

In the File open GUI, choose the appropriate Host (e.g, NERSC Hopper) . You'll be prompted to enter your password on Hopper.
 
After you have entered your password, you will be able to browse directories on Hopper. You can type a path into the Path field (obscured in the screen shot), or use the file browser GUI (shown to the right) to navigate to a directory. Select your data file from the list on the right side of the GUI. By default, VisIt tries to guess which file reader it should use to open a file. In order to define a specific database plugin that should be used for opening the file, select, the appropriate plugin from the drop down list next to Open file as type.

After you select a data file, the OK button will be active. Click it to continue.

After you open a file on Hopper,VisIt's profile select dialog will be displayed. Here you need to select the profile corresponding to the queue you want to use and specify the number of processors, e.g., 64, to be used for your session. (For the regular profile you may also want to change the time limit.)

Batch Data Analysis using VisIt's CLI   

To perform batch data analysis or visualization using VisIt's CLI, use the modules facility to load VisIt and then launch the application by typing visit  using the additional -cli -nowin options as shown in the example below:

$ module load visit                     
$ visit -cli -nowin

To execute a predefined VisIt python script on start-up use the -s option. On Hopper it is necessary to ensure that a parallel compute engine is launched. It is possible to accomplish this launch using the following command line:

 visit -cli -nowin -l qsub/aprun -p "Queue to use for submitting job" -np "Number of processors" -t "Wall time limit for job"

VisIt will automatically submit a job for launching its parallel compute engine to the desired queue. For example, assume one wants to run the following script, named "ComputeIsosurface.py:"

# ComputeIsosurface.py:
import sys

# Open the file to visualize/analyze
OpenDatabase("/usr/common/graphics/visit/data/multi_rect3d.silo")

#  Set options for writing output images
swa = SaveWindowAttributes()
swa.outputToCurrentDirectory = 1      # Save images in current directory
swa.fileName = "multi_rect3d_contour" # Image filename
swa.family = 0                        # Do not append numbers to filename
swa.format = swa.PNG                  # Save as PNG
swa.width = 1024                      # Image width 
swa.height = 1024                     # Image heiggt
swa.resConstraint = swa.NoConstraint  # Do not force aspect ratio, use width and height
SetSaveWindowAttributes(swa)

# Create an isosurface plot
AddPlot("Contour", "v") # Second string is the name of dependent variable for isosurface

# Set options  for contouring
catts = ContourAttributes()
catts.contourMethod = catts.Value # Specify specific isovalues
catts.contourValue = (-0.5, 0.5)  # List of isovalues
catts.colorType = catts.ColorByMultipleColors # Color each isosurface in separate color
catts.SetMultiColor(0, (0, 0, 255, 255)) # Display first isosurface (-0.5) in blue
catts.SetMultiColor(1, (255, 0, 0, 255)) # Display second isosurface (0.5) in red
SetPlotOptions(catts)

# Set viewpoint
vatts = View3DAttributes()
vatts.viewNormal = (-0.696999, 0.396325, 0.597595)
vatts.focus = (0.5, 0.5, 0.5)
vatts.viewUp = (0.287917, 0.91793, -0.272963)
vatts.viewAngle = 30
vatts.parallelScale = 0.866025
vatts.nearPlane = -1.73205
vatts.farPlane = 1.73205
vatts.imagePan = (0, 0)
vatts.imageZoom = 1
vatts.perspective = 1
vatts.eyeAngle = 2
SetView3D(vatts)

# Draw plots and save resulting image
DrawPlots()
SaveWindow()

# Quit
sys.exit(0)

This script computes an isosurface for the data set "multi_rect3d.silo," which is distributed with VisIt, and saves the resulting image as "multi_rect3d_contour.png." To run this script on Hopper using 16 processors in the regular queue with a wall clock time limit of two minutes, one would issue the command:

$ visit -cli -nowin -l qsub/aprun -p regular -np 16 -t 00:02:00 -s ComputeIsosurface.py

To use a version of VisIt other than the default, include the version number on the module load line, e.g., to use version 2.1.2:

$ module load visit/2.1.2 

For a list of additional command line options use:

$ module load visit                     #Load the VisIt module
$ visit -help #List most common command line options
$ visit -fullhelp #List all command line options

For more detailed information about using VisIt's CLI see here. The documentation of VisIt's python interface is available here. Some example python scripts for VisIt are also available from the visitusers.org wiki.

Using VisIt's GUI   

Currently Euclid is the only NERSC system that allows you to directly execute VisIt's GUI on a NERSC machine, Hopper only support remote and batch visualization as described above. VisIt on Euclid is already configured with a host profile for Hopper. To start VisIt including its GUI on Euclid execute the following commands:

$ module load visit                     #Load the VisIt module
$ visit #Start VisIt with the GUI enabled

Installing VisIt   

In general we recommend to install VisIt using the pre-compiled binaries. In case that none of the pre-built binaries should work on your platform or you want to do VisIt development, you can also build VisIt from source. In order to use the remote visualization capabilities of VisIt you will need a version of VisIt that is compatible with a version of VisIt available at NERSC (ideally the default version). To check which versions are available at NERSC see Availability below. In addition you will need an according host profile for the NERSC machine of your choice (see Installing NERSC Host Profiles).

Installing VisIt using a Pre-built Binary   

Pre-compiled binaries of VisIt for Unix, Windows, and Mac-OS X systems with detailed install notes describing the installation process are available online here. The Windows executables are packaged in a self contained installer. The Unix and Mac OS X executables require downloading an install script along with the file containing the executable. Instructions for installing VisIt can be found in the install notes. In order to run VisIt's GUI on a local desktop while using a remote compute engine on, e.g. Hopper, an appropriate host profile needs to be setup. The binary versions of VisIt are shipped with default host profiles for Hopper, and Euclid. The example below illustrates an example installation on a linux-based system.

#Download the VisIt binary and installation script from the VisIt webpage, change the permissions of the visit-install script to make it executable and execute the script.
$ chmod 755 visit-install2_2_1
$ ./visit-install2_2_1 -c nersc "version" "platform" "directory"

version indicates the version of VisIt, 2.2.1. The platform parameter indicates for which type of machine VisIt should be installed and should match the accompanying distribution file, e.g., linux-x86-64. The directory parameter defines the directory where VisIt should be installed. Adding the -c nersc option installs the default NERSC host profiles.

Installing VisIt from Source   

The VisIt sources are available from the VisIt webpage here. VisIt provides a convenient build_visit script which automates the complex VisIt built process. The build_visit script automates: i) downloading required VisIt and 3rd party source code as well as ii) configuring and building VisIt and 3rd party libraries. For information about the build_visit command line options use build_visit --help. Additional information on how to install VisIt from source is also available on the visitusers.org wiki.

Installing NERSC Host Profiles   

VisIt is already shipped with pre-defined host profiles for NERSC machines, including Hopper and Euclid. As described above, when installing VisIt using a pre-built binary, the -c nersc option will automatically install the default NERSC host profiles.

VisIt's settings are stored in a folder .visit  usually located in your home directory or if you installed VisIt at a non-default location at install-path/version/.visit (where version is the version-number of VisIt). If you have VisIt installed and would like to add the appropriate host profiles for NERSC,  you can simply copy the according host profiles into your .visit/hosts folder. If you installed VisIt using a pre-built binary, then you can find the NERSC host profiles in the folder .visit/allhosts. In case you installed VisIt from source you can find the default host profiles in the VisIt source folder at src/svn_bin. The files containing the NERSC host profiles are named: host_nersc_euclid.xml,  host_nersc_hopper.xml.

$ cp .visit/allhosts/host_nersc*.xml .visit/hosts                          

Availability   

For up-to-date information on which versions of VisIt are currently available on the NERSC machine of your choice, login and execute:

$ module avail visit                    #List all available VisIt modules 

To use a version of VisIt other than the default, include the version number on the module load line, e.g., to use version 1.12.2:

$ module load visit/1.12.2 

PackagePlatformCategoryVersionModuleInstall DateDate Made Default
VisIt carver applications/ visualization 2.5.0 visit/2.5.0 2012-07-03
VisIt carver applications/ visualization 2.5.1 visit/2.5.1 2012-07-03 2012-07-03
VisIt carver applications/ visualization 2.5.2 visit/2.5.2 2012-08-02 2012-08-02
visit euclid applications/ visualization 1.12.2 visit 2010-05-03 2010-05-03
visit euclid applications/ visualization 2.0.0 visit 2010-05-13
visit euclid applications/ visualization 2.0.1 visit 2010-06-28
visit euclid applications/ visualization 2.0.2 visit 2010-08-10 2010-08-10
VisIt euclid applications/ visualization 2.1.0 visit 2010-09-17
VisIt euclid applications/ visualization 2.1.1 visit 2010-11-16
VisIt euclid applications/ visualization 2.1.2 visit 2011-01-06 2011-01-26
VisIt euclid applications/ visualization 2.2.1 visit 2010-04-13
VisIt euclid applications/ visualization 2.2.2 visit 2010-04-18
VisIt euclid applications/ visualization 2.3.0 visit/2.3.0 2010-06-22
VisIt euclid applications/ visualization 2.4.1 visit/2.4.1 2012-07-03
VisIt euclid applications/ visualization 2.4.2 visit/2.4.2 2012-07-03
VisIt euclid applications/ visualization 2.5.0 visit/2.5.0 2012-07-03
VisIt euclid applications/ visualization 2.5.1 visit/2.5.1 2012-07-03 2012-07-03
VisIt euclid applications/ visualization 2.5.2 visit/2.5.2 2012-08-02 2012-08-02
VisIt hopper applications/ visualization 2.3.2 visit/2.3.2 2012-01-12
VisIt hopper applications/ visualization 2.4.0 visit/2.4.0 2012-01-12
VisIt hopper applications/ visualization 2.4.1 visit/2.4.1 2012-03-02
VisIt hopper applications/ visualization 2.4.2 visit/2.4.2 2012-03-02 2012-03-02
VisIt hopper applications/ visualization 2.5.0 visit/2.5.0 2012-05-10 2012-05-10
VisIt hopper applications/ visualization 2.5.1 visit/2.5.1 2012-06-28
VisIt hopper applications/ visualization 2.5.2 visit/2.5.2 2012-08-02 2012-08-02

Examples   

Many images featured on the following NERSC and LBNL websites were generated using VisIt:

Further Information   

Further information about VisIt is available from the following external websites:

  • A series of VisIt tutorials are available online at the vistusers.org wiki.
  • The VisIt user manual and other helpful information on how to use VisIt is available from the VisIt website here.
  • The VisIt user community has created a wiki at http://visitusers.org/ which contains up-to-date information about VisIt including valuable user and developer documentation.

Getting Help with VisIt

If you have questions about or problems running VisIt on a NERSC platform, please send an email to consult@nersc.gov. If you would like help with or advice about using VisIt to visualize or analyze your data, contact the NERSC Analytics Group by sending an email to consult@nersc.gov. VisIt bugs should be reported to visit-users@ornl.gov.