[J3] Custom Memory Allocator
Reuben D. Budiardja
reubendb at ornl.gov
Fri Nov 15 19:29:44 UTC 2019
Hello,
I am wondering if there is a standard-conformance way to allocate
allocatable array with a custom memory allocator, e.g. via third-party
provided C-library.
At first I looked into passing the allocatable into a bind(c) subroutine
and use the C descriptor from the C side. But sec 18.6 and 18.7 prevent
using any custom allocator other than using CFI_allocate().
Real-world use case examples: we need to use CUDA memory allocator
cudaMallocManaged() to use CUDA Unified Memory, and cudaHostAlloc() to
use page-locked memory on the system.
I suppose the hack-ish way is to swap the base_address member of C
descriptor to the address given cudaMallocManaged() (and free-up the
original address from CFI_allocate()).
I wondered if for further enhancement on C interoperability we may
consider allowing custom allocator into the standard.
I'd be interested in any feedback.
Best,
Reuben
More information about the J3
mailing list