In typical particle simulations, short-ranged non-bonded pairwise interactions are the biggest contributor to the computational load. To keep this load manageable algorithms like Linked Cells or Verlet Lists were developed. However, when aiming for large-scale simulations, optimization does not end with a simple implementation of any of those algorithms. The developer has to make decisions for example about underlying data-structures and parallelization strategies. On one hand, the developer of such a simulation might be a domain scientist who is not perfectly versed in these fields of computer science, on the other hand, it was also observed, that there is no single optimal algorithm for every simulation scenario.
To tackle this challenge we developed AutoPas. AutoPas is a C++17 node-level library that is intended to act as a black-box particle container upon which arbitrary short-ranged N-Body simulations can be built upon. It provides multiple implementations of classical neighbor identification algorithms like Linked Cells and Verlet Lists, as well as a clustering algorithm as used in GROMACS. For each of those multiple data-layouts, optimization features and shared-memory parallelization strategies are implemented. During a simulation, AutoPas decides on its own which algorithmic combination is the most suitable for the current scenario. This decision is periodically reevaluated and the choice of algorithms adapted accordingly to react to the scenario evolving over time.
This contribution shows the latest developments within AutoPas and how it can be used in a simulation code at the example of ls1 mardyn, a molecular dynamics software primarily employed for applications from process engineering. We discuss strategies for the automated algorithm decision problem and underlying problems. Finally, we discuss the performance of AutoPas when used in ls1 mardyn and the interoperability of the MPI load balancing available in ls1 mardyn in conjunction with node-level auto-tuning by AutoPas.
«
In typical particle simulations, short-ranged non-bonded pairwise interactions are the biggest contributor to the computational load. To keep this load manageable algorithms like Linked Cells or Verlet Lists were developed. However, when aiming for large-scale simulations, optimization does not end with a simple implementation of any of those algorithms. The developer has to make decisions for example about underlying data-structures and parallelization strategies. On one hand, the developer of...
»