17#ifndef __COHERENCY__H__
18#define __COHERENCY__H__
23#include <common/config.h>
36#pragma GCC visibility push(hidden)
38enum _starpu_cache_state
48 starpu_data_handle_t handle;
59 enum _starpu_cache_state
state: 2;
84#define STARPU_UNMAPPED -1
99 struct _starpu_data_request *
request[STARPU_MAXNODES];
104 struct _starpu_data_request *load_request;
113 struct _starpu_mem_chunk *
mc;
116struct _starpu_data_requester_prio_list;
127 struct starpu_task *task;
134 struct starpu_task *task;
139extern int _starpu_has_not_important_data;
141typedef void (*_starpu_data_handle_unregister_hook)(starpu_data_handle_t);
147 struct _starpu_data_requester_prio_list req_list;
168 starpu_pthread_mutex_t busy_mutex;
169 starpu_pthread_cond_t busy_cond;
176 starpu_data_handle_t **active_readonly_children;
182 unsigned sibling_index;
210 unsigned active_ro:1;
217 struct starpu_data_interface_ops *ops;
257 unsigned removed_from_context_hash:1;
274 struct starpu_task *last_sync_task;
284 unsigned long last_submitted_ghost_sync_id;
289 unsigned post_sync_tasks_cnt;
300 struct starpu_codelet *init_cl;
314 starpu_data_handle_t *reduction_tmp_handles;
322 _starpu_memory_stats_t memory_stats;
324 unsigned int mf_node;
329 struct starpu_arbiter *arbiter;
359 enum starpu_data_access_mode mode,
unsigned detached,
360 struct starpu_task *task,
enum starpu_is_prefetch is_prefetch,
unsigned async,
361 void (*callback_func)(
void *),
void *callback_arg,
int prio,
const char *origin);
364 enum starpu_data_access_mode down_to_mode,
367void _starpu_update_data_state(starpu_data_handle_t handle,
369 enum starpu_data_access_mode mode);
373size_t _starpu_data_get_size(starpu_data_handle_t handle);
374size_t _starpu_data_get_alloc_size(starpu_data_handle_t handle);
375starpu_ssize_t _starpu_data_get_max_size(starpu_data_handle_t handle);
377uint32_t _starpu_data_get_footprint(starpu_data_handle_t handle);
379void __starpu_push_task_output(
struct _starpu_job *j);
384STARPU_ATTRIBUTE_WARN_UNUSED_RESULT
390void _starpu_fetch_nowhere_task_input(
struct _starpu_job *j);
393int _starpu_determine_request_path(starpu_data_handle_t handle,
394 int src_node,
int dst_node,
395 enum starpu_data_access_mode mode,
int max_len,
396 unsigned *src_nodes,
unsigned *dst_nodes,
397 unsigned *handling_nodes,
unsigned write_invalidation);
405 enum starpu_data_access_mode mode,
406 struct starpu_task *task,
enum starpu_is_prefetch is_prefetch,
408 void (*callback_func)(
void *),
void *callback_arg,
int prio,
const char *origin);
410void _starpu_init_data_replicate(starpu_data_handle_t handle,
struct _starpu_data_replicate *replicate,
int workerid);
411void _starpu_data_start_reduction_mode(starpu_data_handle_t handle);
412void _starpu_data_end_reduction_mode(starpu_data_handle_t handle,
int priority);
413void _starpu_data_end_reduction_mode_terminate(starpu_data_handle_t handle);
415void _starpu_data_unmap(starpu_data_handle_t handle,
unsigned node);
417void _starpu_data_set_unregister_hook(starpu_data_handle_t handle, _starpu_data_handle_unregister_hook func) STARPU_ATTRIBUTE_VISIBILITY_DEFAULT;
419#pragma GCC visibility pop
unsigned busy_count
Definition coherency.h:165
void * mpi_data
Definition coherency.h:320
struct _starpu_task_wrapper_list * post_sync_tasks
Definition coherency.h:288
unsigned readonly
Definition coherency.h:232
struct starpu_codelet * redux_cl
Definition coherency.h:299
struct _starpu_data_request * _starpu_create_request_to_fetch_data(starpu_data_handle_t handle, struct _starpu_data_replicate *dst_replicate, enum starpu_data_access_mode mode, struct starpu_task *task, enum starpu_is_prefetch is_prefetch, unsigned async, void(*callback_func)(void *), void *callback_arg, int prio, const char *origin)
unsigned nactive_readonly_children
Definition coherency.h:178
struct starpu_codelet * switch_cl
Definition coherency.h:195
struct _starpu_data_requester_prio_list arbitered_req_list
Definition coherency.h:331
_starpu_data_handle_unregister_hook unregister_hook
Definition coherency.h:327
struct _starpu_data_request * request[STARPU_MAXNODES]
Definition coherency.h:99
starpu_pthread_mutex_t unpartition_mutex
Definition coherency.h:186
struct _starpu_data_request * write_invalidation_req
Definition coherency.h:317
unsigned aliases
Definition coherency.h:242
enum _starpu_cache_state state
Definition coherency.h:59
unsigned active
Definition coherency.h:209
enum starpu_data_access_mode current_mode
Definition coherency.h:157
unsigned unlocking_reqs
Definition coherency.h:153
starpu_data_handle_t * siblings
Definition coherency.h:181
unsigned switch_cl_nparts
Definition coherency.h:197
int _starpu_fetch_data_on_node(starpu_data_handle_t handle, int node, struct _starpu_data_replicate *replicate, enum starpu_data_access_mode mode, unsigned detached, struct starpu_task *task, enum starpu_is_prefetch is_prefetch, unsigned async, void(*callback_func)(void *), void *callback_arg, int prio, const char *origin)
struct _starpu_data_state * father_handle
Definition coherency.h:173
starpu_data_handle_t children
Definition coherency.h:190
unsigned automatically_allocated
Definition coherency.h:75
unsigned ooc
Definition coherency.h:228
starpu_pthread_mutex_t sequential_consistency_mutex
Definition coherency.h:267
unsigned nplans
Definition coherency.h:193
struct _starpu_mem_chunk * mc
Definition coherency.h:113
int mapped
Definition coherency.h:87
int refcnt
Definition coherency.h:54
unsigned relaxed_coherency
Definition coherency.h:63
unsigned active_nchildren
Definition coherency.h:175
enum starpu_data_access_mode last_submitted_mode
Definition coherency.h:273
int last_locality
Definition coherency.h:336
STARPU_ATTRIBUTE_WARN_UNUSED_RESULT int _starpu_fetch_task_input(struct starpu_task *task, struct _starpu_job *j, int async)
struct _starpu_data_replicate per_node[STARPU_MAXNODES]
Definition coherency.h:214
struct _starpu_spinlock header_lock
Definition coherency.h:159
starpu_data_handle_t readonly_dup_of
Definition coherency.h:248
unsigned char lazy_unregister
Definition coherency.h:263
unsigned busy_waiting
Definition coherency.h:167
void * sched_data
Definition coherency.h:349
unsigned * active_readonly_nchildren
Definition coherency.h:177
unsigned map_write
Definition coherency.h:82
unsigned partitioned
Definition coherency.h:204
unsigned initialized
Definition coherency.h:254
void * data_interface
Definition coherency.h:51
struct _starpu_data_request * last_request[STARPU_MAXNODES]
Definition coherency.h:101
int home_node
Definition coherency.h:235
unsigned nb_tasks_prefetch
Definition coherency.h:110
struct _starpu_data_state * root_handle
Definition coherency.h:172
unsigned last_submitted_ghost_sync_id_is_valid
Definition coherency.h:283
void _starpu_release_data_on_node(struct _starpu_data_state *state, uint32_t default_wt_mask, enum starpu_data_access_mode down_to_mode, struct _starpu_data_replicate *replicate)
void _starpu_push_task_output(struct _starpu_job *j)
starpu_data_handle_t readonly_dup
Definition coherency.h:245
uint32_t wt_mask
Definition coherency.h:238
unsigned depth
Definition coherency.h:183
unsigned initialized
Definition coherency.h:66
unsigned nsiblings
Definition coherency.h:180
struct _starpu_data_requester_prio_list reduction_req_list
Definition coherency.h:312
void * user_data
Definition coherency.h:345
unsigned refcnt
Definition coherency.h:151
unsigned dimensions
Definition coherency.h:340
unsigned sequential_consistency
Definition coherency.h:230
unsigned reduction_refcnt
Definition coherency.h:307
uint32_t requested
Definition coherency.h:96
unsigned is_not_important
Definition coherency.h:226
unsigned allocated
Definition coherency.h:69
starpu_data_handle_t * active_children
Definition coherency.h:174
uint32_t footprint
Definition coherency.h:220
unsigned part_readonly
Definition coherency.h:206
Definition coherency.h:47
Definition coherency.h:145
Definition coherency.h:119
Definition coherency.h:133
Definition coherency.h:126
Definition starpu_spinlock.h:82