A New Parallel P3M Code for Very Large-Scale Cosmological Simulations
Abstract
We have developed a parallel Particle-Particle, Particle-Mesh (P3M)
simulation code for the Cray T3E parallel supercomputer that is well suited to
studying the time evolution of systems of particles interacting via gravity and
gas forces in cosmological contexts. The parallel code is based upon the
public-domain serial Adaptive P3M code of Couchman et al. The algorithm
resolves gravitational forces into a long-range component computed by
discretizing the mass distribution and solving Poisson's equation on a grid
using an FFT convolution method, and a short-range component computed by direct
force summation for sufficiently close particle pairs. The code consists
primarily of a particle-particle computation parallelized by domain
decomposition over blocks of neighbour-cells, a more regular mesh calculation
distributed in planes along one dimension, and several transformations between
the two distributions. The load balancing of the P3M code is static, since this
greatly aids the ongoing implementation of parallel adaptive refinements of the
particle and mesh systems. Great care was taken throughout to make optimal use
of the available memory, so that a version of the current implementation has
been used to simulate systems of up to 10^9 particles with a 1024^3 mesh for
the long-range force computation. These are the largest Cosmological N-body
simulations of which we are aware. We discuss these memory optimizations as
well as those motivated by computational performance. Performance results are
very encouraging, and, even without refinements, the code has been used
effectively for simulations in which the particle distribution becomes highly
clustered as well as for other non-uniform systems of astrophysical interest.