Skip to Main Content U.S. Department of Energy
PNNL: High Performance Computing

Inter-operability of Global Arrays with CUMULVS

CUMULVS (Collaborative User Migration User Library for Visualization and Steering) is developed by the Oak Ridge National Laboratory. It is part of the ACTS Toolkit in the DOE 2000 Initiative. CUMULVS is a software framework that enables programmers to incorporate fault-tolerance, interactive visualization and computational steering into existing parallel programs.

The following summarizes the inter-operability status of Global Arrays and CUMULVS:


Global Arrays is inter-operable with CUMULVS's computational steering capability. In an application using Global Arrays, steering parameters can be defined for a CUMULVS front-end viewer and manipulated by the viewer during the lifetime of execution. The packages used in the testing are:

  • Global Arrays Version 3.0
  • CUMULVS Version 1.0

The Global Arrays can be configured to work with one of several communication libraries. The one we used was based on MPI. The CUMULVS is based on PVM (Version 3.3.11 or later).

Instructions for using CUMULVS in a Global Arrays application

CUMULVS User's Guide provides instructions of how to use CUMULVS, and the definitions of library functions. Examples that come with the CUMULVS package serve as a good starting point, which give the user some insight of what to do, even though they are written in PVM. The following is quoted from the CUMULVS User's Guide:

A typical statement sequence that a programmer would follow is

  • Initialize CUMULVS data structures (stv_init())
    Define data decomposition (stv_decompDefine())
    Define data field with a previously defined decomposition (stv_fieldDefine())
    Define steering parameters (stv_paramDefine())
  • Start main iterative loop
    <usual calculation>
    nchanged = stv_sendToFE()
    <program response to nchanged steered parameters>
  • End of main iterative loop

Before doing anything, the environment variable STV_ROOT should be set, either in $HOME/.cshrc or equivalent shell startup file. The value of $STV_ROOT should be the directory where CUMULVS is, as in:

setenv STV_ROOT /home/me/CUMULVS

The applications should include the header files of

fpvm3.h (Fortran) or pvm3.h (C)
fstv.h (Fortran) or stv.h (C)

Compile the application and link it with either libfstv.a or libstv.a, depending on whether the application is written in Fortran or C.

Next, start the pvm daemon and run the application.

Start the viewer to manipulate the steering parameters.


CUMULVS is fairly easy to use in a Global Arrays application. We successfully tested the inter-operability of Global Arrays with CUMULVS's computational steering capacity. The capacity of CUMULVS's visualization needs further investigation.

(It would be preferable for the CUMULVS could provide a version based on MPI since more and more applications are using MPI nowadays. It is somewhat cumbersome to start the PVM daemon all the time before running the MPI-based applications.)

Site Links

Our Research

Past Research

Global Arrays Links

News and Events