SPEChpc™ 2021 Benchmark Description

Benchmark Name

632.sph_exa_s (SPH-EXA mini-app)

Benchmark Author

Submitted by Florina Ciorba florina.ciorba __at__ unibas.ch

Authors listed in alphabetic order:

(*) corresponding author, danilo.guerrera __at__ unibas.ch

Benchmark Program General Category

Astrophysics and Cosmology

Benchmark Description

The SPH-EXA mini-app implements the smoothed particle hydrodynamics (SPH) technique, a meshless Lagrangian method commonly used for performing hydrodynamical and computational fluid dynamics simulations. The SPH technique discretizes a fluid in a series of interpolation points (SPH particles) whose distribution follows the mass density of the fluid and their evolution relies on a weighted interpolation over close neighboring particles. SPH simulations with detailed physics calculations represent computationally-demanding applications. The SPH-EXA mini-app is derived from three parent SPH codes used in astrophysics (SPHYNX and ChaNGa) and computational fluid dynamics (SPH-flow). A number of basic steps of any SPH calculation are included in the mini-app: from the particles’ positions and masses a tree is built and walked to identify the neighbors that will be used for the remainder of the global time-step (or iteration). Such steps include the evaluation of the particles’ density, acceleration, rate of change of internal energy, and all physical modules relevant to the studied scenario. Next, a new physically relevant and numerically stable time-step is found, and the properties of the particles are updated accordingly. SPH-EXA mini-app is a modern C++ headers-only code (except for main.cpp) with no external software dependencies. The parallelism is currently expressed via MPI+OpenMP and will be extended to exploit accelerated parallelism (OpenACC, HPX). This mini-app can simulate a three-dimensional rotating square patch, a demanding scenario for SPH simulations due to the presence of negative pressures, which stimulate the emergence of unphysical tensile instabilities that destroy the particle system, unless corrective repulsive forces are included.

Input Description

-n - number of particles to the cube (-n 100 means that the application will run with 100*100*100 particles) -s - number of time-steps(iterations) -w num - specify how often output file shall be writen (-w 50 means that output file will be dumped every 50 iterations) For the testing it has been added to the source code the automatic generation of the input conditions for all given particles. In the present setup the code performs a simulation of the evolution of a three-dimensional rotating square patch of fluid, modeled using 1000000 (one million) of particles. To do this, additional information are set in the initialization phase:

Output Description

The code performs the simulation, and at the end it saves the total energy of the system. It is sufficent to check that this value does not change across simulations (for a fixed number of time-steps) to make sure that the code has executed correctly.

Additionally, an output file can be generated which contains positions (x, y, z), velocities (vx, vy, vz), smoothing length (h), density (ro), internal energy (u), pressure (p), speed of sound (c) and gradient of pressure (gradPx, gradPy, gradPz) for all particles at given timestep (iteration).

Programming Language


External Dependencies


Runtime Limitations (such as number of ranks)


Known portability issues


Version and Licensing

Application Version: 1.0

License: MIT