Cactus is a software framework for high performance computing
Cactus is a software framework for high performance computing. A software framework is a scaffolding that helps build large applications by giving them a stable structure. This makes it easier to add, remove, or exchange parts (components) of the application as the application is maintained or as new features are added. Staying within the picture, the framework itself is called “flesh”, and the individual components are called “thorns”.
Cactus has been designed for high performance computing (HPC), where large amounts of data have to be processed efficiently on large, parallel computers. Memory management, parallelism, and I/O are provided by special “driver” thorns upon which most other thorns rely. One such driver thorn is Carpet, which implements Berger-Oliger style adaptive mesh refinement (AMR), and also supports multi-block discretisations. Cactus itself also provides a number of non-performance-critical services, such as a run-time parameter database and a highly portable make system.
Since every Cactus application consists of just a set of thorns that are connected by Cactus, and since Cactus schedules their execution, there is no “main” thorn that controls the other thorns. This means that every user can combine existing and self-developed thorns into applications, without having to ask permission from a central developer. This simplifies collaborations, especially if they are large and only loosely connected.
Cactus originated more than ten years ago in the numerical relativity community to address the challenges encountered while solving the Einstein equations to simulate black holes and neutron stars. Cactus and Carpet are today widely used in relativistic astrophysics, and an Einstein Toolkit provides many ingredients for relativistic simulations, such as initial data, evolution methods, and horizon finders.