StarPU Handbook
starpu_sched_component.h
Go to the documentation of this file.
1 /* StarPU --- Runtime system for heterogeneous multicore architectures.
2  *
3  * Copyright (C) 2013-2020 Université de Bordeaux, CNRS (LaBRI UMR 5800), Inria
4  * Copyright (C) 2013 Simon Archipoff
5  * Copyright (C) 2017 Arthur Chevalier
6  *
7  * StarPU is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU Lesser General Public License as published by
9  * the Free Software Foundation; either version 2.1 of the License, or (at
10  * your option) any later version.
11  *
12  * StarPU is distributed in the hope that it will be useful, but
13  * WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
15  *
16  * See the GNU Lesser General Public License in COPYING.LGPL for more details.
17  */
18 
19 #ifndef __STARPU_SCHED_COMPONENT_H__
20 #define __STARPU_SCHED_COMPONENT_H__
21 
22 #include <starpu.h>
23 
24 #ifdef STARPU_HAVE_HWLOC
25 #include <hwloc.h>
26 #endif
27 
28 #ifdef __cplusplus
29 extern "C"
30 {
31 #endif
32 
42 {
47 };
48 
52 #define STARPU_SCHED_COMPONENT_IS_HOMOGENEOUS(component) ((component)->properties & STARPU_SCHED_COMPONENT_HOMOGENEOUS)
53 
57 #define STARPU_SCHED_COMPONENT_IS_SINGLE_MEMORY_NODE(component) ((component)->properties & STARPU_SCHED_COMPONENT_SINGLE_MEMORY_NODE)
58 
68 {
72  struct starpu_bitmap *workers;
79  struct starpu_bitmap *workers_in_ctx;
81  void *data;
82  char *name;
84  unsigned nchildren;
88  unsigned nparents;
91 
93  void (*add_child)(struct starpu_sched_component *component, struct starpu_sched_component *child);
95  void (*remove_child)(struct starpu_sched_component *component, struct starpu_sched_component *child);
96  void (*add_parent)(struct starpu_sched_component *component, struct starpu_sched_component *parent);
97  void (*remove_parent)(struct starpu_sched_component *component, struct starpu_sched_component *parent);
98 
109  int (*push_task)(struct starpu_sched_component *, struct starpu_task *);
110 
117  struct starpu_task *(*pull_task)(struct starpu_sched_component *from, struct starpu_sched_component *to);
118 
127  int (*can_push)(struct starpu_sched_component *from, struct starpu_sched_component *to);
128 
139  int (*can_pull)(struct starpu_sched_component *component);
140 
141  int (*notify)(struct starpu_sched_component* component, int message_ID, void* arg);
142 
148  double (*estimated_load)(struct starpu_sched_component *component);
153  double (*estimated_end)(struct starpu_sched_component *component);
154 
158  void (*deinit_data)(struct starpu_sched_component *component);
159 
163  void (*notify_change_workers)(struct starpu_sched_component *component);
164  int properties;
165 
166 #ifdef STARPU_HAVE_HWLOC
167 
173  hwloc_obj_t obj;
174 #else
175  void *obj;
176 #endif
177 };
178 
183 {
191  struct starpu_bitmap *workers;
195  unsigned sched_ctx_id;
200  starpu_pthread_mutex_t lock;
201 };
202 
203 void starpu_initialize_prio_center_policy(unsigned sched_ctx_id);
204 
218 struct starpu_sched_tree *starpu_sched_tree_get(unsigned sched_ctx_id);
235 
240 
245 
246 struct starpu_task* starpu_sched_component_pump_to(struct starpu_sched_component *component, struct starpu_sched_component *to, int* success);
247 struct starpu_task* starpu_sched_component_pump_downstream(struct starpu_sched_component *component, int* success);
248 int starpu_sched_component_send_can_push_to_parents(struct starpu_sched_component * component);
252 void starpu_sched_tree_add_workers(unsigned sched_ctx_id, int *workerids, unsigned nworkers);
256 void starpu_sched_tree_remove_workers(unsigned sched_ctx_id, int *workerids, unsigned nworkers);
257 
262 
270 typedef struct starpu_sched_component * (*starpu_sched_component_create_t)(struct starpu_sched_tree *tree, void *data);
271 
283 
294 
295 void starpu_sched_component_add_child(struct starpu_sched_component* component, struct starpu_sched_component * child);
296 
301 
308 int STARPU_WARN_UNUSED_RESULT starpu_sched_component_execute_preds(struct starpu_sched_component *component, struct starpu_task *task, double *length);
309 
314 
315 void starpu_sched_component_prefetch_on_node(struct starpu_sched_component *component, struct starpu_task *task);
316 
327 struct starpu_sched_component *starpu_sched_component_worker_get(unsigned sched_ctx, int workerid);
328 struct starpu_sched_component *starpu_sched_component_worker_new(unsigned sched_ctx, int workerid);
329 
334 
339 
344 
349 
354 
359 void starpu_sched_component_worker_pre_exec_hook(struct starpu_task *task, unsigned sched_ctx_id);
360 
364 void starpu_sched_component_worker_post_exec_hook(struct starpu_task *task, unsigned sched_ctx_id);
365 
377 
382 
387 
392 
398 
403 
411 double starpu_sched_component_estimated_end_min_add(struct starpu_sched_component * component, double exp_len);
412 
417 
419 {
420  unsigned ntasks_threshold;
421  double exp_len_threshold;
422  int ready;
423 };
424 
431 
436 
445 {
446  unsigned ntasks_threshold;
447  double exp_len_threshold;
448  int ready;
449 };
450 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;
451 int starpu_sched_component_is_prio(struct starpu_sched_component *component);
452 
464 
469 
474 
486 
491 
499 struct starpu_sched_component *starpu_sched_component_eager_create(struct starpu_sched_tree *tree, void *arg) STARPU_ATTRIBUTE_MALLOC;
500 int starpu_sched_component_is_eager(struct starpu_sched_component *);
501 
509 struct starpu_sched_component *starpu_sched_component_eager_prio_create(struct starpu_sched_tree *tree, void *arg) STARPU_ATTRIBUTE_MALLOC;
510 int starpu_sched_component_is_eager_prio(struct starpu_sched_component *);
511 
519 struct starpu_sched_component *starpu_sched_component_eager_calibration_create(struct starpu_sched_tree *tree, void *arg) STARPU_ATTRIBUTE_MALLOC;
520 int starpu_sched_component_is_eager_calibration(struct starpu_sched_component *);
521 
530 {
531  double alpha;
532  double beta;
533  double _gamma;
534  double idle_power;
535 };
536 
543 
544 int starpu_sched_component_is_mct(struct starpu_sched_component *component);
545 
553 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;
554 int starpu_sched_component_is_heft(struct starpu_sched_component *component);
555 
564 {
566  unsigned batch;
567 };
568 
569 struct starpu_sched_component * starpu_sched_component_heteroprio_create(struct starpu_sched_tree *tree, struct starpu_sched_component_heteroprio_data * params) STARPU_ATTRIBUTE_MALLOC;
570 int starpu_sched_component_is_heteroprio(struct starpu_sched_component *component);
571 
586 
595 {
596  struct starpu_sched_component *calibrator_component;
597  struct starpu_sched_component *no_perfmodel_component;
598  struct starpu_sched_component *perfmodel_component;
599 };
600 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;
601 int starpu_sched_component_is_perfmodel_select(struct starpu_sched_component *component);
602 
610 struct starpu_sched_component * starpu_sched_component_stage_create(struct starpu_sched_tree *tree, void *arg) STARPU_ATTRIBUTE_MALLOC;
611 int starpu_sched_component_is_stage(struct starpu_sched_component *component);
612 
620 struct starpu_sched_component * starpu_sched_component_userchoice_create(struct starpu_sched_tree *tree, void *arg) STARPU_ATTRIBUTE_MALLOC;
621 int starpu_sched_component_is_userchoice(struct starpu_sched_component *component);
622 
633 struct starpu_sched_component_composed_recipe;
634 
638 struct starpu_sched_component_composed_recipe *starpu_sched_component_composed_recipe_create(void) STARPU_ATTRIBUTE_MALLOC;
639 
643 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;
644 
648 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);
649 
653 void starpu_sched_component_composed_recipe_destroy(struct starpu_sched_component_composed_recipe *);
654 
659 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;
660 
661 #ifdef STARPU_HAVE_HWLOC
662 
667 {
672  struct starpu_sched_component_composed_recipe *hwloc_machine_composed_sched_component;
676  struct starpu_sched_component_composed_recipe *hwloc_component_composed_sched_component;
680  struct starpu_sched_component_composed_recipe *hwloc_socket_composed_sched_component;
684  struct starpu_sched_component_composed_recipe *hwloc_cache_composed_sched_component;
685 
690  struct starpu_sched_component_composed_recipe *(*worker_composed_sched_component)(enum starpu_worker_archtype archtype);
698 };
699 
700 
705 #endif /* STARPU_HAVE_HWLOC */
706 
712 #define STARPU_SCHED_SIMPLE_DECIDE_MASK (3<<0)
713 
717 #define STARPU_SCHED_SIMPLE_DECIDE_WORKERS (1<<0)
718 
722 #define STARPU_SCHED_SIMPLE_DECIDE_MEMNODES (2<<0)
723 
727 #define STARPU_SCHED_SIMPLE_DECIDE_ARCHS (3<<0)
728 
732 #define STARPU_SCHED_SIMPLE_DECIDE_ALWAYS (1<<3)
733 
738 #define STARPU_SCHED_SIMPLE_PERFMODEL (1<<4)
739 
743 #define STARPU_SCHED_SIMPLE_IMPL (1<<5)
744 
750 #define STARPU_SCHED_SIMPLE_FIFO_ABOVE (1<<6)
751 
755 #define STARPU_SCHED_SIMPLE_FIFO_ABOVE_PRIO (1<<7)
756 
762 #define STARPU_SCHED_SIMPLE_FIFOS_BELOW (1<<8)
763 
767 #define STARPU_SCHED_SIMPLE_FIFOS_BELOW_PRIO (1<<9)
768 
772 #define STARPU_SCHED_SIMPLE_FIFOS_BELOW_READY (1<<10)
773 
777 #define STARPU_SCHED_SIMPLE_WS_BELOW (1<<11)
778 
782 #define STARPU_SCHED_SIMPLE_COMBINED_WORKERS (1<<12)
783 
791 void starpu_sched_component_initialize_simple_scheduler(starpu_sched_component_create_t create_decision_component, void *data, unsigned flags, unsigned sched_ctx_id);
792 
805 void starpu_sched_component_initialize_simple_schedulers(unsigned sched_ctx_id, unsigned ndecisions, ...);
806 
809 #define STARPU_COMPONENT_MUTEX_LOCK(m) \
810 do \
811 { \
812  const int _relaxed_state = starpu_worker_get_relax_state(); \
813  if (!_relaxed_state) \
814  starpu_worker_relax_on(); \
815  STARPU_PTHREAD_MUTEX_LOCK((m)); \
816  if (!_relaxed_state) \
817  starpu_worker_relax_off(); \
818 } \
819 while(0)
820 
821 #define STARPU_COMPONENT_MUTEX_TRYLOCK(m) STARPU_PTHREAD_MUTEX_TRYLOCK((m))
822 
823 #define STARPU_COMPONENT_MUTEX_UNLOCK(m) STARPU_PTHREAD_MUTEX_UNLOCK((m))
824 
827 #ifdef __cplusplus
828 }
829 #endif
830 
831 #endif /* __STARPU_SCHED_COMPONENT_H__ */
STARPU_SCHED_COMPONENT_HOMOGENEOUS
@ STARPU_SCHED_COMPONENT_HOMOGENEOUS
Definition: starpu_sched_component.h:44
starpu_sched_component_is_fifo
int starpu_sched_component_is_fifo(struct starpu_sched_component *component)
starpu_task::workerids
uint32_t * workerids
Definition: starpu_task.h:988
starpu_sched_component_execute_preds
int STARPU_WARN_UNUSED_RESULT starpu_sched_component_execute_preds(struct starpu_sched_component *component, struct starpu_task *task, double *length)
starpu_sched_component_composed_recipe_create
struct starpu_sched_component_composed_recipe * starpu_sched_component_composed_recipe_create(void) STARPU_ATTRIBUTE_MALLOC
starpu_sched_component_can_push
int starpu_sched_component_can_push(struct starpu_sched_component *component, struct starpu_sched_component *to)
starpu_sched_component::add_child
void(* add_child)(struct starpu_sched_component *component, struct starpu_sched_component *child)
Definition: starpu_sched_component.h:93
starpu_task::sched_ctx
unsigned sched_ctx
Definition: starpu_task.h:1065
starpu_sched_component::nparents
unsigned nparents
Definition: starpu_sched_component.h:88
starpu_sched_component::tree
struct starpu_sched_tree * tree
Definition: starpu_sched_component.h:70
starpu_sched_component_best_implementation_create
struct starpu_sched_component * starpu_sched_component_best_implementation_create(struct starpu_sched_tree *tree, void *arg) STARPU_ATTRIBUTE_MALLOC
starpu_sched_component_connect
void starpu_sched_component_connect(struct starpu_sched_component *parent, struct starpu_sched_component *child)
starpu_sched_component::workers_in_ctx
struct starpu_bitmap * workers_in_ctx
Definition: starpu_sched_component.h:79
starpu_sched_component::push_task
int(* push_task)(struct starpu_sched_component *, struct starpu_task *)
Definition: starpu_sched_component.h:109
starpu_sched_component_prio_data
Definition: starpu_sched_component.h:445
starpu_sched_component_make_scheduler
struct starpu_sched_tree * starpu_sched_component_make_scheduler(unsigned sched_ctx_id, struct starpu_sched_component_specs s)
starpu_sched_tree_update_workers
void starpu_sched_tree_update_workers(struct starpu_sched_tree *t)
starpu_sched_component_work_stealing_create
struct starpu_sched_component * starpu_sched_component_work_stealing_create(struct starpu_sched_tree *tree, void *arg) STARPU_ATTRIBUTE_MALLOC
starpu_sched_component_destroy_rec
void starpu_sched_component_destroy_rec(struct starpu_sched_component *component)
starpu_sched_component::nchildren
unsigned nchildren
Definition: starpu_sched_component.h:84
starpu_sched_component_estimated_end_min
double starpu_sched_component_estimated_end_min(struct starpu_sched_component *component)
starpu_sched_component_initialize_simple_schedulers
void starpu_sched_component_initialize_simple_schedulers(unsigned sched_ctx_id, unsigned ndecisions,...)
starpu_sched_tree_pop_task
struct starpu_task * starpu_sched_tree_pop_task(unsigned sched_ctx)
starpu_sched_component_composed_component_create
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
starpu_sched_component::estimated_load
double(* estimated_load)(struct starpu_sched_component *component)
Definition: starpu_sched_component.h:148
starpu_sched_component_estimated_load
double starpu_sched_component_estimated_load(struct starpu_sched_component *component)
starpu_sched_component::deinit_data
void(* deinit_data)(struct starpu_sched_component *component)
Definition: starpu_sched_component.h:158
starpu_sched_component_properties
starpu_sched_component_properties
Definition: starpu_sched_component.h:42
starpu_sched_component_specs::hwloc_socket_composed_sched_component
struct starpu_sched_component_composed_recipe * hwloc_socket_composed_sched_component
Definition: starpu_sched_component.h:680
starpu_sched_component_worker_get
struct starpu_sched_component * starpu_sched_component_worker_get(unsigned sched_ctx, int workerid)
starpu_sched_component_is_work_stealing
int starpu_sched_component_is_work_stealing(struct starpu_sched_component *component)
starpu_sched_component_is_random
int starpu_sched_component_is_random(struct starpu_sched_component *)
STARPU_SCHED_COMPONENT_SINGLE_MEMORY_NODE
@ STARPU_SCHED_COMPONENT_SINGLE_MEMORY_NODE
Definition: starpu_sched_component.h:46
starpu_sched_component_composed_recipe_destroy
void starpu_sched_component_composed_recipe_destroy(struct starpu_sched_component_composed_recipe *)
starpu_sched_component_specs::hwloc_component_composed_sched_component
struct starpu_sched_component_composed_recipe * hwloc_component_composed_sched_component
Definition: starpu_sched_component.h:676
starpu_sched_component_random_create
struct starpu_sched_component * starpu_sched_component_random_create(struct starpu_sched_tree *tree, void *arg) STARPU_ATTRIBUTE_MALLOC
starpu_sched_component_destroy
void starpu_sched_component_destroy(struct starpu_sched_component *component)
starpu_sched_component_specs
Definition: starpu_sched_component.h:667
starpu.h
starpu_sched_component_pull_task
struct starpu_task * starpu_sched_component_pull_task(struct starpu_sched_component *from, struct starpu_sched_component *to)
starpu_sched_component::parents
struct starpu_sched_component ** parents
Definition: starpu_sched_component.h:90
starpu_sched_component_is_worker
int starpu_sched_component_is_worker(struct starpu_sched_component *component)
starpu_sched_tree_add_workers
void starpu_sched_tree_add_workers(unsigned sched_ctx_id, int *workerids, unsigned nworkers)
starpu_sched_component_fifo_create
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
starpu_sched_component_estimated_end_min_add
double starpu_sched_component_estimated_end_min_add(struct starpu_sched_component *component, double exp_len)
starpu_sched_component::obj
hwloc_obj_t obj
Definition: starpu_sched_component.h:173
starpu_task
Definition: starpu_task.h:553
starpu_sched_component::children
struct starpu_sched_component ** children
Definition: starpu_sched_component.h:86
starpu_sched_component
Definition: starpu_sched_component.h:68
starpu_sched_component_create
struct starpu_sched_component * starpu_sched_component_create(struct starpu_sched_tree *tree, const char *name) STARPU_ATTRIBUTE_MALLOC
starpu_sched_component::remove_child
void(* remove_child)(struct starpu_sched_component *component, struct starpu_sched_component *child)
Definition: starpu_sched_component.h:95
starpu_sched_component_specs::hwloc_cache_composed_sched_component
struct starpu_sched_component_composed_recipe * hwloc_cache_composed_sched_component
Definition: starpu_sched_component.h:684
starpu_sched_component_can_pull
int starpu_sched_component_can_pull(struct starpu_sched_component *component)
starpu_sched_component_transfer_length
double starpu_sched_component_transfer_length(struct starpu_sched_component *component, struct starpu_task *task)
starpu_sched_component::can_pull
int(* can_pull)(struct starpu_sched_component *component)
Definition: starpu_sched_component.h:139
starpu_sched_component::workers
struct starpu_bitmap * workers
Definition: starpu_sched_component.h:72
starpu_sched_component_worker_pre_exec_hook
void starpu_sched_component_worker_pre_exec_hook(struct starpu_task *task, unsigned sched_ctx_id)
starpu_sched_component_parents_pull_task
struct starpu_task * starpu_sched_component_parents_pull_task(struct starpu_sched_component *component, struct starpu_sched_component *to)
starpu_sched_component_push_task
int starpu_sched_component_push_task(struct starpu_sched_component *from, struct starpu_sched_component *to, struct starpu_task *task)
starpu_sched_tree_remove_workers
void starpu_sched_tree_remove_workers(unsigned sched_ctx_id, int *workerids, unsigned nworkers)
starpu_sched_component_composed_recipe_add
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)
starpu_sched_tree_work_stealing_push_task
int starpu_sched_tree_work_stealing_push_task(struct starpu_task *task)
starpu_sched_component_initialize_simple_scheduler
void starpu_sched_component_initialize_simple_scheduler(starpu_sched_component_create_t create_decision_component, void *data, unsigned flags, unsigned sched_ctx_id)
starpu_sched_component_mct_create
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
starpu_sched_component_worker_post_exec_hook
void starpu_sched_component_worker_post_exec_hook(struct starpu_task *task, unsigned sched_ctx_id)
starpu_sched_tree_push_task
int starpu_sched_tree_push_task(struct starpu_task *task)
starpu_sched_component_worker_get_workerid
int starpu_sched_component_worker_get_workerid(struct starpu_sched_component *worker_component)
starpu_sched_component_parallel_worker_create
struct starpu_sched_component * starpu_sched_component_parallel_worker_create(struct starpu_sched_tree *tree, unsigned nworkers, unsigned *workers)
starpu_sched_component_estimated_end_average
double starpu_sched_component_estimated_end_average(struct starpu_sched_component *component)
starpu_sched_tree::lock
starpu_pthread_mutex_t lock
Definition: starpu_sched_component.h:200
starpu_sched_component_is_simple_worker
int starpu_sched_component_is_simple_worker(struct starpu_sched_component *component)
starpu_sched_component_composed_recipe_create_singleton
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
starpu_sched_component_mct_data
Definition: starpu_sched_component.h:530
starpu_sched_component_specs::mix_heterogeneous_workers
int mix_heterogeneous_workers
Definition: starpu_sched_component.h:697
starpu_sched_component_perfmodel_select_data
Definition: starpu_sched_component.h:595
starpu_sched_component_specs::hwloc_machine_composed_sched_component
struct starpu_sched_component_composed_recipe * hwloc_machine_composed_sched_component
Definition: starpu_sched_component.h:672
starpu_worker_archtype
starpu_worker_archtype
Definition: starpu_worker.h:63
starpu_sched_tree_destroy
void starpu_sched_tree_destroy(struct starpu_sched_tree *tree)
starpu_sched_tree::workers
struct starpu_bitmap * workers
Definition: starpu_sched_component.h:191
starpu_sched_tree
Definition: starpu_sched_component.h:183
starpu_sched_component_can_execute_task
int starpu_sched_component_can_execute_task(struct starpu_sched_component *component, struct starpu_task *task)
starpu_sched_component_fifo_data
Definition: starpu_sched_component.h:419
starpu_sched_component::estimated_end
double(* estimated_end)(struct starpu_sched_component *component)
Definition: starpu_sched_component.h:153
starpu_sched_tree_update_workers_in_ctx
void starpu_sched_tree_update_workers_in_ctx(struct starpu_sched_tree *t)
starpu_sched_tree_create
struct starpu_sched_tree * starpu_sched_tree_create(unsigned sched_ctx_id) STARPU_ATTRIBUTE_MALLOC
starpu_sched_tree::root
struct starpu_sched_component * root
Definition: starpu_sched_component.h:187
starpu_sched_component_can_pull_all
int starpu_sched_component_can_pull_all(struct starpu_sched_component *component)
starpu_sched_tree::sched_ctx_id
unsigned sched_ctx_id
Definition: starpu_sched_component.h:195
starpu_sched_component::notify_change_workers
void(* notify_change_workers)(struct starpu_sched_component *component)
Definition: starpu_sched_component.h:163
starpu_sched_component_is_combined_worker
int starpu_sched_component_is_combined_worker(struct starpu_sched_component *component)
starpu_sched_component_heteroprio_data
Definition: starpu_sched_component.h:564
STARPU_ATTRIBUTE_MALLOC
#define STARPU_ATTRIBUTE_MALLOC
Definition: starpu_util.h:112
starpu_sched_component::can_push
int(* can_push)(struct starpu_sched_component *from, struct starpu_sched_component *to)
Definition: starpu_sched_component.h:127
starpu_sched_component::data
void * data
Definition: starpu_sched_component.h:81