Ikra-Cpp: A C++/CUDA DSL for Object-OrientedProgramming with Structure-of-Arrays Layout (bibtex)
by Matthias Springer and Hidehiko Masuhara
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.}
}
Powered by bibtexbrowser