Cactus 4.0
Users’ Guide



This document contains a quick-start guide to installing and running a Cactus application. In subsequent chapters, it provides more detailed information on advanced user’s topics, as well as an introduction to thorn writing. Please report omissions, errors, or suggestions to any of our contact addresses below.

Overview of documentation

Part A: Introduction to Cactus.

A guide through the process of obtaining and installing Cactus and running a simple example application with it.

Part B: Additional Notes.

A more in-depth description of required hardware and software, along with configuration, installation and running options. Describes how to check the installation with Cactus test suites.

Part C: Thorn Writing.

An introduction to thorn concepts and description of how to create, write and maintain application thorns. Explanation of use of the programming interface to take advantage of parallelism and modularity. This is followed by a more advanced discussion of user supplied infrastructure routines such as additional output routines, drivers, etc.

Part D: Appendices.

These contain a glossary, a description of the Cactus Configuration Language, the Utility routines and other odds and ends, such as how to use GNATS and TAGS.

Related topics are discussed in separate documents including:

Reference Manual

Contains detailed descriptions of the functions provided by the Cactus flesh API, along with other reference material.

Typographical Conventions


Is currently used for everything you type, for program names, and code extracts.

< ... >

Indicates a compulsory argument.

[ ... ]

Indicates an optional argument.


Indicates an exclusive or.

How to Contact Us

Please let us know of any errors or omissions in this guide, as well as suggestions for future editions. These can be reported via our bug tracking system at, or via email to Alternatively, you can write to us at

The Cactus Team
Center for Computation & Technology
216 Johnston Hall
Louisiana State University
Baton Rouge, LA 70803


Hearty thanks to all those who have helped with documentation for the Cactus Code. Special thanks to those who struggled with the earliest sparse versions of this guide and sent in mistakes and suggestions, in particular John Baker, Carsten Gundlach, Ginny Hudak-David, Sai Iyer, Paul Lamping, Nancy Tran and Ed Seidel.

A  Introduction
A1 Getting Started
 A1.1 Obtaining Cactus
 A1.2 Compiling a Cactus application
 A1.3 Running a Cactus application
A2 Getting and looking at output
 A2.1 Screen output
 A2.2 File output
A3 Checkpointing/Recovery
A4 Reporting bugs
B  Additional notes
B1 Installation
 B1.1 Required Software
 B1.2 Supported Architectures
B2 Compilation
 B2.1 Configuration Options
 B2.2 Compiling with Extra Packages
 B2.3 File Layout
 B2.4 Building and Administering a Configuration
 B2.5 Other gmake Targets
 B2.6 Testing
B3 Runtime options
 B3.1 Command-Line Options
 B3.2 Parameter File Syntax
 B3.3 Thorn Documentation
B4 Getting and Looking at Output
 B4.1 Screen Output
 B4.2 Output
C  Thorn Writing
C1 Application thorns
 C1.1 Thorn Concepts
 C1.2 Anatomy of a Thorn
 C1.3 Cactus Variables
 C1.4 Cactus Parameters
 C1.5 Scheduling
 C1.6 Writing a Thorn
 C1.7 Cactus Application Interfaces
 C1.8 Completing a Thorn
 C1.9 Advanced Thorn Writing
 C1.10 Telling the Make system What to Do
C2 Infrastructure Thorns
 C2.1 Concepts and Terminology
 C2.2 GH Extensions
 C2.3 Overloadable and Registerable Functions in Main
 C2.4 Overloadable and Registerable Functions in Comm
 C2.5 Overloadable and Registerable Functions in I/O
 C2.6 Drivers
 C2.7 I/O Methods
 C2.8 Checkpointing/Recovery Methods
 C2.9 Clocks for Timing
D  Appendices
D1 Glossary
D2 Configuration File Syntax
 D2.1 General Concepts
 D2.2 interface.ccl
 D2.3 param.ccl
 D2.4 schedule.ccl
 D2.5 configuration.ccl
D3 Utility Routines
 D3.1 Introduction
 D3.2 Key/Value Tables
D4 Schedule Bins
D5 Flesh Parameters
 D5.1 Private Parameters
 D5.2 Restricted Parameters
D6 Using TRAC
D7 Using SVN
 D7.1 Essential SVN Commands
D8 Using Tags
 D8.1 Tags with Emacs
 D8.2 Tags with vi