StarPU Handbook
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Insert_Task

Macros

#define STARPU_VALUE
#define STARPU_CL_ARGS
#define STARPU_CALLBACK
#define STARPU_CALLBACK_WITH_ARG
#define STARPU_CALLBACK_ARG
#define STARPU_PRIORITY
#define STARPU_DATA_ARRAY
#define STARPU_DATA_MODE_ARRAY
#define STARPU_EXECUTE_ON_WORKER
#define STARPU_WORKER_ORDER
#define STARPU_TAG
#define STARPU_TAG_ONLY
#define STARPU_NAME
#define STARPU_FLOPS
#define STARPU_SCHED_CTX

Functions

int starpu_insert_task (struct starpu_codelet *cl,...)
int starpu_task_insert (struct starpu_codelet *cl,...)
void starpu_codelet_pack_args (void **arg_buffer, size_t *arg_buffer_size,...)
void starpu_codelet_unpack_args (void *cl_arg,...)
void starpu_codelet_unpack_args_and_copyleft (void *cl_arg, void *buffer, size_t buffer_size,...)
struct starpu_taskstarpu_task_build (struct starpu_codelet *cl,...)

Detailed Description

Macro Definition Documentation

#define STARPU_VALUE

this macro is used when calling starpu_task_insert(), and must be followed by a pointer to a constant value and the size of the constant

#define STARPU_CL_ARGS

this macro is used when calling starpu_task_insert(), and must be followed by a memory buffer containing the arguments to be given to the task, and by the size of the arguments. The memory buffer should be the result of a previous call to starpu_codelet_pack_args(), and will be freed (i.e. starpu_task::cl_arg_free will be set to 1)

#define STARPU_CALLBACK

this macro is used when calling starpu_task_insert(), and must be followed by a pointer to a callback function

#define STARPU_CALLBACK_WITH_ARG

this macro is used when calling starpu_task_insert(), and must be followed by two pointers: one to a callback function, and the other to be given as an argument to the callback function; this is equivalent to using both STARPU_CALLBACK and STARPU_CALLBACK_WITH_ARG.

#define STARPU_CALLBACK_ARG

this macro is used when calling starpu_task_insert(), and must be followed by a pointer to be given as an argument to the callback function

#define STARPU_PRIORITY

this macro is used when calling starpu_task_insert(), and must be followed by a integer defining a priority level

#define STARPU_DATA_ARRAY

TODO

#define STARPU_DATA_MODE_ARRAY

TODO

#define STARPU_EXECUTE_ON_WORKER

this macro is used when calling starpu_task_insert(), and must be followed by an integer value specifying the worker on which to execute the task (as specified by starpu_task::execute_on_a_specific_worker)

#define STARPU_WORKER_ORDER

this macro is used when calling starpu_task_insert(), and must be followed by an integer value specifying the worker order in which to execute the tasks (as specified by starpu_task::workerorder)

#define STARPU_TAG

this macro is used when calling starpu_task_insert(), and must be followed by a tag.

#define STARPU_TAG_ONLY

this macro is used when calling starpu_task_insert(), and must be followed by a tag. It sets starpu_task::tag_id, but leaves starpu_task::use_tag as 0.

#define STARPU_NAME

this macro is used when calling starpu_task_insert(), and must be followed by a char *. It sets starpu_task::name to it.

#define STARPU_FLOPS

this macro is used when calling starpu_task_insert(), and must be followed by an amount of floating point operations, as a double. Users MUST explicitly cast into double, otherwise parameter passing will not work.

#define STARPU_SCHED_CTX

this macro is used when calling starpu_task_insert(), and must be followed by the id of the scheduling context to which we want to submit the task.

Function Documentation

int starpu_insert_task ( struct starpu_codelet cl,
  ... 
)

This function does the same as the function starpu_task_insert(). It has been kept to avoid breaking old codes.

int starpu_task_insert ( struct starpu_codelet cl,
  ... 
)

Create and submit a task corresponding to cl with the following arguments. The argument list must be zero-terminated.

The arguments following the codelet can be of the following types:

When using STARPU_DATA_ARRAY, the access mode of the data handles is not defined, it will be taken from the codelet starpu_codelet::modes or starpu_codelet::dyn_modes field. One should use STARPU_DATA_MODE_ARRAY to define the data handles along with the access modes.

Parameters to be passed to the codelet implementation are defined through the type STARPU_VALUE. The function starpu_codelet_unpack_args() must be called within the codelet implementation to retrieve them.

void starpu_codelet_pack_args ( void **  arg_buffer,
size_t *  arg_buffer_size,
  ... 
)

Pack arguments of type STARPU_VALUE into a buffer which can be given to a codelet and later unpacked with the function starpu_codelet_unpack_args().

void starpu_codelet_unpack_args ( void *  cl_arg,
  ... 
)

Retrieve the arguments of type STARPU_VALUE associated to a task automatically created using the function starpu_task_insert(). If any parameter's value is 0, unpacking will stop there and ignore the remaining parameters.

void starpu_codelet_unpack_args_and_copyleft ( void *  cl_arg,
void *  buffer,
size_t  buffer_size,
  ... 
)

Similar to starpu_codelet_unpack_args(), but if any parameter is 0, copy the part of cl_arg that has not been read in buffer which can then be used in a later call to one of the unpack functions.

struct starpu_task * starpu_task_build ( struct starpu_codelet cl,
  ... 
)
read

Create a task corresponding to cl with the following arguments. The argument list must be zero-terminated. The arguments following the codelet are the same as the ones for the function starpu_task_insert(). If some arguments of type STARPU_VALUE are given, the parameter starpu_task::cl_arg_free will be set to 1.