Deprecated: please see new documentation site.

Cactus is an open source problem solving environment designed for scientists and engineers. Its modular structure easily enables parallel computation across different architectures and collaborative code development between different groups. Cactus originated in the academic research community, where it was developed and used over many years by a large international collaboration of physicists and computational scientists.



Cactus is a framework intended to integrate with user-written modules.In order to facilitate this while allowing the best possible performance on all machines, it is distributed as source code with an open-source licence. Download instructions are available at .

You can add many third-party Cactus components, e.g. the adaptive mesh refinement driver Carpet , or a variety of components contributed by the Cactus community .

Getting Cactus

It is particularly easy to download Cactus using the GetCactus script.

Option 1:

1. add +cactus to ~/.soft


2. issue the resoft command

% resoft
% which GetCactus
% /usr/local/packages/Cactus/bin/GetCactus

3. run the script, GetCactus

% GetCactus
                  Installer for Cactus Code

This installer guides you through checking out the core (flesh)
and modules (thorns) of the Cactus Code from the Cactus CVS server.

For a description of the checkout procedure, and how to use this
script, type  

              ./GetCactus -help

The latest release of the Cactus Code (flesh and thorns) can also
be obtained as a tar file from our web site at


For more information please contact


Directory for Cactus installation [Cactus] : <enter>

Anonymous Flesh checkout? (y)es, n)o, h)elp) [yes] : <enter>

Checkout Flesh from
  [1] Last stable release
  [2] Standard development version (bug fixes/unstable)
Choose version: (1-2, h)elp, q)uit) [1] : 1

Verbose checkout (y)es, n)o, h)elp) [no] : yes

Checking out Cactus Flesh
 (CVS repository:
cvs checkout: Updating Cactus
#.... more output follows

At this point, a fresh copy of Cactus will be in the Cactus directory of your present working directory.

Option 2:


After downloading Cactus, copy the configuration file to your Cactus directory:

cp /usr/local/packages/Cactus/share/cactus-eric-mvapich-optimise.options ~/Cactus

Create a "thorn list" as described in the Cactus manual, or copy the thorn list for the Cactus WaveToy example:

cp /usr/local/packages/Cactus/share/cactus-wavetoy.thornlist ~/Cactus

Build a Cactus configuration, including the additional components you added:

cd ~/Cactus
make wavetoy-config options=cactus-eric-mvapich-optimise.options THORNLIST=cactus-wavetoy.thornlist
make wavetoy -j2

Submit Cactus jobs through PBS. A sample script looks like this:

#! /bin/bash
#PBS -A loni_numrel1
#PBS -q checkpt
#PBS -r n
#PBS -l walltime=2:00:00
#PBS -l nodes=16:ppn=4
#PBS -N wavetoy
#PBS -m abe
#PBS -o Cactus/wavetoy.out
#PBS -e Cactus/wavetoy.err

set -e                          # Abort on errors
cd Cactus

time ${MPICHDIR}/bin/mpirun -np 64 -machinefile ${PBS_NODEFILE}     \ # line cont'd
    /bin/env OMP_NUM_THREADS=1 exe/cactus_wavetoy                   \ # line cont'd
    -L 3 ${HOME}/Cactus/arrangements/CactusWave/WaveToyC/par/wavetoyc_rad.par

Modify this script for your purposes, replacing e.g. the name of your allocation. A template for a more powerful job submission script for Cactus is also available at:

cp /usr/local/packages/Cactus/share/cactus-eric-mvapich.submit ~/Cactus


Cactus website:

Carpet website:

User's manual:

Cactus mailing lists:

Powered by MediaWiki