1 #ifndef __CS_BASE_ACCEL_H__
2 #define __CS_BASE_ACCEL_H__
64 #define CS_MALLOC_HD(_ptr, _ni, _type, _mode) \
65 _ptr = (_type *) cs_malloc_hd(_mode, _ni, sizeof(_type), \
66 #_ptr, __FILE__, __LINE__)
84 #define CS_REALLOC_HD(_ptr, _ni, _type, _mode) \
85 _ptr = (_type *) cs_realloc_hd(_ptr, _mode, _ni, sizeof(_type), \
86 #_ptr, __FILE__, __LINE__)
104 #define CS_FREE_HD(_ptr) \
105 cs_free_hd(_ptr, #_ptr, __FILE__, __LINE__), _ptr = NULL
123 #define CS_FREE(_ptr) \
124 cs_free(_ptr, #_ptr, __FILE__, __LINE__), _ptr = NULL
159 #if defined(HAVE_ACCEL)
167 #define cs_alloc_mode CS_ALLOC_HOST
169 #define cs_mpi_device_support 0;
185 #if defined(HAVE_ACCEL)
221 #if defined(HAVE_ACCEL)
227 const char *var_name,
228 const char *file_name,
237 const char *var_name,
238 const char *file_name,
277 #if defined(HAVE_ACCEL)
284 const char *var_name,
285 const char *file_name,
295 const char *var_name,
296 const char *file_name,
319 #if defined(HAVE_ACCEL)
323 const char *var_name,
324 const char *file_name,
331 const char *var_name,
332 const char *file_name,
354 #if defined(HAVE_ACCEL)
358 const char *var_name,
359 const char *file_name,
366 const char *var_name,
367 const char *file_name,
391 #if defined(HAVE_ACCEL)
422 #if defined(HAVE_ACCEL)
429 inline static const void *
454 #if defined(HAVE_ACCEL)
461 inline static const void *
480 #if defined(HAVE_ACCEL)
512 #if defined(HAVE_ACCEL)
521 #define cs_associate_device_ptr(_host_ptr, _ni, _size);
536 #if defined(HAVE_ACCEL)
543 #define cs_disassociate_device_ptr(_host_ptr);
560 #if defined(HAVE_ACCEL)
568 #define cs_set_alloc_mode(_host_ptr, mode);
590 #if defined(HAVE_ACCEL)
629 #if defined(HAVE_ACCEL)
663 #if defined(HAVE_ACCEL)
691 #if defined(HAVE_ACCEL)
722 #if defined(HAVE_ACCEL)
740 #if defined(HAVE_ACCEL)
806 #if defined(HAVE_ACCEL)
831 #if defined(HAVE_ACCEL)
847 #if defined(HAVE_OPENMP_TARGET)
861 cs_omp_target_select_default_device(
void);
888 #if defined(HAVE_ACCEL)
892 cs_set_alloc_mode_r(T* &host_ptr,
902 #define cs_set_alloc_mode_r(_host_ptr, mode);
void * bft_mem_malloc(size_t ni, size_t size, const char *var_name, const char *file_name, int line_num)
Allocate memory for ni elements of size bytes.
Definition: bft_mem.c:815
void * bft_mem_realloc(void *ptr, size_t ni, size_t size, const char *var_name, const char *file_name, int line_num)
Reallocate memory for ni elements of size bytes.
Definition: bft_mem.c:899
void * bft_mem_free(void *ptr, const char *var_name, const char *file_name, int line_num)
Free allocated memory.
Definition: bft_mem.c:1056
void cs_copy_h2d(void *dest, const void *src, size_t size)
Copy data from host to device.
Definition: cs_base_accel.cxx:1428
void cs_copy_d2h(void *dest, const void *src, size_t size)
Copy data from device to host.
Definition: cs_base_accel.cxx:1458
void cs_copy_d2d(void *dest, const void *src, size_t size)
Copy data from device to device.
Definition: cs_base_accel.cxx:1488
static void * cs_get_device_ptr(void *ptr)
Return matching device pointer for a given pointer.
Definition: cs_base_accel.h:399
static void * cs_malloc_hd(cs_alloc_mode_t mode, size_t ni, size_t size, const char *var_name, const char *file_name, int line_num)
Allocate memory on host and device for ni elements of size bytes.
Definition: cs_base_accel.h:234
static void cs_prefetch_d2h(void *ptr, size_t size)
Prefetch data from device to host.
Definition: cs_base_accel.h:731
static int cs_get_device_id(void)
Return currently associated device id.
Definition: cs_base_accel.h:193
#define cs_associate_device_ptr(_host_ptr, _ni, _size)
Associate device memory with a given host memory pointer.
Definition: cs_base_accel.h:521
#define cs_set_alloc_mode(_host_ptr, mode)
Set allocation mode for an already allocated pointer.
Definition: cs_base_accel.h:568
static void cs_sync_d2h(void *ptr)
Synchronize data from device to host.
Definition: cs_base_accel.h:671
#define cs_disassociate_device_ptr(_host_ptr)
Detach device memory from a given host memory pointer.
Definition: cs_base_accel.h:543
#define cs_alloc_mode
Definition: cs_base_accel.h:167
static size_t cs_get_allocation_hd_size(void *host_ptr)
Check if a given host pointer is allocated with associated with cs_alloc_hd or cs_realloc_hd.
Definition: cs_base_accel.h:839
static void cs_sync_h2d_future(const void *ptr)
Initiate synchronization of data from host to device for future access.
Definition: cs_base_accel.h:637
#define cs_mpi_device_support
Definition: cs_base_accel.h:169
static void cs_prefetch_h2d(void *ptr, size_t size)
Prefetch data from host to device.
Definition: cs_base_accel.h:700
static void * cs_realloc_hd(void *ptr, cs_alloc_mode_t mode, size_t ni, size_t size, const char *var_name, const char *file_name, int line_num)
Reallocate memory on host and device for ni elements of size bytes.
Definition: cs_base_accel.h:291
static cs_alloc_mode_t cs_check_device_ptr(const void *ptr)
Check if a pointer is associated with a device.
Definition: cs_base_accel.h:488
static int cs_get_n_allocations_hd(void)
Return number of host-device allocations.
Definition: cs_base_accel.h:814
static void cs_free_hd(void *ptr, const char *var_name, const char *file_name, int line_num)
Free memory on host and device for a given host pointer.
Definition: cs_base_accel.h:330
static void cs_sync_h2d(const void *ptr)
Synchronize data from host to device.
Definition: cs_base_accel.h:598
static void cs_free(void *ptr, const char *var_name, const char *file_name, int line_num)
Free memory on host and device for a given pointer.
Definition: cs_base_accel.h:365
cs_alloc_mode_t
Definition: cs_base_accel.h:142
@ CS_ALLOC_HOST
Definition: cs_base_accel.h:144
@ CS_ALLOC_HOST_DEVICE_PINNED
Definition: cs_base_accel.h:146
@ CS_ALLOC_HOST_DEVICE_SHARED
Definition: cs_base_accel.h:149
@ CS_ALLOC_HOST_DEVICE
Definition: cs_base_accel.h:145
@ CS_ALLOC_DEVICE
Definition: cs_base_accel.h:151
static const void * cs_get_device_ptr_const_pf(const void *ptr)
Return matching device pointer for a given constant pointer, prefetching if applicable.
Definition: cs_base_accel.h:462
static const void * cs_get_device_ptr_const(const void *ptr)
Return matching device pointer for a given constant pointer.
Definition: cs_base_accel.h:430
#define BEGIN_C_DECLS
Definition: cs_defs.h:514
#define CS_UNUSED(x)
Definition: cs_defs.h:500
#define END_C_DECLS
Definition: cs_defs.h:515
@ p
Definition: cs_field_pointer.h:67