[J3] Custom Memory Allocator

Reuben D. Budiardja reubendb at ornl.gov
Fri Nov 15 14:29:44 EST 2019


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.


More information about the J3 mailing list