17#ifndef __DRIVER_OPENCL_H__
18#define __DRIVER_OPENCL_H__
26#ifdef STARPU_USE_OPENCL
28#define CL_TARGET_OPENCL_VERSION 100
36#include <core/workers.h>
39#pragma GCC visibility push(hidden)
41void _starpu_opencl_preinit(
void);
43#if defined(STARPU_USE_OPENCL) || defined(STARPU_SIMGRID)
47void _starpu_opencl_init(
void);
48unsigned _starpu_opencl_get_device_count(
void);
49#ifdef STARPU_HAVE_HWLOC
51hwloc_obj_t _starpu_opencl_get_hwloc_obj(hwloc_topology_t topology,
int devid);
56void *_starpu_opencl_worker(
void *);
59#define _starpu_opencl_discover_devices(config) ((void) (config))
62#if defined(STARPU_USE_OPENCL) || defined(STARPU_SIMGRID)
66#ifdef STARPU_USE_OPENCL
67extern char *_starpu_opencl_program_dir;
74int _starpu_opencl_init_context(
int devid);
75int _starpu_opencl_deinit_context(
int devid);
76cl_device_type _starpu_opencl_get_device_type(
int devid);
78uintptr_t _starpu_opencl_map_ram(uintptr_t src_ptr,
size_t src_offset,
unsigned src_node,
unsigned dst_node,
size_t size,
int *ret);
79int _starpu_opencl_unmap_ram(uintptr_t src_ptr,
size_t src_offset,
unsigned src_node, uintptr_t dst_ptr,
unsigned dst_node,
size_t size);
80int _starpu_opencl_update_opencl_map(uintptr_t src,
size_t src_offset,
unsigned src_node, uintptr_t dst,
size_t dst_offset,
unsigned dst_node,
size_t size);
81int _starpu_opencl_update_cpu_map(uintptr_t src,
size_t src_offset,
unsigned src_node, uintptr_t dst,
size_t dst_offset,
unsigned dst_node,
size_t size);
85cl_int _starpu_opencl_copy_rect_opencl_to_ram(cl_mem buffer,
unsigned src_node,
void *ptr,
unsigned dst_node,
const size_t buffer_origin[3],
const size_t host_origin[3],
86 const size_t region[3],
size_t buffer_row_pitch,
size_t buffer_slice_pitch,
87 size_t host_row_pitch,
size_t host_slice_pitch, cl_event *event);
89cl_int _starpu_opencl_copy_rect_ram_to_opencl(
void *ptr,
unsigned src_node, cl_mem buffer,
unsigned dst_node,
const size_t buffer_origin[3],
const size_t host_origin[3],
90 const size_t region[3],
size_t buffer_row_pitch,
size_t buffer_slice_pitch,
91 size_t host_row_pitch,
size_t host_slice_pitch, cl_event *event);
97int _starpu_opencl_copy_interface_from_opencl_to_opencl(starpu_data_handle_t handle,
void *src_interface,
unsigned src_node,
void *dst_interface,
unsigned dst_node,
struct _starpu_data_request *req);
98int _starpu_opencl_copy_interface_from_opencl_to_cpu(starpu_data_handle_t handle,
void *src_interface,
unsigned src_node,
void *dst_interface,
unsigned dst_node,
struct _starpu_data_request *req);
99int _starpu_opencl_copy_interface_from_cpu_to_opencl(starpu_data_handle_t handle,
void *src_interface,
unsigned src_node,
void *dst_interface,
unsigned dst_node,
struct _starpu_data_request *req);
101int _starpu_opencl_copy_data_from_opencl_to_cpu(uintptr_t src,
size_t src_offset,
unsigned src_node, uintptr_t dst,
size_t dst_offset,
unsigned dst_node,
size_t size,
struct _starpu_async_channel *async_channel);
102int _starpu_opencl_copy_data_from_opencl_to_opencl(uintptr_t src,
size_t src_offset,
unsigned src_node, uintptr_t dst,
size_t dst_offset,
unsigned dst_node,
size_t size,
struct _starpu_async_channel *async_channel);
103int _starpu_opencl_copy_data_from_cpu_to_opencl(uintptr_t src,
size_t src_offset,
unsigned src_node, uintptr_t dst,
size_t dst_offset,
unsigned dst_node,
size_t size,
struct _starpu_async_channel *async_channel);
105int _starpu_opencl_is_direct_access_supported(
unsigned node,
unsigned handling_node);
106uintptr_t _starpu_opencl_malloc_on_node(
unsigned dst_node,
size_t size,
int flags);
107void _starpu_opencl_free_on_node(
unsigned dst_node, uintptr_t addr,
size_t size,
int flags);
109#pragma GCC visibility pop
Definition: copy_driver.h:71
Definition: workers.h:441
Definition: workers.h:352
int devid[STARPU_NARCH][STARPU_NMAXDEVS]
Definition: workers.h:404
Definition: node_ops.h:92
Definition: workers.h:155