53 const size_t requested_size =
sizeof(double) * length;
55 if (*buffer != NULL) {
56 if (0 == requested_size) {
59 (*buffer)->host_buffer = NULL;
60 (*buffer)->device_buffer = NULL;
62 }
else if (requested_size <= (*buffer)->size) {
69 assert(NULL != *buffer);
72 (*buffer)->size = requested_size;
73 (*buffer)->host_buffer = NULL;
74 (*buffer)->device_buffer = NULL;
75 if (0 == requested_size) {
78#if defined(OFFLOAD_BUFFER_MEMPOOL)
79#if !defined(__OFFLOAD_UNIFIED_MEMORY)
83#elif defined(__OFFLOAD)
84 offload_activate_chosen_device();
85#if !defined(__OFFLOAD_UNIFIED_MEMORY)
86 offloadMallocHost((
void **)&(*buffer)->host_buffer, requested_size);
88 offloadMalloc((
void **)&(*buffer)->device_buffer, requested_size);
90 (*buffer)->host_buffer = malloc(requested_size);
91 (*buffer)->device_buffer = NULL;
93 if (NULL == (*buffer)->host_buffer) {
94 (*buffer)->host_buffer = (*buffer)->device_buffer;