Abstract:
Previous work has shown how the well-studied and SIMD-friendly Structure of Arrays (SOA) data layout strategy can speed up applications in high-performance computing compared to a traditional Array of Structures (AOS) data layout. However, a standard SOA layout cannot handle structures with inner arrays; such structures appear frequently in graph-based applications and object-oriented designs with associations of high multiplicity. This work extends the SOA data layout to structures with array-typed fields. We present different techniques for in-lining (embedding) inner arrays into an AOS or SOA layout, as well as the design and implementation of an embedded C++/CUDA DSL that lets programmers write such layouts in a notation close to standard C++. We evaluate several layout strategies with a traffic flow simulation, an important real-world application in transport planning.
Reference:
Inner Array Inlining for Structure of Arrays Layout (Matthias Springer, Yaozhu Sun and Hidehiko Masuhara), In Proceedings of the 5th ACM SIGPLAN International Workshop on Libraries, Languages, and Compilers for Array Programming (ARRAY@PLDI 2018), 2018.
Bibtex Entry:
@inproceedings{springer2018array,
author = {Matthias Springer and Yaozhu Sun and Hidehiko Masuhara},
pdf = {array2018.pdf},
title = {Inner Array Inlining for Structure of Arrays Layout},
booktitle = {Proceedings of the 5th {ACM} {SIGPLAN} International Workshop on Libraries,
Languages, and Compilers for Array Programming (ARRAY@PLDI 2018)},
pages = {50--58},
year = {2018},
month = jun,
optcrossref = {DBLP:conf/pldi/2018array},
url = {http://doi.acm.org/10.1145/3219753.3219760},
doi = {10.1145/3219753.3219760},
timestamp = {Tue, 10 Jul 2018 08:34:20 +0200},
biburl = {https://dblp.org/rec/bib/conf/pldi/SpringerSM18},
bibsource = {dblp computer science bibliography, https://dblp.org},
location = {Philadelphia, Pennsylvania, USA},
keywords = {Ikra, CUDA, C++},
abstract = {Previous work has shown how the well-studied and SIMD-friendly Structure of Arrays (SOA) data layout strategy can speed up applications in high-performance computing compared to a traditional Array of Structures (AOS) data layout. However, a standard SOA layout cannot handle structures with inner arrays; such structures appear frequently in graph-based applications and object-oriented designs with associations of high multiplicity.
This work extends the SOA data layout to structures with array-typed fields. We present different techniques for in-lining (embedding) inner arrays into an AOS or SOA layout, as well as the design and implementation of an embedded C++/CUDA DSL that lets programmers write such layouts in a notation close to standard C++. We evaluate several layout strategies with a traffic flow simulation, an important real-world application in transport planning.}
}