Managing heterogeneous device memory using C++17 memory resources
European Organization for Nuclear Research, Meyrin, Switzerland
Journal of Physics: Conference Series, 2438, 012050, 2023
@inproceedings{swatman2023managing,
title={Managing heterogeneous device memory using C++ 17 memory resources},
author={Swatman, SN and Krasznahorkay, A and Gessinger, P},
booktitle={Journal of Physics: Conference Series},
volume={2438},
number={1},
pages={012050},
year={2023},
organization={IOP Publishing}
}
Programmers using the C++ programming language are increasingly taught to manage memory implicitly through containers provided by the C++ standard library. However, heterogeneous programming platforms often require explicit allocation and deallocation of memory. This discrepancy in memory management strategies can be daunting and problematic for C++ developers who are not already familiar with heterogeneous programming. The C++17 standard introduces the concept of memory resources, which allow the user to control how standard library containers allocate memory; we believe that this addition to the C++17 standard is a powerful tool towards the unification of memory management for heterogeneous systems with best-practice C++ development. In this paper, we present vecmem, a library of memory resources which allows efficient and user-friendly allocation of memory on CUDA, HIP, and SYCL devices through standard C++ containers. We investigate the design and use cases of such a library, the potential performance gains over naive memory allocation, and the limitations of this memory allocation model.
April 2, 2023 by hgpu