28476

A portable C++ library for memory and compute abstraction on multi-core CPUs and GPUs

Pietro Incardona, Aryaman Gupta, Serhii Yaskovets, Ivo F. Sbalzarini
Faculty of Computer Science, Technische Universität Dresden, Dresden, Germany
Concurrency Computation Practice and Experience, e7870, 2023

@article{incardona2023portable,

   title={A portable C++ library for memory and compute abstraction on multi-core CPUs and GPUs},

   author={Incardona, Pietro and Gupta, Aryaman and Yaskovets, Serhii and Sbalzarini, Ivo F},

   journal={Concurrency and Computation: Practice and Experience},

   pages={e7870},

   year={2023},

   publisher={Wiley Online Library}

}

We present a C++ library for transparent memory and compute abstraction across CPU and GPU architectures. Our library combines generic data structures like vectors, multi-dimensional arrays, maps, graphs, and sparse grids with basic generic algorithms like arbitrary-dimensional convolutions, copying, merging, sorting, prefix sum, reductions, neighbor search, and filtering. The memory layout of the data structures is adapted at compile time using C++ tuples with optional memory double-mapping between host and device and the capability of using memory managed by external libraries with no data copying. We combine this transparent memory layout with generic thread-parallel algorithms under two alternative common interfaces: a CUDA-like kernel interface and a lambda-function interface. We quantify the memory and compute performance and portability of our implementation using micro-benchmarks, showing that the abstractions introduce negligible performance overhead, and we compare performance against the current state of the art in a real-world scientific application from computational fluid mechanics.
No votes yet.
Please wait...

* * *

* * *

HGPU group © 2010-2024 hgpu.org

All rights belong to the respective authors

Contact us: