17typedef void (*OneAPIDeviceIteratorCallback)(
const char *id,
26 SyclQueue *device_queue_;
27# ifdef WITH_EMBREE_GPU
28 RTCDevice embree_device;
29 RTCScene embree_scene;
30# if RTC_VERSION >= 40302
35 using ConstMemMap = map<string, device_vector<uchar> *>;
36 ConstMemMap const_mem_map_;
38 void *kg_memory_device_;
39 size_t kg_memory_size_ = (size_t)0;
40 size_t max_memory_on_device_ = (size_t)0;
41 std::string oneapi_error_string_;
42 bool use_hardware_raytracing =
false;
43 unsigned int kernel_features = 0;
44 int scene_max_shaders_ = 0;
46 size_t get_free_mem()
const;
53 virtual ~OneapiDevice();
54# ifdef WITH_EMBREE_GPU
61 void reserve_private_memory(
const uint kernel_features);
64 virtual bool alloc_device(
void *&device_pointer,
size_t size)
override;
65 virtual void free_device(
void *device_pointer)
override;
66 virtual bool alloc_host(
void *&shared_pointer,
size_t size)
override;
67 virtual void free_host(
void *shared_pointer)
override;
69 virtual void copy_host_to_device(
void *device_pointer,
void *host_pointer,
size_t size)
override;
71 string oneapi_error_message();
73 int scene_max_shaders();
75 void *kernel_globals_device_pointer();
94 virtual void const_copy_to(
const char *name,
void *host,
size_t size)
override;
111 void *usm_aligned_alloc_host(
size_t memory_size,
size_t alignment);
112 void usm_free(
void *usm_ptr);
115 static void iterate_devices(OneAPIDeviceIteratorCallback cb,
void *user_ptr);
117 size_t get_memcapacity();
118 int get_num_multiprocessors();
119 int get_max_num_threads_per_multiprocessor();
120 bool queue_synchronize(SyclQueue *queue);
121 bool kernel_globals_size(
size_t &kernel_global_size);
122 void set_global_memory(SyclQueue *queue,
123 void *kernel_globals,
124 const char *memory_name,
125 void *memory_device_pointer);
126 bool enqueue_kernel(KernelContext *kernel_context,
131 void get_adjusted_global_and_local_sizes(SyclQueue *queue,
133 size_t &kernel_global_size,
134 size_t &kernel_local_size);
135 SyclQueue *sycl_queue();
138 bool can_use_hardware_raytracing_for_features(
uint kernel_features)
const;
139 void check_usm(SyclQueue *queue,
const void *usm_ptr,
bool allow_host);
140 bool create_queue(SyclQueue *&external_queue,
int device_index,
void *embree_device);
141 void free_queue(SyclQueue *queue);
142 void *usm_aligned_alloc_host(SyclQueue *queue,
size_t memory_size,
size_t alignment);
143 void *usm_alloc_device(SyclQueue *queue,
size_t memory_size);
144 void usm_free(SyclQueue *queue,
void *usm_ptr);
145 bool usm_memcpy(SyclQueue *queue,
void *dest,
void *src,
size_t num_bytes);
146 bool usm_memset(SyclQueue *queue,
void *usm_ptr,
unsigned char value,
size_t num_bytes);
void BLI_kdtree_nd_ free(KDTree *tree)
void refit(btStridingMeshInterface *triangles, const btVector3 &aabbMin, const btVector3 &aabbMax)
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
virtual void const_copy_to(const char *name, void *host, size_t size)=0
virtual void mem_zero(device_memory &mem)=0
virtual void mem_copy_from(device_memory &mem, size_t y, size_t w, size_t h, size_t elem)=0
virtual unique_ptr< DeviceQueue > gpu_queue_create()
virtual void build_bvh(BVH *bvh, Progress &progress, bool refit)
virtual bool load_kernels(uint)
virtual bool check_peer_access(Device *)
virtual void mem_free(device_memory &mem)=0
virtual BVHLayoutMask get_bvh_layout_mask(uint kernel_features) const =0
virtual void mem_copy_to(device_memory &mem)=0
virtual device_ptr mem_alloc_sub_ptr(device_memory &, size_t, size_t)
static string device_capabilities(uint device_type_mask=DEVICE_MASK_ALL)
virtual void mem_alloc(device_memory &mem)=0
virtual bool should_use_graphics_interop()
#define CCL_NAMESPACE_END
virtual void get_device_memory_info(size_t &total, size_t &free)=0
virtual bool alloc_host(void *&shared_pointer, size_t size)=0
virtual void transform_host_pointer(void *&device_pointer, void *&shared_pointer)=0
virtual void copy_host_to_device(void *device_pointer, void *host_pointer, size_t size)=0
virtual void free_host(void *shared_pointer)=0
virtual void free_device(void *device_pointer)=0
virtual bool alloc_device(void *&device_pointer, size_t size)=0
CCL_NAMESPACE_BEGIN typedef std::mutex thread_mutex