SoAx: A generic C++ Structure of Arrays for handling Particles in HPC Codes
Holger Homann, Francois Laenen

TL;DR
This paper introduces SoAx, a C++ library that efficiently manages particles in HPC by combining the performance benefits of Structure of Arrays with the ease of use of Array of Structures, optimized across CPUs, MICs, and GPUs.
Contribution
The paper presents SoAx, a generic C++ library that achieves high performance in particle handling while maintaining user-friendly data structures, using advanced template meta programming techniques.
Findings
SoA implementation outperforms AoS by several times on CPUs.
Performance gap reaches a factor of ten on MIC co-processors.
SoAx provides optimal performance across CPUs, MICs, and GPUs.
Abstract
The numerical study of physical problems often require integrating the dynamics of a large number of particles evolving according to a given set of equations. Particles are characterized by the information they are carrying such as an identity, a position other. There are generally speaking two different possibilities for handling particles in high performance computing (HPC) codes. The concept of an Array of Structures (AoS) is in the spirit of the object-oriented programming (OOP) paradigm in that the particle information is implemented as a structure. Here, an object (realization of the structure) represents one particle and a set of many particles is stored in an array. In contrast, using the concept of a Structure of Arrays (SoA), a single structure holds several arrays each representing one property (such as the identity) of the whole set of particles. The AoS approach is often…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
