123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644 |
- #ifndef __STARPU_DATA_H__
- #define __STARPU_DATA_H__
- #include <starpu.h>
- #ifdef __cplusplus
- extern "C"
- {
- #endif
- struct _starpu_data_state;
- typedef struct _starpu_data_state* starpu_data_handle_t;
- enum starpu_data_access_mode
- {
- STARPU_NONE=0,
- STARPU_R=(1<<0),
- STARPU_W=(1<<1),
- STARPU_RW=(STARPU_R|STARPU_W),
- STARPU_SCRATCH=(1<<2),
- STARPU_REDUX=(1<<3),
- STARPU_COMMUTE=(1<<4),
- STARPU_SSEND=(1<<5),
- STARPU_LOCALITY=(1<<6),
- STARPU_MPI_REDUX=(1<<7),
- STARPU_NOPLAN=(1<<8),
- STARPU_ACCESS_MODE_MAX=(1<<9)
- };
- struct starpu_data_interface_ops;
- void starpu_data_set_name(starpu_data_handle_t handle, const char *name);
- void starpu_data_set_coordinates_array(starpu_data_handle_t handle, unsigned dimensions, int dims[]);
- void starpu_data_set_coordinates(starpu_data_handle_t handle, unsigned dimensions, ...);
- unsigned starpu_data_get_coordinates_array(starpu_data_handle_t handle, unsigned dimensions, int dims[]);
- void starpu_data_unregister(starpu_data_handle_t handle);
- void starpu_data_unregister_no_coherency(starpu_data_handle_t handle);
- void starpu_data_unregister_submit(starpu_data_handle_t handle);
- void starpu_data_invalidate(starpu_data_handle_t handle);
- void starpu_data_invalidate_submit(starpu_data_handle_t handle);
- void starpu_data_advise_as_important(starpu_data_handle_t handle, unsigned is_important);
- #define STARPU_ACQUIRE_NO_NODE -1
- #define STARPU_ACQUIRE_NO_NODE_LOCK_ALL -2
- int starpu_data_acquire(starpu_data_handle_t handle, enum starpu_data_access_mode mode);
- int starpu_data_acquire_on_node(starpu_data_handle_t handle, int node, enum starpu_data_access_mode mode);
- int starpu_data_acquire_cb(starpu_data_handle_t handle, enum starpu_data_access_mode mode, void (*callback)(void *), void *arg);
- int starpu_data_acquire_on_node_cb(starpu_data_handle_t handle, int node, enum starpu_data_access_mode mode, void (*callback)(void *), void *arg);
- int starpu_data_acquire_cb_sequential_consistency(starpu_data_handle_t handle, enum starpu_data_access_mode mode, void (*callback)(void *), void *arg, int sequential_consistency);
- int starpu_data_acquire_on_node_cb_sequential_consistency(starpu_data_handle_t handle, int node, enum starpu_data_access_mode mode, void (*callback)(void *), void *arg, int sequential_consistency);
- int starpu_data_acquire_on_node_cb_sequential_consistency_quick(starpu_data_handle_t handle, int node, enum starpu_data_access_mode mode, void (*callback)(void *), void *arg, int sequential_consistency, int quick);
- int starpu_data_acquire_on_node_cb_sequential_consistency_sync_jobids(starpu_data_handle_t handle, int node, enum starpu_data_access_mode mode, void (*callback_acquired)(void *arg, int *node, enum starpu_data_access_mode mode), void (*callback)(void *arg), void *arg, int sequential_consistency, int quick, long *pre_sync_jobid, long *post_sync_jobid, int prio);
- int starpu_data_acquire_try(starpu_data_handle_t handle, enum starpu_data_access_mode mode);
- int starpu_data_acquire_on_node_try(starpu_data_handle_t handle, int node, enum starpu_data_access_mode mode);
- #ifdef __GCC__
- # define STARPU_DATA_ACQUIRE_CB(handle, mode, code) do \
- { \ \
- void callback(void *arg) \
- { \
- code; \
- starpu_data_release(handle); \
- } \
- starpu_data_acquire_cb(handle, mode, callback, NULL); \
- } \
- while(0)
- #endif
- void starpu_data_release(starpu_data_handle_t handle);
- void starpu_data_release_on_node(starpu_data_handle_t handle, int node);
- void starpu_data_release_to(starpu_data_handle_t handle, enum starpu_data_access_mode down_to_mode);
- void starpu_data_release_to_on_node(starpu_data_handle_t handle, enum starpu_data_access_mode down_to_mode, int node);
- typedef struct starpu_arbiter *starpu_arbiter_t;
- starpu_arbiter_t starpu_arbiter_create(void) STARPU_ATTRIBUTE_MALLOC;
- void starpu_data_assign_arbiter(starpu_data_handle_t handle, starpu_arbiter_t arbiter);
- void starpu_arbiter_destroy(starpu_arbiter_t arbiter);
- int starpu_data_request_allocation(starpu_data_handle_t handle, unsigned node);
- enum starpu_is_prefetch
- {
-
- STARPU_FETCH = 0,
-
- STARPU_TASK_PREFETCH = 1,
-
- STARPU_PREFETCH = 2,
-
- STARPU_IDLEFETCH = 3,
- STARPU_NFETCH
- };
- int starpu_data_fetch_on_node(starpu_data_handle_t handle, unsigned node, unsigned async);
- int starpu_data_prefetch_on_node(starpu_data_handle_t handle, unsigned node, unsigned async);
- int starpu_data_prefetch_on_node_prio(starpu_data_handle_t handle, unsigned node, unsigned async, int prio);
- int starpu_data_idle_prefetch_on_node(starpu_data_handle_t handle, unsigned node, unsigned async);
- int starpu_data_idle_prefetch_on_node_prio(starpu_data_handle_t handle, unsigned node, unsigned async, int prio);
- unsigned starpu_data_is_on_node(starpu_data_handle_t handle, unsigned node);
- void starpu_data_wont_use(starpu_data_handle_t handle);
- int starpu_data_evict_from_node(starpu_data_handle_t handle, unsigned node);
- void starpu_data_set_wt_mask(starpu_data_handle_t handle, uint32_t wt_mask);
- void starpu_data_set_sequential_consistency_flag(starpu_data_handle_t handle, unsigned flag);
- unsigned starpu_data_get_sequential_consistency_flag(starpu_data_handle_t handle);
- unsigned starpu_data_get_default_sequential_consistency_flag(void);
- void starpu_data_set_default_sequential_consistency_flag(unsigned flag);
- void starpu_data_set_ooc_flag(starpu_data_handle_t handle, unsigned flag);
- unsigned starpu_data_get_ooc_flag(starpu_data_handle_t handle);
- void starpu_data_query_status2(starpu_data_handle_t handle, int memory_node, int *is_allocated, int *is_valid, int *is_loading, int *is_requested);
- void starpu_data_query_status(starpu_data_handle_t handle, int memory_node, int *is_allocated, int *is_valid, int *is_requested);
- struct starpu_codelet;
- void starpu_data_set_reduction_methods(starpu_data_handle_t handle, struct starpu_codelet *redux_cl, struct starpu_codelet *init_cl);
- struct starpu_data_interface_ops* starpu_data_get_interface_ops(starpu_data_handle_t handle);
- unsigned starpu_data_test_if_allocated_on_node(starpu_data_handle_t handle, unsigned memory_node);
- void starpu_memchunk_tidy(unsigned memory_node);
- void starpu_data_set_user_data(starpu_data_handle_t handle, void* user_data);
- void *starpu_data_get_user_data(starpu_data_handle_t handle);
- void starpu_data_set_sched_data(starpu_data_handle_t handle, void* sched_data);
- void *starpu_data_get_sched_data(starpu_data_handle_t handle);
- int starpu_data_can_evict(starpu_data_handle_t handle, unsigned node, enum starpu_is_prefetch is_prefetch);
- #ifdef __cplusplus
- }
- #endif
- #endif /* __STARPU_DATA_H__ */
|