Implementation and performance of FDPS: A Framework Developing Parallel
  Particle Simulation Codes
  We present the basic idea, implementation, measured performance and
performance model of FDPS (Framework for developing particle simulators). FDPS
is an application-development framework which helps the researchers to develop
particle-based simulation programs for large-scale distributed-memory parallel
supercomputers. A particle-based simulation program for distributed-memory
parallel computers needs to perform domain decomposition, redistribution of
particles, and gathering of particle information for interaction calculation.
Also, even if distributed-memory parallel computers are not used, in order to
reduce the amount of computation, algorithms such as Barnes-Hut tree method
should be used for long-range interactions. For short-range interactions, some
methods to limit the calculation to neighbor particles are necessary. FDPS
provides all of these necessary functions for efficient parallel execution of
particle-based simulations as "templates", which are independent of the actual
data structure of particles and the functional form of the interaction. By
using FDPS, researchers can write their programs with the amount of work
necessary to write a simple, sequential and unoptimized program of O(N^2)
calculation cost, and yet the program, once compiled with FDPS, will run
efficiently on large-scale parallel supercomputers. A simple gravitational
N-body program can be written in around 120 lines. We report the actual
performance of these programs and the performance model. The weak scaling
performance is very good, and almost linear speedup was obtained for up to the
full system of K computer. The minimum calculation time per timestep is in the
range of 30 ms (N=10^7) to 300 ms (N=10^9). These are currently limited by the
time for the calculation of the domain decomposition and communication
necessary for the interaction calculation. We discuss how we can overcome these
bottlenecks.
