Abstract:
DynaSOAr is a dynamic object allocator for GPGPU that enables object-oriented programming with an efficient structure-of-arrays (SOA) memory layout. One of the limitations in DynaSOAr is its poor support for nested objects. When a class has a field of another class, the fields of the inner class are allocated in an arrays-of-structure layout. This paper proposes a technique that translates nested class definitions into flat ones by inlining inner classes into top-level classes. We implemented this technique as a Sanajeh domain-specific language that translates Python class definitions into C++ classes using DynaSOAr. Our preliminary evaluation showed that Sanajeh executes a parallel benchmark program with nested objects at almost the same speed as the one with manually flatten classes.
Reference:
Nested Object Support in a Structure-of-Arrays Dynamic Objector Allocator (Jizhe Chenxin and Hidehiko Masuhara), Presentation at the ARRAY 2021 Workshop, co-located with PLDI 2021, 2021.
Bibtex Entry:
@misc{chenxin2021array,
author = {Jizhe Chenxin and Hidehiko Masuhara},
title = {Nested Object Support in a Structure-of-Arrays Dynamic Objector Allocator},
howpublished = {Presentation at the ARRAY 2021 Workshop, co-located with PLDI 2021},
abstract = {DynaSOAr is a dynamic object allocator for GPGPU that enables object-oriented programming with an efficient structure-of-arrays (SOA) memory layout. One of the limitations in DynaSOAr is its poor support for nested objects.
When a class has a field of another class, the fields of the inner class are allocated in an arrays-of-structure layout.
This paper proposes a technique that translates nested class definitions into flat ones by inlining inner classes into top-level classes.
We implemented this technique as a Sanajeh domain-specific language that translates Python class definitions into C++ classes using DynaSOAr.
Our preliminary evaluation showed that Sanajeh executes a parallel benchmark program with nested objects at almost the same speed as the one with manually flatten classes.
},
url = {https://pldi21.sigplan.org/details/ARRAY-2021-papers/1/Nested-Object-Support-in-a-Structure-of-Arrays-Dynamic-Objector-Allocator},
pdf = {array2021.pdf},
month = jun,
year = 2021
}