The Cactus Framework and Toolkit: Design and Applications Tom Goodale 1 , Gabrielle Allen 1 , Gerd Lanfermann 1 , Joan Mass´ o 2 , Thomas Radke 1 , Edward Seidel 1 , and John Shalf 3 1 Max-Planck-Institut f¨ ur Gravitationsphysik, Albert-Einstein-Institut, Am M¨ uhlenberg 1, 14476 Golm, Germany {goodale, allen, lanfer, tradke, eseidel}@aei.mpg.de 2 Departament de F´ ısica, Universitat de les Illes Balears E-07071 Palma de Mallorca, Spain jmasso@gridsystems.com 3 Lawrence Berkeley National Laboratory, Berkeley, CA jshalf@lbl.gov Abstract. We describe Cactus, a framework for building a variety of computing applications in science and engineering, including astrophysics, relativity and chemical engineering. We first motivate by example the need for such frameworks to support multi-platform, high performance applications across diverse communities. We then describe the design of the latest release of Cactus (Version 4.0) a complete rewrite of earlier versions, which enables highly modular, multi-language, parallel appli- cations to be developed by single researchers and large collaborations alike. Making extensive use of abstractions, we detail how we are able to provide the latest advances in computational science, such as inter- changeable parallel data distribution and high performance IO layers, while hiding most details of the underlying computational libraries from the application developer. We survey how Cactus 4.0 is being used by various application communities, and describe how it will also enable these applications to run on the computational Grids of the near future. 1 Application Frameworks in Scientific Computing Virtually all areas of science and engineering, as well as an increasing number of other fields, are turning to computational science to provide crucial tools to fur- ther their disciplines. The increasing power of computers offers unprecedented ability to solve complex equations, simulate natural and man-made complex processes, and visualise data, as well as providing novel possibilities such as new forms of art and entertainment. As computational power advances rapidly, com- putational tools, libraries, and computing paradigms themselves also advance. In such an environment, even experienced computational scientists and engi- neers can easily find themselves falling behind the pace of change, while they redesign and rework their codes to support the next computer architecture. This