Abstract:
Structure of Arrays (SOA) is a well-studied data layout technique for SIMD architectures. Previous work has shown that it can speed up applications in high-performance computing by several factors compared to a traditional Array of Structures (AOS) layout. However, most programmers are used to AOS-style programming, which is more readable and easier to maintain. We present Ikra-Cpp, an embedded DSL for object-oriented programming in C++/CUDA. Ikra-Cpp's notation is very close to standard AOS-style C++ code, but data is layouted as SOA. This gives programmers the performance benefit of SOA and the expressiveness of AOS-style object-oriented programming at the same time. Ikra-Cpp is well integrated with C++ and lets programmers use C++ notation and syntax for classes, elds, member functions, constructors and instance creation.
Reference:
Ikra-Cpp: A C++/CUDA DSL for Object-OrientedProgramming with Structure-of-Arrays Layout (Matthias Springer and Hidehiko Masuhara), In Proceedings of the 2018 4th Workshop on Programming Models for SIMD/Vector Processing (WPMVP 2018), ACM, 2018.
Bibtex Entry:
@inproceedings{springer2018wpmvp,
pdf = {wpmvp2018.pdf},
author = {Matthias Springer and Hidehiko Masuhara},
title = {{Ikra-Cpp}: A {C++/CUDA} {DSL} for Object-OrientedProgramming with Structure-of-Arrays Layout},
booktitle = {Proceedings of the 2018 4th Workshop on Programming Models for SIMD/Vector Processing (WPMVP 2018)},
series = {WPMVP'18},
year = 2018,
isbn = {978-1-4503-5646-6},
articleno = {6},
pages = {6:1--6:9},
numpages = 9,
doi = {10.1145/3178433.3178439},
month = feb,
date = {2018-02-24},
location = {Vienna, Austria},
annote = {no formal proceedings},
url = {https://ppopp18.sigplan.org/details/WPMVP2018/6/Ikra-Cpp-A-C-CUDA-DSL-for-Object-Oriented-Programming-with-Structure-of-Arrays-Lay},
acmid = 3178439,
publisher = {ACM},
address = {New York, NY, USA},
keywords = {C++, CUDA, Object-Oriented Programming, SIMD, Structure of Arrays, Template Metaprogramming},
abstract = {Structure of Arrays (SOA) is a well-studied data layout technique for SIMD architectures. Previous work has shown that it can speed up applications in high-performance computing by several factors compared to a traditional Array of Structures (AOS) layout. However, most programmers are used to AOS-style programming, which is more readable and easier to maintain. We present Ikra-Cpp, an embedded DSL for object-oriented programming in C++/CUDA. Ikra-Cpp's notation is very close to standard AOS-style C++ code, but data is layouted as SOA. This gives programmers the performance benefit of SOA and the expressiveness of AOS-style object-oriented programming at the same time. Ikra-Cpp is well integrated with C++ and lets programmers use C++ notation and syntax for classes, elds, member functions, constructors and instance creation.}
}