18 #ifndef __DRIVER_MIC_SOURCE_H__
19 #define __DRIVER_MIC_SOURCE_H__
23 #include <starpu_mic.h>
24 #include <common/config.h>
28 #include <source/COIProcess_source.h>
29 #include <source/COIEngine_source.h>
30 #include <core/workers.h>
43 #define STARPU_MIC_REQUEST_COMPLETE 42
45 #define STARPU_MIC_SRC_REPORT_COI_ERROR(status) \
46 _starpu_mic_src_report_coi_error(__starpu_func__, __FILE__, __LINE__, status)
48 #define STARPU_MIC_SRC_REPORT_SCIF_ERROR(status) \
49 _starpu_mic_src_report_scif_error(__starpu_func__, __FILE__, __LINE__, status)
51 struct _starpu_mp_node *_starpu_mic_src_get_actual_thread_mp_node();
52 struct _starpu_mp_node *_starpu_mic_src_get_mp_node_from_memory_node(
int memory_node);
54 void(* _starpu_mic_src_get_kernel_from_job(
const struct _starpu_mp_node *node STARPU_ATTRIBUTE_UNUSED,
struct _starpu_job *j))(void);
55 int _starpu_mic_src_register_kernel(starpu_mic_func_symbol_t *symbol,
const char *func_name);
56 starpu_mic_kernel_t _starpu_mic_src_get_kernel(starpu_mic_func_symbol_t symbol);
58 void _starpu_mic_src_report_coi_error(
const char *func,
const char *file,
int line,
const COIRESULT status);
59 void _starpu_mic_src_report_scif_error(
const char *func,
const char *file,
int line,
const int status);
61 unsigned _starpu_mic_src_get_device_count(
void);
62 starpu_mic_kernel_t _starpu_mic_src_get_kernel_from_codelet(
struct starpu_codelet *cl,
unsigned nimpl);
64 void _starpu_mic_src_init(
struct _starpu_mp_node *node);
65 void _starpu_mic_clear_kernels(
void);
66 void _starpu_mic_src_deinit(
struct _starpu_mp_node *node);
68 size_t _starpu_mic_get_global_mem_size(
int devid);
69 size_t _starpu_mic_get_free_mem_size(
int devid);
71 int _starpu_mic_allocate_memory(
void **addr,
size_t size,
unsigned memory_node);
72 void _starpu_mic_free_memory(
void *addr,
size_t size,
unsigned memory_node);
74 int _starpu_mic_copy_ram_to_mic(
void *src,
unsigned src_node STARPU_ATTRIBUTE_UNUSED,
void *dst,
unsigned dst_node,
size_t size);
75 int _starpu_mic_copy_mic_to_ram(
void *src,
unsigned src_node,
void *dst,
unsigned dst_node STARPU_ATTRIBUTE_UNUSED,
size_t size);
76 int _starpu_mic_copy_ram_to_mic_async(
void *src,
unsigned src_node STARPU_ATTRIBUTE_UNUSED,
void *dst,
unsigned dst_node,
size_t size);
77 int _starpu_mic_copy_mic_to_ram_async(
void *src,
unsigned src_node,
void *dst,
unsigned dst_node STARPU_ATTRIBUTE_UNUSED,
size_t size);
81 void *_starpu_mic_src_worker(
void *arg);
88 int _starpu_mic_copy_data_from_mic_to_cpu(starpu_data_handle_t handle,
void *src_interface,
unsigned src_node,
void *dst_interface,
unsigned dst_node,
struct _starpu_data_request *req);
89 int _starpu_mic_copy_data_from_cpu_to_mic(starpu_data_handle_t handle,
void *src_interface,
unsigned src_node,
void *dst_interface,
unsigned dst_node,
struct _starpu_data_request *req);
91 int _starpu_mic_copy_interface_from_mic_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);
92 int _starpu_mic_copy_interface_from_cpu_to_mic(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);
94 int _starpu_mic_is_direct_access_supported(
unsigned node,
unsigned handling_node);
95 uintptr_t _starpu_mic_malloc_on_node(
unsigned dst_node,
size_t size,
int flags);
96 void _starpu_mic_free_on_node(
unsigned dst_node, uintptr_t addr,
size_t size,
int flags);
Definition: copy_driver.h:127
Definition: copy_driver.h:66
struct _starpu_mp_node * _starpu_mic_nodes[STARPU_MAXMICDEVS]
Definition: node_ops.h:48