StarPU Handbook

- Main Page
- Related Pages
- Modules
- Data Structures
- Files

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

## Macros
#define | STARPU_VALUE
#define | STARPU_CALLBACK
#define | STARPU_CALLBACK_WITH_ARG
#define | STARPU_CALLBACK_ARG
#define | STARPU_PRIORITY
#define | STARPU_DATA_ARRAY
#define | STARPU_EXECUTE_ON_WORKER
#define | STARPU_TAG
#define | STARPU_FLOPS
#define | STARPU_SCHED_CTX

## Functions
int | starpu_insert_task (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,...)
struct starpu_task * | starpu_task_build (struct starpu_codelet *cl,...)

## Detailed Description

## Macro Definition Documentation

#define STARPU_VALUE

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

#define STARPU_CALLBACK

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

#define STARPU_CALLBACK_WITH_ARG

this macro is used when calling starpu_insert_task(), 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_insert_task(), 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_insert_task(), and must be followed by a integer defining a priority level

#define STARPU_DATA_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_TAG

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

#define STARPU_FLOPS

this macro is used when calling starpu_insert_task(), 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_insert_task(), 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,
|  |  | ...
| ) |  |

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:

- STARPU_R, STARPU_W, STARPU_RW, STARPU_SCRATCH, STARPU_REDUX an access mode followed by a data handle;
- STARPU_DATA_ARRAY followed by an array of data handles and its number of elements;
- STARPU_EXECUTE_ON_WORKER followed by an integer value specifying the worker on which to execute the task (as specified by starpu_task::execute_on_a_specific_worker)
- the specific values STARPU_VALUE, STARPU_CALLBACK, STARPU_CALLBACK_ARG, STARPU_CALLBACK_WITH_ARG, STARPU_PRIORITY, STARPU_TAG, STARPU_FLOPS, STARPU_SCHED_CTX followed by the appropriated objects as defined elsewhere.

When using STARPU_DATA_ARRAY, the access mode of the data handles is not defined.

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_insert_task().

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

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_insert_task().