1#ifndef __CS_BASE_ACCEL_H__
2#define __CS_BASE_ACCEL_H__
38#if defined(SYCL_LANGUAGE_VERSION)
39#include <sycl/sycl.hpp>
68#define CS_MALLOC_HD(_ptr, _ni, _type, _mode) \
69_ptr = (_type *) cs_malloc_hd(_mode, _ni, sizeof(_type), \
70 #_ptr, __FILE__, __LINE__)
88#define CS_REALLOC_HD(_ptr, _ni, _type, _mode) \
89_ptr = (_type *) cs_realloc_hd(_ptr, _mode, _ni, sizeof(_type), \
90 #_ptr, __FILE__, __LINE__)
108#define CS_FREE_HD(_ptr) \
109cs_free_hd(_ptr, #_ptr, __FILE__, __LINE__), _ptr = NULL
127#define CS_FREE(_ptr) \
128cs_free_hd(_ptr, #_ptr, __FILE__, __LINE__), _ptr = NULL
142#if defined(HAVE_ACCEL)
151#define cs_alloc_mode CS_ALLOC_HOST
152#define cs_alloc_mode_read_mostly CS_ALLOC_HOST
154#define cs_mpi_device_support 0;
160#if defined(SYCL_LANGUAGE_VERSION)
161extern sycl::queue cs_glob_sycl_queue;
176#if defined(HAVE_ACCEL)
212#if defined(HAVE_ACCEL)
218 const char *var_name,
219 const char *file_name,
228 const char *var_name,
229 const char *file_name,
268#if defined(HAVE_ACCEL)
275 const char *var_name,
276 const char *file_name,
286 const char *var_name,
287 const char *file_name,
310#if defined(HAVE_ACCEL)
314 const char *var_name,
315 const char *file_name,
322 const char *var_name,
323 const char *file_name,
347#if defined(HAVE_ACCEL)
364#if defined(__cplusplus) && defined(HAVE_ACCEL)
396#if defined(HAVE_ACCEL)
403inline static const void *
413#if defined(__cplusplus) && defined(HAVE_ACCEL)
446#if defined(HAVE_ACCEL)
453inline static const void *
463#if defined(__cplusplus) && defined(HAVE_ACCEL)
490#if defined(HAVE_ACCEL)
522#if defined(HAVE_ACCEL)
531#define cs_associate_device_ptr(_host_ptr, _ni, _size);
546#if defined(HAVE_ACCEL)
553#define cs_disassociate_device_ptr(_host_ptr);
570#if defined(HAVE_ACCEL)
578#define cs_set_alloc_mode(_host_ptr, mode);
590#if defined(HAVE_ACCEL)
597#define cs_mem_advise_set_read_mostly(ptr);
609#if defined(HAVE_ACCEL)
616#define cs_mem_advise_unset_read_mostly(ptr);
638#if defined(HAVE_ACCEL)
677#if defined(HAVE_ACCEL)
711#if defined(HAVE_ACCEL)
745#if defined(HAVE_ACCEL)
774#if defined(HAVE_ACCEL)
805#if defined(HAVE_ACCEL)
823#if defined(HAVE_ACCEL)
881#if defined(HAVE_OPENMP_TARGET)
895cs_omp_target_select_default_device(
void);
899#if defined(HAVE_SYCL)
915cs_sycl_select_default_device(
void);
942#if defined(HAVE_ACCEL)
946cs_set_alloc_mode_r(T* &host_ptr,
956#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.cpp:829
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.cpp:886
void * bft_mem_free(void *ptr, const char *var_name, const char *file_name, int line_num)
Free allocated memory.
Definition bft_mem.cpp:977
cs_alloc_mode_t
Definition bft_mem.h:50
@ CS_ALLOC_HOST
Definition bft_mem.h:52
void cs_copy_h2d(void *dest, const void *src, size_t size)
Copy data from host to device.
Definition cs_base_accel.cxx:1672
void cs_copy_d2h(void *dest, const void *src, size_t size)
Copy data from device to host.
Definition cs_base_accel.cxx:1709
void cs_copy_d2d(void *dest, const void *src, size_t size)
Copy data from device to device.
Definition cs_base_accel.cxx:1746
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:454
#define cs_mem_advise_set_read_mostly(ptr)
Advise memory system that a given allocation will be mostly read.
Definition cs_base_accel.h:597
#define cs_mem_advise_unset_read_mostly(ptr)
Advise memory system that a given allocation will be mostly read.
Definition cs_base_accel.h:616
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:225
static void cs_prefetch_d2h(void *ptr, size_t size)
Prefetch data from device to host.
Definition cs_base_accel.h:814
static int cs_get_device_id(void)
Return currently associated device id.
Definition cs_base_accel.h:184
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:404
#define cs_associate_device_ptr(_host_ptr, _ni, _size)
Associate device memory with a given host memory pointer.
Definition cs_base_accel.h:531
#define cs_set_alloc_mode(_host_ptr, mode)
Set allocation mode for an already allocated pointer.
Definition cs_base_accel.h:578
static void cs_sync_d2h(void *ptr)
Synchronize data from device to host.
Definition cs_base_accel.h:719
#define cs_disassociate_device_ptr(_host_ptr)
Detach device memory from a given host memory pointer.
Definition cs_base_accel.h:553
#define cs_alloc_mode
Definition cs_base_accel.h:151
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:685
#define cs_alloc_mode_read_mostly
Definition cs_base_accel.h:152
#define cs_mpi_device_support
Definition cs_base_accel.h:154
static void cs_prefetch_h2d(void *ptr, size_t size)
Prefetch data from host to device.
Definition cs_base_accel.h:783
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:498
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:282
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:321
static void cs_sync_d2h_if_needed(void *ptr)
Synchronize data from device to host, only if needed.
Definition cs_base_accel.h:753
static void cs_sync_h2d(const void *ptr)
Synchronize data from host to device.
Definition cs_base_accel.h:646
static void * cs_get_device_ptr(void *ptr)
Return matching device pointer for a given pointer.
Definition cs_base_accel.h:355
#define restrict
Definition cs_defs.h:141
#define BEGIN_C_DECLS
Definition cs_defs.h:528
#define CS_UNUSED(x)
Definition cs_defs.h:514
#define END_C_DECLS
Definition cs_defs.h:529
@ p
Definition cs_field_pointer.h:67