31#include <common/config.h>
46#pragma GCC visibility push(hidden)
53#define _STARPU_MAY_PERFORM(j, arch) ((j)->task->where & STARPU_##arch)
57 starpu_data_handle_t handle;
58 enum starpu_data_access_mode mode;
90 starpu_pthread_cond_t sync_cond;
147 void *continuation_callback_on_sleep_arg;
149 void (*omp_cleanup_callback)(
void *arg);
150 void *omp_cleanup_callback_arg;
165 unsigned footprint_is_computed:1;
199 struct bound_task *bound_task;
203 starpu_pthread_barrier_t after_work_barrier;
204 unsigned after_work_busy_barrier;
210 struct _starpu_job_multilist_all_submitted all_submitted;
214 int already_turned_into_bubble;
215 unsigned is_bubble:1;
223void _starpu_job_init(
void);
224void _starpu_job_fini(
void);
246void _starpu_job_prepare_for_continuation(
struct _starpu_job *j);
247void _starpu_job_set_omp_cleanup_callback(
struct _starpu_job *j,
248 void (*omp_cleanup_callback)(
void *arg),
void *omp_cleanup_callback_arg);
256unsigned _starpu_enforce_deps_starting_from_task(
struct _starpu_job *j);
262unsigned _starpu_take_deps_and_schedule(
struct _starpu_job *j);
263void _starpu_enforce_deps_notify_job_ready_soon(
struct _starpu_job *j, _starpu_notify_job_start_data *data,
int tag);
282#define _STARPU_JOB_GET_ORDERED_BUFFER_INDEX(job, i) ((job->dyn_ordered_buffers) ? job->dyn_ordered_buffers[i].index : job->ordered_buffers[i].index)
283#define _STARPU_JOB_GET_ORDERED_BUFFER_HANDLE(job, i) ((job->dyn_ordered_buffers) ? job->dyn_ordered_buffers[i].handle : job->ordered_buffers[i].handle)
284#define _STARPU_JOB_GET_ORDERED_BUFFER_MODE(job, i) ((job->dyn_ordered_buffers) ? job->dyn_ordered_buffers[i].mode : job->ordered_buffers[i].mode)
285#define _STARPU_JOB_GET_ORDERED_BUFFER_NODE(job, i) ((job->dyn_ordered_buffers) ? job->dyn_ordered_buffers[i].node : job->ordered_buffers[i].node)
287#define _STARPU_JOB_SET_ORDERED_BUFFER_INDEX(job, __index, i) do { if (job->dyn_ordered_buffers) job->dyn_ordered_buffers[i].index = (__index); else job->ordered_buffers[i].index = (__index);} while(0)
288#define _STARPU_JOB_SET_ORDERED_BUFFER_HANDLE(job, __handle, i) do { if (job->dyn_ordered_buffers) job->dyn_ordered_buffers[i].handle = (__handle); else job->ordered_buffers[i].handle = (__handle);} while(0)
289#define _STARPU_JOB_SET_ORDERED_BUFFER_MODE(job, __mode, i) do { if (job->dyn_ordered_buffers) job->dyn_ordered_buffers[i].mode = __mode; else job->ordered_buffers[i].mode = __mode;} while(0)
290#define _STARPU_JOB_SET_ORDERED_BUFFER_NODE(job, __node, i) do { if (job->dyn_ordered_buffers) job->dyn_ordered_buffers[i].node = __node; else job->ordered_buffers[i].node = __node;} while(0)
292#define _STARPU_JOB_SET_ORDERED_BUFFER(job, buffer, i) do { if (job->dyn_ordered_buffers) job->dyn_ordered_buffers[i] = buffer; else job->ordered_buffers[i] = buffer;} while(0)
293#define _STARPU_JOB_GET_ORDERED_BUFFERS(job) ((job->dyn_ordered_buffers) ? job->dyn_ordered_buffers : &job->ordered_buffers[0])
295#define _STARPU_JOB_GET_DEP_SLOTS(job) (((job)->dyn_dep_slots) ? (job)->dyn_dep_slots : (job)->dep_slots)
297#pragma GCC visibility pop
Definition coherency.h:133
void _starpu_handle_job_submission(struct _starpu_job *j)
void _starpu_job_prepare_for_continuation_ext(struct _starpu_job *j, unsigned continuation_resubmit, void(*continuation_callback_on_sleep)(void *arg), void *continuation_callback_on_sleep_arg)
int _starpu_test_job_termination(struct _starpu_job *j)
unsigned _starpu_reenforce_task_deps_and_schedule(struct _starpu_job *j)
void _starpu_job_destroy(struct _starpu_job *j)
struct starpu_task * _starpu_pop_local_task(struct _starpu_worker *worker)
int _starpu_job_finished(struct _starpu_job *j)
struct _starpu_job * _starpu_job_create(struct starpu_task *task) STARPU_ATTRIBUTE_MALLOC
void _starpu_exclude_task_from_dag(struct starpu_task *task)
unsigned _starpu_enforce_deps_and_schedule(struct _starpu_job *j)
void _starpu_wait_job(struct _starpu_job *j)
int _starpu_push_local_task(struct _starpu_worker *worker, struct starpu_task *task)
int index
Definition jobs.h:62
size_t _starpu_job_get_data_size(struct starpu_perfmodel *model, struct starpu_perfmodel_arch *arch, unsigned nimpl, struct _starpu_job *j)
void(* _starpu_cl_func_t)(void **, void *)
Definition jobs.h:51
void _starpu_handle_job_termination(struct _starpu_job *j)
struct starpu_task * end_rdep
Definition jobs.h:109
struct _starpu_cg_list job_successors
Definition jobs.h:106
int workerid
Definition jobs.h:190
double cumulated_energy_consumed
Definition jobs.h:159
void(* continuation_callback_on_sleep)(void *arg)
Definition jobs.h:146
uint32_t footprint
Definition jobs.h:164
starpu_pthread_barrier_t before_work_barrier
Definition jobs.h:202
struct timespec cumulated_ts
Definition jobs.h:156
int combined_workerid
Definition jobs.h:193
unsigned submitted
Definition jobs.h:123
unsigned nimpl
Definition jobs.h:183
unsigned continuation_resubmit
Definition jobs.h:139
struct _starpu_data_descr ordered_buffers[STARPU_NMAXBUFS]
Definition jobs.h:95
unsigned terminated
Definition jobs.h:130
unsigned reduction_task
Definition jobs.h:180
struct _starpu_job * quick_next
Definition jobs.h:85
unsigned long job_id
Definition jobs.h:76
struct _starpu_tag * tag
Definition jobs.h:102
starpu_pthread_mutex_t sync_mutex
Definition jobs.h:89
unsigned exclude_from_dag
Definition jobs.h:169
starpu_data_handle_t implicit_dep_handle
Definition jobs.h:114
int active_task_alias_count
Definition jobs.h:197
unsigned sequential_consistency
Definition jobs.h:174
unsigned internal
Definition jobs.h:172
struct starpu_task * task
Definition jobs.h:79
int task_size
Definition jobs.h:187
unsigned discontinuous
Definition jobs.h:153
unsigned continuation
Definition jobs.h:134