Analysis of a Contractile Torus Simulation in Titanium

The purpose of this paper is to analyze the use of the Titanium language, a high-performance Java dialect, and parallel programming practices on an application of the Immersed Boundary (IB) Method for simulating biological processes. We will compare two Titanium implementations of the IB Method in terms of performance, developer productivity, and use of Titanium features. The first implementation makes use of Titanium’s scientific computing and parallelization features. The second uses Java features for data structures and Titanium for parallelism. We analyze the libraries using a contractile torus simulation as a sample application, a simple model of elastic fibers suspended in viscous, incompressible fluid. The implementation of the simple model precedes the realization of a more complex model of the mammalian heart, discussed in the final section of the paper. 1. Overview of Titanium The Titanium language extends Java and includes functionality for scientific computing applications, such as a global address space, parallelization primitives, and multi-dimensional arrays. An implementation of Titanium was developed at Berkeley that is publicly available. Titanium is optimized for scientific applications such as Multigrid [3] and particle simulations. The current driving application is a simulation of the mammalian heartbeat using the Immersed Boundary Method. Berkeley’s implementation does not require special hardware support. Programs written in Titanium can run on shared-memory and distributed memory architectures, as well as clusters of shared memory multiprocessors. The compiler translates Titanium into C with lightweight messaging layers. Currently, the compiler runs on the Cray T3E using Shmem, the IBM SP using LAPI, the Compaq/Quadrics clusters using Shmem, and on the SGI Origin 2000 using POSIX threads. In addition, an MPI implementation of the runtime system provides portability across essentially any cluster. Titanium features can be grouped into two categories parallelization features and support for scientific computing. Titanium’s support for parallelism includes a global address space, communication and synchronization primitives, and local/global references. Titanium’s support for scientific applications includes multi-dimensional arrays, immutable classes, memory management control, and compatibility with scientific computing libraries written in other languages.