StarPU Handbook - StarPU Basics
|
Typedefs | |
typedef struct _starpu_task_bundle * | starpu_task_bundle_t |
Functions | |
void | starpu_task_bundle_create (starpu_task_bundle_t *bundle) |
int | starpu_task_bundle_insert (starpu_task_bundle_t bundle, struct starpu_task *task) |
int | starpu_task_bundle_remove (starpu_task_bundle_t bundle, struct starpu_task *task) |
void | starpu_task_bundle_close (starpu_task_bundle_t bundle) |
double | starpu_task_bundle_expected_length (starpu_task_bundle_t bundle, struct starpu_perfmodel_arch *arch, unsigned nimpl) |
double | starpu_task_bundle_expected_data_transfer_time (starpu_task_bundle_t bundle, unsigned memory_node) |
double | starpu_task_bundle_expected_energy (starpu_task_bundle_t bundle, struct starpu_perfmodel_arch *arch, unsigned nimpl) |
typedef struct _starpu_task_bundle* starpu_task_bundle_t |
Opaque structure describing a list of tasks that should be scheduled on the same worker whenever it’s possible. It must be considered as a hint given to the scheduler as there is no guarantee that they will be executed on the same worker.
void starpu_task_bundle_create | ( | starpu_task_bundle_t * | bundle | ) |
Factory function creating and initializing bundle
, when the call returns, memory needed is allocated and bundle
is ready to use.
int starpu_task_bundle_insert | ( | starpu_task_bundle_t | bundle, |
struct starpu_task * | task | ||
) |
Insert task
in bundle
. Until task
is removed from bundle
its expected length and data transfer time will be considered along those of the other tasks of bundle. This function must not be called if bundle
is already closed and/or task
is already submitted. On success, it returns 0. There are two cases of error : if bundle
is already closed it returns -EPERM
, if task
was already submitted it returns -EINVAL
.
int starpu_task_bundle_remove | ( | starpu_task_bundle_t | bundle, |
struct starpu_task * | task | ||
) |
Remove task
from bundle
. Of course task
must have been previously inserted in bundle
. This function must not be called if bundle
is already closed and/or task
is already submitted. Doing so would result in undefined behaviour. On success, it returns 0. If bundle
is already closed it returns -ENOENT
.
void starpu_task_bundle_close | ( | starpu_task_bundle_t | bundle | ) |
Inform the runtime that the user will not modify bundle
anymore, it means no more inserting or removing task. Thus the runtime can destroy it when possible.
double starpu_task_bundle_expected_length | ( | starpu_task_bundle_t | bundle, |
struct starpu_perfmodel_arch * | arch, | ||
unsigned | nimpl | ||
) |
Return the expected duration of bundle
in micro-seconds.
double starpu_task_bundle_expected_data_transfer_time | ( | starpu_task_bundle_t | bundle, |
unsigned | memory_node | ||
) |
Return the time (in micro-seconds) expected to transfer all data used within bundle
.
double starpu_task_bundle_expected_energy | ( | starpu_task_bundle_t | bundle, |
struct starpu_perfmodel_arch * | arch, | ||
unsigned | nimpl | ||
) |
Return the expected energy consumption of bundle
in J.