StarPU Handbook - StarPU Installation
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_treestarpu_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_treestarpu_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_taskstarpu_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_taskstarpu_sched_component_pull_task (struct starpu_sched_component *from, struct starpu_sched_component *to)
 
struct starpu_taskstarpu_sched_component_pump_to (struct starpu_sched_component *component, struct starpu_sched_component *to, int *success)
 
struct starpu_taskstarpu_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_componentstarpu_sched_component_worker_get (unsigned sched_ctx, int workerid)
 
struct starpu_sched_componentstarpu_sched_component_worker_new (unsigned sched_ctx, int workerid)
 
struct starpu_sched_componentstarpu_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_taskstarpu_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_componentstarpu_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_componentstarpu_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_componentstarpu_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_componentstarpu_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_componentstarpu_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_componentstarpu_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_componentstarpu_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_componentstarpu_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_componentstarpu_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_componentstarpu_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_componentstarpu_sched_component_best_implementation_create (struct starpu_sched_tree *tree, void *arg) STARPU_ATTRIBUTE_MALLOC
 
Special-purpose Perfmodel_Select Component API
struct starpu_sched_componentstarpu_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_componentstarpu_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_componentstarpu_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_componentstarpu_sched_component_composed_component_create (struct starpu_sched_tree *tree, struct starpu_sched_component_composed_recipe *recipe) STARPU_ATTRIBUTE_MALLOC
 
struct starpu_sched_treestarpu_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_componentstarpu_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)