Loading...
Searching...
No Matches
starpu_sched_component.h File Reference
`#include <starpu.h>`
`#include <hwloc.h>`

Go to the source code of this file.

## Data Structures

struct | starpu_sched_component
struct | starpu_sched_tree
struct | starpu_sched_component_fifo_data
struct | starpu_sched_component_prio_data
struct | starpu_sched_component_mct_data
struct | starpu_sched_component_heteroprio_data
struct | starpu_sched_component_perfmodel_select_data
struct | starpu_sched_component_specs

## Macros

#define | STARPU_SCHED_COMPONENT_IS_HOMOGENEOUS(component)
#define | STARPU_SCHED_COMPONENT_IS_SINGLE_MEMORY_NODE(component)
#define | STARPU_COMPONENT_MUTEX_LOCK(m)
#define | STARPU_COMPONENT_MUTEX_TRYLOCK(m)
#define | STARPU_COMPONENT_MUTEX_UNLOCK(m)

## Enumerations

enum | starpu_sched_component_properties { STARPU_SCHED_COMPONENT_HOMOGENEOUS , STARPU_SCHED_COMPONENT_SINGLE_MEMORY_NODE }

## Functions

Scheduling Tree API
struct starpu_sched_tree * | starpu_sched_tree_create (unsigned sched_ctx_id) STARPU_ATTRIBUTE_MALLOC
void | starpu_sched_tree_destroy (struct starpu_sched_tree *tree)
void | starpu_sched_tree_deinitialize (unsigned sched_ctx_id)
struct starpu_sched_tree * | starpu_sched_tree_get (unsigned sched_ctx_id)
void | starpu_sched_tree_update_workers (struct starpu_sched_tree *t)
void | starpu_sched_tree_update_workers_in_ctx (struct starpu_sched_tree *t)
int | starpu_sched_tree_push_task (struct starpu_task *task)
struct starpu_task * | starpu_sched_tree_pop_task (unsigned sched_ctx)
int | starpu_sched_component_push_task (struct starpu_sched_component *from, struct starpu_sched_component *to, struct starpu_task *task)
struct starpu_task * | starpu_sched_component_pull_task (struct starpu_sched_component *from, struct starpu_sched_component *to)
struct starpu_task * | starpu_sched_component_pump_to (struct starpu_sched_component *component, struct starpu_sched_component *to, int *success)
struct starpu_task * | starpu_sched_component_pump_downstream (struct starpu_sched_component *component, int *success)
int | starpu_sched_component_send_can_push_to_parents (struct starpu_sched_component *component)
void | starpu_sched_tree_add_workers (unsigned sched_ctx_id, int *workerids, unsigned nworkers)
void | starpu_sched_tree_remove_workers (unsigned sched_ctx_id, int *workerids, unsigned nworkers)
void | starpu_sched_tree_do_schedule (unsigned sched_ctx_id)
void | starpu_sched_component_connect (struct starpu_sched_component *parent, struct starpu_sched_component *child)
Worker Component API
struct starpu_sched_component * | starpu_sched_component_worker_get (unsigned sched_ctx, int workerid)
struct starpu_sched_component * | starpu_sched_component_worker_new (unsigned sched_ctx, int workerid)
struct starpu_sched_component * | starpu_sched_component_parallel_worker_create (struct starpu_sched_tree *tree, unsigned nworkers, unsigned *workers)
int | starpu_sched_component_worker_get_workerid (struct starpu_sched_component *worker_component)
int | starpu_sched_component_is_worker (struct starpu_sched_component *component)
int | starpu_sched_component_is_simple_worker (struct starpu_sched_component *component)
int | starpu_sched_component_is_combined_worker (struct starpu_sched_component *component)
void | starpu_sched_component_worker_pre_exec_hook (struct starpu_task *task, unsigned sched_ctx_id)
void | starpu_sched_component_worker_post_exec_hook (struct starpu_task *task, unsigned sched_ctx_id)
Flow-control Fifo Component API
These can be used as methods of components. Note: they are not to be called directly, one should really call the methods of the components.
struct starpu_task * | starpu_sched_component_parents_pull_task (struct starpu_sched_component *component, struct starpu_sched_component *to)
int | starpu_sched_component_can_push (struct starpu_sched_component *component, struct starpu_sched_component *to)
int | starpu_sched_component_can_pull (struct starpu_sched_component *component)
int | starpu_sched_component_can_pull_all (struct starpu_sched_component *component)
double | starpu_sched_component_estimated_load (struct starpu_sched_component *component)
double | starpu_sched_component_estimated_end_min (struct starpu_sched_component *component)
double | starpu_sched_component_estimated_end_min_add (struct starpu_sched_component *component, double exp_len)
double | starpu_sched_component_estimated_end_average (struct starpu_sched_component *component)
struct starpu_sched_component * | starpu_sched_component_fifo_create (struct starpu_sched_tree *tree, struct starpu_sched_component_fifo_data *fifo_data) STARPU_ATTRIBUTE_MALLOC
int | starpu_sched_component_is_fifo (struct starpu_sched_component *component)
Flow-control Prio Component API
struct starpu_sched_component * | starpu_sched_component_prio_create (struct starpu_sched_tree *tree, struct starpu_sched_component_prio_data *prio_data) STARPU_ATTRIBUTE_MALLOC
int | starpu_sched_component_is_prio (struct starpu_sched_component *component)
Resource-mapping Work-Stealing Component API
struct starpu_sched_component * | starpu_sched_component_work_stealing_create (struct starpu_sched_tree *tree, void *arg) STARPU_ATTRIBUTE_MALLOC
int | starpu_sched_component_is_work_stealing (struct starpu_sched_component *component)
int | starpu_sched_tree_work_stealing_push_task (struct starpu_task *task)
Resource-mapping Random Component API
struct starpu_sched_component * | starpu_sched_component_random_create (struct starpu_sched_tree *tree, void *arg) STARPU_ATTRIBUTE_MALLOC
int | starpu_sched_component_is_random (struct starpu_sched_component *)
Resource-mapping Eager Component API
struct starpu_sched_component * | starpu_sched_component_eager_create (struct starpu_sched_tree *tree, void *arg) STARPU_ATTRIBUTE_MALLOC
int | starpu_sched_component_is_eager (struct starpu_sched_component *)
Resource-mapping Eager Prio Component API
struct starpu_sched_component * | starpu_sched_component_eager_prio_create (struct starpu_sched_tree *tree, void *arg) STARPU_ATTRIBUTE_MALLOC
int | starpu_sched_component_is_eager_prio (struct starpu_sched_component *)
Resource-mapping Eager-Calibration Component API
struct starpu_sched_component * | starpu_sched_component_eager_calibration_create (struct starpu_sched_tree *tree, void *arg) STARPU_ATTRIBUTE_MALLOC
int | starpu_sched_component_is_eager_calibration (struct starpu_sched_component *)
Resource-mapping MCT Component API
struct starpu_sched_component * | starpu_sched_component_mct_create (struct starpu_sched_tree *tree, struct starpu_sched_component_mct_data *mct_data) STARPU_ATTRIBUTE_MALLOC
int | starpu_sched_component_is_mct (struct starpu_sched_component *component)
Resource-mapping Heft Component API
struct starpu_sched_component * | starpu_sched_component_heft_create (struct starpu_sched_tree *tree, struct starpu_sched_component_mct_data *mct_data) STARPU_ATTRIBUTE_MALLOC
int | starpu_sched_component_is_heft (struct starpu_sched_component *component)
Resource-mapping Heteroprio Component API
struct starpu_sched_component * | starpu_sched_component_heteroprio_create (struct starpu_sched_tree *tree, struct starpu_sched_component_heteroprio_data *params) STARPU_ATTRIBUTE_MALLOC
int | starpu_sched_component_is_heteroprio (struct starpu_sched_component *component)
Special-purpose Best_Implementation Component API
struct starpu_sched_component * | starpu_sched_component_best_implementation_create (struct starpu_sched_tree *tree, void *arg) STARPU_ATTRIBUTE_MALLOC
Special-purpose Perfmodel_Select Component API
struct starpu_sched_component * | starpu_sched_component_perfmodel_select_create (struct starpu_sched_tree *tree, struct starpu_sched_component_perfmodel_select_data *perfmodel_select_data) STARPU_ATTRIBUTE_MALLOC
int | starpu_sched_component_is_perfmodel_select (struct starpu_sched_component *component)
Staged pull Component API
struct starpu_sched_component * | starpu_sched_component_stage_create (struct starpu_sched_tree *tree, void *arg) STARPU_ATTRIBUTE_MALLOC
int | starpu_sched_component_is_stage (struct starpu_sched_component *component)
User-choice push Component API
struct starpu_sched_component * | starpu_sched_component_userchoice_create (struct starpu_sched_tree *tree, void *arg) STARPU_ATTRIBUTE_MALLOC
int | starpu_sched_component_is_userchoice (struct starpu_sched_component *component)
Recipe Component API
struct starpu_sched_component_composed_recipe * | starpu_sched_component_composed_recipe_create (void) STARPU_ATTRIBUTE_MALLOC
struct starpu_sched_component_composed_recipe * | starpu_sched_component_composed_recipe_create_singleton (struct starpu_sched_component *(*create_component)(struct starpu_sched_tree *tree, void *arg), void *arg) STARPU_ATTRIBUTE_MALLOC
void | starpu_sched_component_composed_recipe_add (struct starpu_sched_component_composed_recipe *recipe, struct starpu_sched_component *(*create_component)(struct starpu_sched_tree *tree, void *arg), void *arg)
void | starpu_sched_component_composed_recipe_destroy (struct starpu_sched_component_composed_recipe *)
struct starpu_sched_component * | starpu_sched_component_composed_component_create (struct starpu_sched_tree *tree, struct starpu_sched_component_composed_recipe *recipe) STARPU_ATTRIBUTE_MALLOC
struct starpu_sched_tree * | starpu_sched_component_make_scheduler (unsigned sched_ctx_id, struct starpu_sched_component_specs s)

## Basic API

#define | STARPU_SCHED_SIMPLE_DECIDE_MASK
#define | STARPU_SCHED_SIMPLE_DECIDE_WORKERS
#define | STARPU_SCHED_SIMPLE_DECIDE_MEMNODES
#define | STARPU_SCHED_SIMPLE_DECIDE_ARCHS
#define | STARPU_SCHED_SIMPLE_DECIDE_ALWAYS
#define | STARPU_SCHED_SIMPLE_PERFMODEL
#define | STARPU_SCHED_SIMPLE_IMPL
#define | STARPU_SCHED_SIMPLE_FIFO_ABOVE
#define | STARPU_SCHED_SIMPLE_FIFO_ABOVE_PRIO
#define | STARPU_SCHED_SIMPLE_FIFOS_BELOW
#define | STARPU_SCHED_SIMPLE_FIFOS_BELOW_PRIO
#define | STARPU_SCHED_SIMPLE_FIFOS_BELOW_READY
#define | STARPU_SCHED_SIMPLE_FIFOS_BELOW_NOLIMIT
#define | STARPU_SCHED_SIMPLE_WS_BELOW
#define | STARPU_SCHED_SIMPLE_COMBINED_WORKERS
#define | STARPU_SCHED_SIMPLE_FIFOS_BELOW_EXP
#define | STARPU_SCHED_SIMPLE_PRE_DECISION
void | starpu_sched_component_initialize_simple_scheduler (starpu_sched_component_create_t create_decision_component, void *data, unsigned flags, unsigned sched_ctx_id)
void | starpu_sched_component_initialize_simple_schedulers (unsigned sched_ctx_id, unsigned ndecisions,...)

## Generic Scheduling Component API

typedef struct starpu_sched_component *(* | starpu_sched_component_create_t) (struct starpu_sched_tree *tree, void *data)
struct starpu_sched_component * | starpu_sched_component_create (struct starpu_sched_tree *tree, const char *name) STARPU_ATTRIBUTE_MALLOC
void | starpu_sched_component_destroy (struct starpu_sched_component *component)
void | starpu_sched_component_destroy_rec (struct starpu_sched_component *component)
void | starpu_sched_component_add_child (struct starpu_sched_component *component, struct starpu_sched_component *child)
int | starpu_sched_component_can_execute_task (struct starpu_sched_component *component, struct starpu_task *task)
int | starpu_sched_component_execute_preds (struct starpu_sched_component *component, struct starpu_task *task, double *length)
double | starpu_sched_component_transfer_length (struct starpu_sched_component *component, struct starpu_task *task)
void | starpu_sched_component_prefetch_on_node (struct starpu_sched_component *component, struct starpu_task *task)