Cactus Code is a modular system designed to make it easy for physical scientists to introduce a number of sophisticated features into in-house develop code.† These features include parallelization, access to computational grid tools, computational steering, checkpointing and multiple input/output mechanisms and formats.† Cactus provides APIs that allow scientific researchers to incorporate these features in a consistent fashion without having to know the details of the implementation. †Cactus also addresses portability issues, defining its own primitive data types (such as floats and integers) so that codes developed on laptops and workstations can be easily transferred to high-performance computing platforms.†
Cactus is designed to be object-oriented and extensible.† The core of the code is called the flesh, and extensions are referred to as thorns.† The flesh manages program execution.† Users specify runtime parameters and execution in special input files.† This is dynamic, so users can change parameters and the execution schedule of various parts of the code during runtime.
A standard list of available thorn toolkits is available for download from the cactus web site and includes the following:
∑ Computational Toolkit: thorns for standard capabilities such as utilities for I/O in various formats and computational steering.†
∑ HDF5 Toolkit: contains thorns needed for I/O using the HDF5 data format.
∑ PETSc Toolkit: thorns for interacting with the PETSc library for solving elliptic equations.
∑ Benchmarking Toolkit: provides a benchmarking application (solver for gravitational waves).
∑ Web Browser Toolkit: provides thorns that act as web servers.† Users steer computations via http requests.† Output streams from running applications can be displayed as jpegs.
Cactus was initially developed to support work on large-scale problems in computational numerical relativity.†† A number of specialized thorns are available for solving boundary value and time evolution problems on three-dimensional Cartesian grids.† Interested developers can create their own custom thorns.
Much of the Cactus project may be thought of as providing sophisticated extensions (richer I/O, computational steering, easy access to parallelized and/or grid-enable subroutines and functions) to the standard libraries of Fortran and C/C++.†
In terms of collaborative and computational portals, Cactus is code centric: Cactus provides a way of web-enabling individual codes.† Users must have access to the source code of their applications in order to add calls to Cactus methods.†
Cactus provides the following collaborative capabilities:
∑ A thorn acting as a web server provides access to running applications.
∑ Multiple participants can connect to this server with their browsers.† The session is password protected.
∑ Participants can steer the application by changing input parameter values.† This is an HTTP request layer on top of the core steering capabilities that Cactus provides.
∑ Cactusí checkpointing and I/O functions allow the code to output data as a jpeg stream so that all of the session participants can see the visualized output in their browsers.
Note that the collaborative and web-access capabilities are only part of the Cactus project.† Users can use Cactus thorns for parallelization, I/O, and steering independently of the web thorns.
Cactus can be used in codes written in Fortran (F77 and F90), C, and C++.††††
Free download with source code. Latest version is 4.0 beta 9.