This paper describes an implementation of a platform-independent parallel C++ framework that can support various scientific simulations involving tree structures, such as astrophysics, semiconductor device simulation, molecular dynamics, plasma physics, and fluid mechanics. Within the framework, users are able to concentrate on the computation kernels that differentiate different tree-structured scientific simulation problems and let the framework take care of tedious and error-prone details that are common among these applications.
This framework was developed based on the techniques we learned from previous CM-5 C implementations, which have been rigorously justified both ex-perimentally and mathematically. This gives us confidence that our framework will allow fast prototyping of different scientific simulation applications that run on different parallel platforms and deliver good performance as well.
We used MPI to implement the communication routines within the framework for better portability; therefore, the parallel library, as well as the applications developed within the framework, can run on every parallel machine where MPI is available. The applications remain portable across different platforms, and the communication library within the framework can be customized to explore possible performance gains based on individual characteristics of different parallel machines.
To demonstrate the flexibility and performance of this framework, we implemented a gravitational force field computation code and a multi-filament vortex method on a SPARC Ultra workstation cluster, and report very competitive speedup even compared with a highly optimized sequential C implementation.