DynaSOAr: A Parallel Memory Allocator for Object-oriented Programming on GPUs with Efficient Memory Access
This artifact contains the source code of DynaSOAr, a CUDA framework for Single-Method Multiple-Objects applications. SMMO is a kind of object-oriented programs in which parallelism is expressed by running the same method on all applications of a type.
DynaSOAr is a dynamic memory allocator, combined with a data layout DSL and a parallel do-all operation. DynaSOAr optimizes the usage of allocated memory with a Structure of Arrays data layout and achives low fragmentation by managing memory blocks with hierarchical bitmaps. In our benchmarks, DynaSOAr achieves a speedup of application code of up to 3x over state-of-the-art allocators. Moreover, DynaSOAr manages heap memory more efficiently than other allocators, allowing programmers to run larger problem sizes with the same amount of memory.
We provide a short tutorial explaining the API of DynaSOAr, along with nine benchmark applications from different domains. All benchmarks can be configured to use a different memory allocator to allow for a comparison with other state-of-the-art memory allocators.