123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589 |
- #ifndef __STARPU_TASK_UTIL_H__
- #define __STARPU_TASK_UTIL_H__
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <assert.h>
- #include <starpu.h>
- #ifdef __cplusplus
- extern "C"
- {
- #endif
- #define STARPU_MODE_SHIFT 17
- #define STARPU_VALUE (1<<STARPU_MODE_SHIFT)
- #define STARPU_CALLBACK (2<<STARPU_MODE_SHIFT)
- #define STARPU_CALLBACK_WITH_ARG (3<<STARPU_MODE_SHIFT)
- #define STARPU_CALLBACK_ARG (4<<STARPU_MODE_SHIFT)
- #define STARPU_PRIORITY (5<<STARPU_MODE_SHIFT)
- #define STARPU_EXECUTE_ON_NODE (6<<STARPU_MODE_SHIFT)
- #define STARPU_EXECUTE_ON_DATA (7<<STARPU_MODE_SHIFT)
- #define STARPU_DATA_ARRAY (8<<STARPU_MODE_SHIFT)
- #define STARPU_DATA_MODE_ARRAY (9<<STARPU_MODE_SHIFT)
- #define STARPU_TAG (10<<STARPU_MODE_SHIFT)
- #define STARPU_HYPERVISOR_TAG (11<<STARPU_MODE_SHIFT)
- #define STARPU_FLOPS (12<<STARPU_MODE_SHIFT)
- #define STARPU_SCHED_CTX (13<<STARPU_MODE_SHIFT)
- #define STARPU_PROLOGUE_CALLBACK (14<<STARPU_MODE_SHIFT)
- #define STARPU_PROLOGUE_CALLBACK_ARG (15<<STARPU_MODE_SHIFT)
- #define STARPU_PROLOGUE_CALLBACK_POP (16<<STARPU_MODE_SHIFT)
- #define STARPU_PROLOGUE_CALLBACK_POP_ARG (17<<STARPU_MODE_SHIFT)
- #define STARPU_EXECUTE_ON_WORKER (18<<STARPU_MODE_SHIFT)
- #define STARPU_EXECUTE_WHERE (19<<STARPU_MODE_SHIFT)
- #define STARPU_TAG_ONLY (20<<STARPU_MODE_SHIFT)
- #define STARPU_POSSIBLY_PARALLEL (21<<STARPU_MODE_SHIFT)
- #define STARPU_WORKER_ORDER (22<<STARPU_MODE_SHIFT)
- #define STARPU_NODE_SELECTION_POLICY (23<<STARPU_MODE_SHIFT)
- #define STARPU_NAME (24<<STARPU_MODE_SHIFT)
- #define STARPU_CL_ARGS (25<<STARPU_MODE_SHIFT)
- #define STARPU_CL_ARGS_NFREE (26<<STARPU_MODE_SHIFT)
- #define STARPU_TASK_DEPS_ARRAY (27<<STARPU_MODE_SHIFT)
- #define STARPU_TASK_COLOR (28<<STARPU_MODE_SHIFT)
- #define STARPU_HANDLES_SEQUENTIAL_CONSISTENCY (29<<STARPU_MODE_SHIFT)
- #define STARPU_TASK_SYNCHRONOUS (30<<STARPU_MODE_SHIFT)
- #define STARPU_TASK_END_DEPS_ARRAY (31<<STARPU_MODE_SHIFT)
- #define STARPU_TASK_END_DEP (32<<STARPU_MODE_SHIFT)
- #define STARPU_TASK_WORKERIDS (33<<STARPU_MODE_SHIFT)
- #define STARPU_SEQUENTIAL_CONSISTENCY (34<<STARPU_MODE_SHIFT)
- #define STARPU_TASK_PROFILING_INFO (35<<STARPU_MODE_SHIFT)
- #define STARPU_TASK_NO_SUBMITORDER (36<<STARPU_MODE_SHIFT)
- #define STARPU_CALLBACK_ARG_NFREE (37<<STARPU_MODE_SHIFT)
- #define STARPU_CALLBACK_WITH_ARG_NFREE (38<<STARPU_MODE_SHIFT)
- #define STARPU_PROLOGUE_CALLBACK_ARG_NFREE (39<<STARPU_MODE_SHIFT)
- #define STARPU_PROLOGUE_CALLBACK_POP_ARG_NFREE (40<<STARPU_MODE_SHIFT)
- #define STARPU_TASK_SCHED_DATA (41<<STARPU_MODE_SHIFT)
- #define STARPU_TASK_FILE (42<<STARPU_MODE_SHIFT)
- #define STARPU_TASK_LINE (43<<STARPU_MODE_SHIFT)
- #define STARPU_EPILOGUE_CALLBACK (44<<STARPU_MODE_SHIFT)
- #define STARPU_EPILOGUE_CALLBACK_ARG (45<<STARPU_MODE_SHIFT)
- #define STARPU_SHIFTED_MODE_MAX (46<<STARPU_MODE_SHIFT)
- int starpu_task_set(struct starpu_task *task, struct starpu_codelet *cl, ...);
- #ifdef STARPU_USE_FXT
- #define starpu_task_set(task, cl, ...) \
- starpu_task_set((task), (cl), STARPU_TASK_FILE, __FILE__, STARPU_TASK_LINE, __LINE__, ##__VA_ARGS__)
- #endif
- struct starpu_task *starpu_task_build(struct starpu_codelet *cl, ...);
- #ifdef STARPU_USE_FXT
- #define starpu_task_build(cl, ...) \
- starpu_task_build((cl), STARPU_TASK_FILE, __FILE__, STARPU_TASK_LINE, __LINE__, ##__VA_ARGS__)
- #endif
- int starpu_task_insert(struct starpu_codelet *cl, ...);
- #ifdef STARPU_USE_FXT
- #define starpu_task_insert(cl, ...) \
- starpu_task_insert((cl), STARPU_TASK_FILE, __FILE__, STARPU_TASK_LINE, __LINE__, ##__VA_ARGS__)
- #endif
- int starpu_insert_task(struct starpu_codelet *cl, ...);
- #ifdef STARPU_USE_FXT
- #define starpu_insert_task(cl, ...) \
- starpu_insert_task((cl), STARPU_TASK_FILE, __FILE__, STARPU_TASK_LINE, __LINE__, ##__VA_ARGS__)
- #endif
- void starpu_task_insert_data_make_room(struct starpu_codelet *cl, struct starpu_task *task, int *allocated_buffers, int current_buffer, int room);
- void starpu_task_insert_data_process_arg(struct starpu_codelet *cl, struct starpu_task *task, int *allocated_buffers, int *current_buffer, int arg_type, starpu_data_handle_t handle);
- void starpu_task_insert_data_process_array_arg(struct starpu_codelet *cl, struct starpu_task *task, int *allocated_buffers, int *current_buffer, int nb_handles, starpu_data_handle_t *handles);
- void starpu_task_insert_data_process_mode_array_arg(struct starpu_codelet *cl, struct starpu_task *task, int *allocated_buffers, int *current_buffer, int nb_descrs, struct starpu_data_descr *descrs);
- void starpu_codelet_pack_args(void **arg_buffer, size_t *arg_buffer_size, ...);
- struct starpu_codelet_pack_arg_data
- {
- char *arg_buffer;
- size_t arg_buffer_size;
- size_t current_offset;
- int nargs;
- };
- void starpu_codelet_pack_arg_init(struct starpu_codelet_pack_arg_data *state);
- void starpu_codelet_pack_arg(struct starpu_codelet_pack_arg_data *state, const void *ptr, size_t ptr_size);
- void starpu_codelet_pack_arg_fini(struct starpu_codelet_pack_arg_data *state, void **cl_arg, size_t *cl_arg_size);
- void starpu_codelet_unpack_args(void *cl_arg, ...);
- void starpu_codelet_unpack_arg_init(struct starpu_codelet_pack_arg_data *state, void *cl_arg, size_t cl_arg_size);
- void starpu_codelet_unpack_arg(struct starpu_codelet_pack_arg_data *state, void *ptr, size_t size);
- void starpu_codelet_dup_arg(struct starpu_codelet_pack_arg_data *state, void **ptr, size_t *size);
- void starpu_codelet_pick_arg(struct starpu_codelet_pack_arg_data *state, void **ptr, size_t *size);
- void starpu_codelet_unpack_arg_fini(struct starpu_codelet_pack_arg_data *state);
- void starpu_codelet_unpack_discard_arg(struct starpu_codelet_pack_arg_data *state);
- void starpu_codelet_unpack_args_and_copyleft(void *cl_arg, void *buffer, size_t buffer_size, ...);
- #ifdef __cplusplus
- }
- #endif
- #endif /* __STARPU_TASK_UTIL_H__ */
|