17#ifndef __CORE_TASK_H__
18#define __CORE_TASK_H__
23#include <common/config.h>
27#pragma GCC visibility push(hidden)
42void _starpu_task_deinit(
void);
43void _starpu_set_current_task(
struct starpu_task *task);
45int _starpu_submit_job(
struct _starpu_job *j,
int nodeps);
47void _starpu_task_declare_deps_array(
struct starpu_task *task,
unsigned ndeps,
struct starpu_task *task_array[],
int check);
49#define _STARPU_JOB_UNSET ((struct _starpu_job *) NULL)
50#define _STARPU_JOB_SETTING ((struct _starpu_job *) 1)
55static inline struct _starpu_job *_starpu_get_job_associated_to_task(
struct starpu_task *
task)
60 if (STARPU_LIKELY(job != _STARPU_JOB_UNSET && job != _STARPU_JOB_SETTING))
73int _starpu_handle_needs_conversion_task(starpu_data_handle_t handle,
76_starpu_handle_needs_conversion_task_for_arch(starpu_data_handle_t handle,
84void _starpu_task_prepare_for_continuation(
void);
86void _starpu_task_set_omp_cleanup_callback(
struct starpu_task *
task,
void (*omp_cleanup_callback)(
void *arg),
87 void *omp_cleanup_callback_arg);
90int _starpu_task_uses_multiformat_handles(
struct starpu_task *
task);
92int _starpu_task_submit_conversion_task(
struct starpu_task *
task,
95void _starpu_task_check_deprecated_fields(
struct starpu_task *
task);
96void _starpu_codelet_check_deprecated_fields(
struct starpu_codelet *cl);
98static inline starpu_cpu_func_t _starpu_task_get_cpu_nth_implementation(
struct starpu_codelet *cl,
unsigned nimpl)
100 return cl->cpu_funcs[
nimpl];
103static inline starpu_cuda_func_t _starpu_task_get_cuda_nth_implementation(
struct starpu_codelet *cl,
unsigned nimpl)
105 return cl->cuda_funcs[
nimpl];
108static inline starpu_hip_func_t _starpu_task_get_hip_nth_implementation(
struct starpu_codelet *cl,
unsigned nimpl)
110 return cl->hip_funcs[
nimpl];
113static inline starpu_opencl_func_t _starpu_task_get_opencl_nth_implementation(
struct starpu_codelet *cl,
unsigned nimpl)
115 return cl->opencl_funcs[
nimpl];
118static inline starpu_max_fpga_func_t _starpu_task_get_fpga_nth_implementation(
struct starpu_codelet *cl,
unsigned nimpl)
120 return cl->max_fpga_funcs[
nimpl];
123static inline const char *_starpu_task_get_cpu_name_nth_implementation(
struct starpu_codelet *cl,
unsigned nimpl)
125 return cl->cpu_funcs_name[
nimpl];
128#define _STARPU_TASK_SET_INTERFACE(task, interface, i) do { if (task->dyn_handles) task->dyn_interfaces[i] = interface; else task->interfaces[i] = interface;} while(0)
129#define _STARPU_TASK_GET_INTERFACES(task) ((task->dyn_handles) ? task->dyn_interfaces : task->interfaces)
131void _starpu_watchdog_init(
void);
132void _starpu_watchdog_shutdown(
void);
134int _starpu_task_wait_for_all_and_return_nb_waited_tasks(
void);
135int _starpu_task_wait_for_all_in_ctx_and_return_nb_waited_tasks(
unsigned sched_ctx);
137#pragma GCC visibility pop
139#ifdef BUILDING_STARPU
141PRIO_LIST_CREATE_TYPE(starpu_task, priority);
147 _starpu_trs_uninitialized = 0,
148 _starpu_trs_initialized = 1,
154 _starpu_trs_epoch_uninitialized = 0,
191 struct _starpu_trs_epoch_list epoch_list;
starpu_node_kind
Definition: starpu_worker.h:44
#define LIST_CREATE_TYPE_NOSTRUCT(ENAME, _prev, _next)
Definition: list.h:190
Definition: starpu_spinlock.h:82
int workerid
Definition: jobs.h:190
void(* continuation_callback_on_sleep)(void *arg)
Definition: jobs.h:146
unsigned nimpl
Definition: jobs.h:183
unsigned continuation_resubmit
Definition: jobs.h:139
struct starpu_task * task
Definition: jobs.h:79
int dummy_data
Definition: task.h:197
int(* do_start_func)(void *buffer, void *arg)
Definition: task.h:201
struct _starpu_spinlock lock
Definition: task.h:190
int flags
Definition: task.h:205
starpu_data_handle_t handle
Definition: task.h:194
void _starpu_task_prepare_for_continuation_ext(unsigned continuation_resubmit, void(*continuation_callback_on_sleep)(void *arg), void *continuation_callback_on_sleep_arg)
void _starpu_task_init(void)
_starpu_trs_epoch_state
Definition: task.h:153
@ _starpu_trs_epoch_terminated
Definition: task.h:166
@ _starpu_trs_epoch_confirmed
Definition: task.h:160
@ _starpu_trs_epoch_cancelled
Definition: task.h:163
@ _starpu_trs_epoch_inactive
Definition: task.h:157
int is_begin
Definition: task.h:177
int _starpu_task_test_termination(struct starpu_task *task)
void _starpu_task_destroy(struct starpu_task *task)
void * do_start_arg
Definition: task.h:184
int is_end
Definition: task.h:180
int do_sync
Definition: task.h:174
_starpu_trs_state
Definition: task.h:146
struct _starpu_job * _starpu_get_job_associated_to_task_slow(struct starpu_task *task, struct _starpu_job *job)
int _starpu_task_submit_internally(struct starpu_task *task)