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:
Inter-operability
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.
Discussion
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.)