SoAx: A generic C++ Structure of Arrays for handling particles in HPC codes

Main Author: Ballantyne, John
Other Authors: Homann, Holger, Laenen, Francois
Format: Dataset
Terbitan: Mendeley , 2017
Subjects:
Online Access: https:/data.mendeley.com/datasets/m463pc4mv8
ctrlnum 0.17632-m463pc4mv8.1
fullrecord <?xml version="1.0"?> <dc><creator>Ballantyne, John</creator><title>SoAx: A generic C++ Structure of Arrays for handling particles in HPC codes</title><publisher>Mendeley</publisher><description>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 implemented in HPC codes due to its handiness and flexibility. For a class of problems, however, it is know that the performance of SoA is much better than that of AoS. We confirm this observation for our particle problem. Using a benchmark we show that on modern Intel Xeon processors the SoA implementation is typically several times faster than the AoS one. On Intel&#x2019;s MIC co-processors the performance gap even attains a factor of ten. The same is true for GPU computing, using both computational and multi-purpose GPUs. Combining performance and handiness, we present the library SoAx that has optimal performance (on CPUs, MICs, and GPUs) while providing the same handiness as AoS. For this, SoAx uses modern C++ design techniques such template meta programming that allows to automatically generate code for user defined heterogeneous data structures.</description><subject>Computational Physics</subject><contributor>Homann, Holger</contributor><contributor>Laenen, Francois</contributor><type>Other:Dataset</type><identifier>10.17632/m463pc4mv8.1</identifier><rights>GNU Public License Version 3</rights><rights>http://www.gnu.org/licenses/gpl-3.0.en.html</rights><relation>https:/data.mendeley.com/datasets/m463pc4mv8</relation><date>2017-12-21T15:18:24Z</date><recordID>0.17632-m463pc4mv8.1</recordID></dc>
format Other:Dataset
Other
author Ballantyne, John
author2 Homann, Holger
Laenen, Francois
title SoAx: A generic C++ Structure of Arrays for handling particles in HPC codes
publisher Mendeley
publishDate 2017
topic Computational Physics
url https:/data.mendeley.com/datasets/m463pc4mv8
contents 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 implemented in HPC codes due to its handiness and flexibility. For a class of problems, however, it is know that the performance of SoA is much better than that of AoS. We confirm this observation for our particle problem. Using a benchmark we show that on modern Intel Xeon processors the SoA implementation is typically several times faster than the AoS one. On Intel’s MIC co-processors the performance gap even attains a factor of ten. The same is true for GPU computing, using both computational and multi-purpose GPUs. Combining performance and handiness, we present the library SoAx that has optimal performance (on CPUs, MICs, and GPUs) while providing the same handiness as AoS. For this, SoAx uses modern C++ design techniques such template meta programming that allows to automatically generate code for user defined heterogeneous data structures.
id IOS7969.0.17632-m463pc4mv8.1
institution Universitas Islam Indragiri
affiliation onesearch.perpusnas.go.id
institution_id 804
institution_type library:university
library
library Teknologi Pangan UNISI
library_id 2816
collection Artikel mulono
repository_id 7969
city INDRAGIRI HILIR
province RIAU
shared_to_ipusnas_str 1
repoId IOS7969
first_indexed 2020-04-08T08:31:34Z
last_indexed 2020-04-08T08:31:34Z
recordtype dc
_version_ 1686587762220728320
score 17.538404