Parallel summation of symmetric inter-particle forces in smoothed particle hydrodynamics.
In the smoothed particle hydrodynamics (SPH) method, the forces between all particles are efficiently summed up in a serial environment as follows. Each pair of particles is considered once. The resulting inter-particle force is computed and then the contributions to both particles are updated, taking into account the symmetry of the problem. This algorithm is difficult to parallelise when concurrently accessing the same memory location in a multi-threaded process. We develop a parallel 1D summation algorithm consisting of two passes on a Cartesian grid of cells in which particles move freely. In a first pass, we consider all cells with an even index n. We compute the inter-particle forces for all pairs of particles located in cell n and those pairs where a particle is located in cell n and another particle is located in cell n + 1. Each cell n is handled by a different thread since no data race can occur. In a second pass, we do the same for cells with odd n. This way, all interparticle forces are computed. We generalise this algorithm to 2D, 3D, and arbitrarily high dimensions and report performance results on three different shared-memory platforms using the OpenMP programming paradigm.