30 #include <common/config.h> 31 #include <common/timing.h> 32 #include <common/fxt.h> 33 #include <common/thread.h> 34 #include <core/jobs.h> 35 #include <core/perfmodel/perfmodel.h> 36 #include <core/sched_policy.h> 37 #include <core/topology.h> 38 #include <core/errorcheck.h> 39 #include <core/sched_ctx.h> 40 #include <core/sched_ctx_list.h> 41 #include <core/simgrid.h> 42 #ifdef STARPU_HAVE_HWLOC 46 #include <core/drivers.h> 47 #include <drivers/cuda/driver_cuda.h> 48 #include <drivers/opencl/driver_opencl.h> 51 #include <drivers/mic/driver_mic_source.h> 55 #include <drivers/scc/driver_scc_source.h> 58 #ifdef STARPU_USE_MPI_MASTER_SLAVE 59 #include <drivers/mpi/driver_mpi_source.h> 62 #include <drivers/cpu/driver_cpu.h> 64 #include <datawizard/datawizard.h> 66 #include <starpu_parameters.h> 68 #define STARPU_MAX_PIPELINE 4 70 enum initialization { UNINITIALIZED = 0, CHANGING, INITIALIZED };
72 struct _starpu_ctx_change_list;
77 starpu_pthread_mutex_t mutex;
78 enum starpu_worker_archtype arch;
80 struct starpu_perfmodel_arch perf_arch;
100 #ifdef STARPU_SPINLOCK_CHECK 101 const char *relax_on_file;
103 const char *relax_on_func;
104 const char *relax_off_file;
106 const char *relax_off_func;
133 struct _starpu_ctx_change_list ctx_change_list;
134 struct starpu_task_list local_tasks;
140 struct starpu_task *current_tasks[STARPU_MAX_PIPELINE];
141 #ifdef STARPU_SIMGRID 142 starpu_pthread_wait_t wait;
145 struct timespec cl_start;
146 struct timespec cl_end;
152 unsigned worker_is_running;
153 unsigned worker_is_initialized;
154 enum _starpu_worker_status status;
159 struct _starpu_driver_ops *driver_ops;
161 struct _starpu_sched_ctx_list *sched_ctx_list;
164 struct _starpu_barrier_counter tasks_barrier;
168 unsigned removed_from_ctx[STARPU_NMAX_SCHED_CTXS+1];
180 unsigned shares_tasks_lists[STARPU_NMAX_SCHED_CTXS+1];
182 unsigned poped_in_ctx[STARPU_NMAX_SCHED_CTXS+1];
188 unsigned reverse_phase[2];
193 struct _starpu_sched_ctx *stream_ctx;
198 #ifdef STARPU_HAVE_HWLOC 199 hwloc_bitmap_t hwloc_cpu_set;
200 hwloc_obj_t hwloc_obj;
210 int combined_workerid[STARPU_NMAXWORKERS];
213 starpu_pthread_mutex_t count_mutex;
219 #ifdef STARPU_HAVE_HWLOC 220 hwloc_bitmap_t hwloc_cpu_set;
230 starpu_pthread_mutex_t mutex;
237 unsigned set_is_initialized;
240 #ifdef STARPU_USE_MPI_MASTER_SLAVE 252 unsigned nsched_ctxs;
254 #ifdef STARPU_HAVE_HWLOC 296 unsigned nworkerpercuda;
297 int cuda_th_per_stream;
308 unsigned nhwmpidevices;
310 unsigned nhwmpicores[STARPU_MAXMPIDEVS];
311 unsigned nmpicores[STARPU_MAXMPIDEVS];
316 unsigned nmicdevices;
318 unsigned nhwmiccores[STARPU_MAXMICDEVS];
319 unsigned nmiccores[STARPU_MAXMICDEVS];
328 unsigned workers_bindid[STARPU_NMAXWORKERS];
336 unsigned workers_cuda_gpuid[STARPU_NMAXWORKERS];
344 unsigned workers_opencl_gpuid[STARPU_NMAXWORKERS];
361 unsigned workers_scc_deviceid[STARPU_NMAXWORKERS];
363 unsigned workers_mpi_ms_deviceid[STARPU_NMAXWORKERS];
370 #ifdef STARPU_HAVE_HWLOC 377 char currently_bound[STARPU_NMAXWORKERS];
378 char currently_shared[STARPU_NMAXWORKERS];
430 struct starpu_conf conf;
442 struct _starpu_sched_ctx sched_ctxs[STARPU_NMAX_SCHED_CTXS+1];
449 starpu_pthread_mutex_t submitted_mutex;
452 extern int _starpu_worker_parallel_blocks;
455 extern int _starpu_keys_initialized STARPU_ATTRIBUTE_INTERNAL;
456 extern starpu_pthread_key_t _starpu_worker_key STARPU_ATTRIBUTE_INTERNAL;
457 extern starpu_pthread_key_t _starpu_worker_set_key STARPU_ATTRIBUTE_INTERNAL;
461 int *_starpu_get_argc();
462 char ***_starpu_get_argv();
477 ANNOTATE_HAPPENS_AFTER(&_starpu_config.running);
478 ret = _starpu_config.running;
479 ANNOTATE_HAPPENS_BEFORE(&_starpu_config.running);
509 void _starpu_block_worker(
int workerid, starpu_pthread_cond_t *cond, starpu_pthread_mutex_t *mutex);
516 static inline unsigned _starpu_worker_get_count(
void)
518 return _starpu_config.topology.nworkers;
520 #define starpu_worker_get_count _starpu_worker_get_count 527 STARPU_ASSERT(_starpu_keys_initialized);
528 STARPU_PTHREAD_SETSPECIFIC(_starpu_worker_key, worker);
535 if (!_starpu_keys_initialized)
537 return (
struct _starpu_worker *) STARPU_PTHREAD_GETSPECIFIC(_starpu_worker_key);
545 STARPU_ASSERT(_starpu_keys_initialized);
546 STARPU_PTHREAD_SETSPECIFIC(_starpu_worker_set_key, worker);
553 if (!_starpu_keys_initialized)
555 return (
struct _starpu_worker_set *) STARPU_PTHREAD_GETSPECIFIC(_starpu_worker_set_key);
562 STARPU_ASSERT(
id < starpu_worker_get_count());
563 return &_starpu_config.workers[id];
570 return (
id > STARPU_NMAX_SCHED_CTXS) ? NULL : &_starpu_config.sched_ctxs[id];
579 return &_starpu_config;
585 return _starpu_config.disable_kernels;
591 return _starpu_config.workers[workerid].status;
598 _starpu_config.workers[workerid].status = status;
604 return &_starpu_config.sched_ctxs[STARPU_GLOBAL_SCHED_CTX];
607 int starpu_worker_get_nids_by_type(
enum starpu_worker_archtype type,
int *workerids,
int maxsize);
613 static inline unsigned _starpu_worker_mutex_is_sched_mutex(
int workerid, starpu_pthread_mutex_t *mutex)
619 static inline int _starpu_worker_get_nsched_ctxs(
int workerid)
621 return _starpu_config.workers[
workerid].nsched_ctxs;
629 return _starpu_config.topology.nsched_ctxs;
649 #define starpu_worker_get_id _starpu_worker_get_id 657 int id = starpu_worker_get_id();
658 STARPU_ASSERT_MSG(
id>=0,
"%s:%d Cannot be called from outside a worker\n", f, l);
661 #define _starpu_worker_get_id_check(f,l) __starpu_worker_get_id_check(f,l) 663 void _starpu_worker_set_stream_ctx(
unsigned workerid,
struct _starpu_sched_ctx *sched_ctx);
665 struct _starpu_sched_ctx* _starpu_worker_get_ctx_stream(
unsigned stream_workerid);
674 _starpu_worker_parallel_blocks = 1;
695 STARPU_PTHREAD_COND_BROADCAST(&worker->
sched_cond);
696 #ifdef STARPU_SIMGRID 697 starpu_pthread_queue_broadcast(&_starpu_simgrid_task_queue[worker->
workerid]);
713 STARPU_PTHREAD_COND_BROADCAST(&worker->
sched_cond);
742 STARPU_PTHREAD_COND_BROADCAST(&worker->
sched_cond);
756 STARPU_PTHREAD_COND_BROADCAST(&worker->
sched_cond);
785 STARPU_PTHREAD_COND_BROADCAST(&worker->
sched_cond);
802 STARPU_PTHREAD_COND_BROADCAST(&worker->
sched_cond);
822 #ifdef STARPU_SPINLOCK_CHECK 823 static inline void __starpu_worker_enter_sched_op(
struct _starpu_worker *
const worker,
const char*file,
int line,
const char* func)
861 #ifdef STARPU_SPINLOCK_CHECK 862 worker->relax_on_file = file;
863 worker->relax_on_line = line;
864 worker->relax_on_func = func;
867 #ifdef STARPU_SPINLOCK_CHECK 868 #define _starpu_worker_enter_sched_op(worker) __starpu_worker_enter_sched_op((worker), __FILE__, __LINE__, __starpu_func__) 876 #ifdef STARPU_SPINLOCK_CHECK 877 static inline void __starpu_worker_leave_sched_op(
struct _starpu_worker *
const worker,
const char*file,
int line,
const char* func)
879 static inline void _starpu_worker_leave_sched_op(
struct _starpu_worker *
const worker)
884 #ifdef STARPU_SPINLOCK_CHECK 885 worker->relax_off_file = file;
886 worker->relax_off_line = line;
887 worker->relax_off_func = func;
890 STARPU_PTHREAD_COND_BROADCAST(&worker->
sched_cond);
893 #ifdef STARPU_SPINLOCK_CHECK 894 #define _starpu_worker_leave_sched_op(worker) __starpu_worker_leave_sched_op((worker), __FILE__, __LINE__, __starpu_func__) 897 static inline int _starpu_worker_sched_op_pending(
void)
899 int workerid = starpu_worker_get_id();
903 STARPU_ASSERT(worker != NULL);
939 STARPU_PTHREAD_COND_BROADCAST(&worker->
sched_cond);
940 #ifdef STARPU_SIMGRID 941 starpu_pthread_queue_broadcast(&_starpu_simgrid_task_queue[worker->
workerid]);
962 STARPU_PTHREAD_COND_BROADCAST(&worker->
sched_cond);
967 #ifdef STARPU_SPINLOCK_CHECK 968 static inline void __starpu_worker_relax_on(
const char*file,
int line,
const char* func)
978 STARPU_PTHREAD_MUTEX_LOCK_SCHED(&worker->
sched_mutex);
979 #ifdef STARPU_SPINLOCK_CHECK 980 STARPU_ASSERT_MSG(worker->
state_relax_refcnt<UINT_MAX,
"relax last turn on in %s (%s:%d)\n", worker->relax_on_func, worker->relax_on_file, worker->relax_on_line);
985 #ifdef STARPU_SPINLOCK_CHECK 986 worker->relax_on_file = file;
987 worker->relax_on_line = line;
988 worker->relax_on_func = func;
990 STARPU_PTHREAD_COND_BROADCAST(&worker->
sched_cond);
991 STARPU_PTHREAD_MUTEX_UNLOCK_SCHED(&worker->
sched_mutex);
993 #ifdef STARPU_SPINLOCK_CHECK 994 #define _starpu_worker_relax_on() __starpu_worker_relax_on(__FILE__, __LINE__, __starpu_func__) 996 #define starpu_worker_relax_on _starpu_worker_relax_on 999 #ifdef STARPU_SPINLOCK_CHECK 1000 static inline void __starpu_worker_relax_on_locked(
struct _starpu_worker *worker,
const char*file,
int line,
const char* func)
1007 #ifdef STARPU_SPINLOCK_CHECK 1008 STARPU_ASSERT_MSG(worker->
state_relax_refcnt<UINT_MAX,
"relax last turn on in %s (%s:%d)\n", worker->relax_on_func, worker->relax_on_file, worker->relax_on_line);
1013 #ifdef STARPU_SPINLOCK_CHECK 1014 worker->relax_on_file = file;
1015 worker->relax_on_line = line;
1016 worker->relax_on_func = func;
1018 STARPU_PTHREAD_COND_BROADCAST(&worker->
sched_cond);
1020 #ifdef STARPU_SPINLOCK_CHECK 1021 #define _starpu_worker_relax_on_locked(worker) __starpu_worker_relax_on_locked(worker,__FILE__, __LINE__, __starpu_func__) 1024 #ifdef STARPU_SPINLOCK_CHECK 1025 static inline void __starpu_worker_relax_off(
const char*file,
int line,
const char* func)
1027 static inline void _starpu_worker_relax_off(
void)
1030 int workerid = starpu_worker_get_id();
1034 STARPU_ASSERT(worker != NULL);
1037 STARPU_PTHREAD_MUTEX_LOCK_SCHED(&worker->
sched_mutex);
1038 #ifdef STARPU_SPINLOCK_CHECK 1039 STARPU_ASSERT_MSG(worker->
state_relax_refcnt>0,
"relax last turn off in %s (%s:%d)\n", worker->relax_on_func, worker->relax_on_file, worker->relax_on_line);
1044 #ifdef STARPU_SPINLOCK_CHECK 1045 worker->relax_off_file = file;
1046 worker->relax_off_line = line;
1047 worker->relax_off_func = func;
1049 STARPU_PTHREAD_MUTEX_UNLOCK_SCHED(&worker->
sched_mutex);
1051 #ifdef STARPU_SPINLOCK_CHECK 1052 #define _starpu_worker_relax_off() __starpu_worker_relax_off(__FILE__, __LINE__, __starpu_func__) 1054 #define starpu_worker_relax_off _starpu_worker_relax_off 1056 #ifdef STARPU_SPINLOCK_CHECK 1057 static inline void __starpu_worker_relax_off_locked(
const char*file,
int line,
const char* func)
1059 static inline void _starpu_worker_relax_off_locked(
void)
1062 int workerid = starpu_worker_get_id();
1066 STARPU_ASSERT(worker != NULL);
1069 #ifdef STARPU_SPINLOCK_CHECK 1070 STARPU_ASSERT_MSG(worker->
state_relax_refcnt>0,
"relax last turn off in %s (%s:%d)\n", worker->relax_on_func, worker->relax_on_file, worker->relax_on_line);
1075 #ifdef STARPU_SPINLOCK_CHECK 1076 worker->relax_off_file = file;
1077 worker->relax_off_line = line;
1078 worker->relax_off_func = func;
1081 #ifdef STARPU_SPINLOCK_CHECK 1082 #define _starpu_worker_relax_off_locked() __starpu_worker_relax_off_locked(__FILE__, __LINE__, __starpu_func__) 1085 static inline int _starpu_worker_get_relax_state(
void)
1087 int workerid = starpu_worker_get_id();
1091 STARPU_ASSERT(worker != NULL);
1094 #define starpu_worker_get_relax_state _starpu_worker_get_relax_state 1103 STARPU_ASSERT(worker != NULL);
1104 int cur_workerid = starpu_worker_get_id();
1105 if (workerid != cur_workerid)
1107 starpu_worker_relax_on();
1109 STARPU_PTHREAD_MUTEX_LOCK_SCHED(&worker->
sched_mutex);
1117 STARPU_PTHREAD_MUTEX_LOCK_SCHED(&worker->
sched_mutex);
1121 static inline int _starpu_worker_trylock(
int workerid)
1124 int cur_workerid = cur_worker->
workerid;
1126 STARPU_ASSERT(worker != NULL);
1129 int ret = STARPU_PTHREAD_MUTEX_TRYLOCK_SCHED(&cur_worker->
sched_mutex);
1132 if (workerid == cur_workerid)
1137 ret = STARPU_PTHREAD_MUTEX_TRYLOCK_SCHED(&worker->
sched_mutex);
1143 STARPU_PTHREAD_MUTEX_UNLOCK_SCHED(&worker->
sched_mutex);
1147 STARPU_PTHREAD_MUTEX_UNLOCK_SCHED(&cur_worker->
sched_mutex);
1151 static inline void _starpu_worker_unlock(
int workerid)
1154 STARPU_ASSERT(worker != NULL);
1155 STARPU_PTHREAD_MUTEX_UNLOCK_SCHED(&worker->
sched_mutex);
1156 int cur_workerid = starpu_worker_get_id();
1157 if (workerid != cur_workerid)
1159 starpu_worker_relax_off();
1163 static inline void _starpu_worker_lock_self(
void)
1165 int workerid = starpu_worker_get_id_check();
1167 STARPU_ASSERT(worker != NULL);
1168 STARPU_PTHREAD_MUTEX_LOCK_SCHED(&worker->
sched_mutex);
1171 static inline void _starpu_worker_unlock_self(
void)
1173 int workerid = starpu_worker_get_id_check();
1175 STARPU_ASSERT(worker != NULL);
1176 STARPU_PTHREAD_MUTEX_UNLOCK_SCHED(&worker->
sched_mutex);
1179 static inline int _starpu_wake_worker_relax(
int workerid)
1182 int ret = starpu_wake_worker_locked(workerid);
1183 _starpu_worker_unlock(workerid);
1187 int starpu_wake_worker_relax_light(
int workerid);
1197 #endif // __WORKERS_H__ struct starpu_task ** local_ordered_tasks
Definition: workers.h:135
void _starpu_may_pause(void)
unsigned devid
Definition: workers.h:82
static unsigned __starpu_worker_get_id_check(const char *f, int l)
Definition: workers.h:653
static void _starpu_worker_relax_on(void)
Definition: workers.h:970
int pause_depth
Definition: workers.h:439
unsigned char pipeline_length
Definition: workers.h:149
unsigned ncudagpus
Definition: workers.h:295
static void _starpu_worker_request_blocking_in_parallel(struct _starpu_worker *const worker)
Definition: workers.h:672
int workerid
Definition: workers.h:85
unsigned state_unblock_in_parallel_req
Definition: workers.h:115
unsigned current_ordered_task_order
Definition: workers.h:138
static unsigned _starpu_get_nsched_ctxs(void)
Definition: workers.h:625
unsigned subworkerid
Definition: workers.h:83
unsigned nhwcudagpus
Definition: workers.h:274
unsigned nb_buffers_totransfer
Definition: workers.h:173
int current_mpi_deviceid
Definition: workers.h:393
unsigned memory_node
Definition: workers.h:209
unsigned nhwopenclgpus
Definition: workers.h:279
uint32_t _starpu_can_submit_scc_task(void)
void _starpu_worker_refuse_task(struct _starpu_worker *worker, struct starpu_task *task)
static void _starpu_worker_leave_changing_ctx_op(struct _starpu_worker *const worker)
Definition: workers.h:958
unsigned nmpidevices
Definition: workers.h:307
int combined_workerid
Definition: workers.h:86
Definition: workers.h:366
struct starpu_perfmodel_arch perf_arch
Definition: workers.h:206
unsigned has_prev_init
Definition: workers.h:166
unsigned run_by_starpu
Definition: workers.h:158
unsigned nsched_ctxs
Definition: workers.h:163
starpu_pthread_t thread_changing_ctx
Definition: workers.h:125
static struct _starpu_machine_config * _starpu_get_machine_config(void)
Definition: workers.h:577
void _starpu_set_argc_argv(int *argc, char ***argv)
uint32_t _starpu_can_submit_opencl_task(void)
unsigned started
Definition: workers.h:233
static void _starpu_set_local_worker_set_key(struct _starpu_worker_set *worker)
Definition: workers.h:543
int cuda_nodeid
Definition: workers.h:398
uint32_t worker_mask
Definition: workers.h:79
static struct _starpu_sched_ctx * _starpu_get_initial_sched_ctx(void)
Definition: workers.h:602
unsigned current_ordered_task
Definition: workers.h:137
unsigned local_ordered_tasks_size
Definition: workers.h:136
static void _starpu_worker_lock(int workerid)
Definition: workers.h:1100
static void _starpu_worker_request_unblocking_in_parallel(struct _starpu_worker *const worker)
Definition: workers.h:721
unsigned state_relax_refcnt
Definition: workers.h:99
struct starpu_task * task_transferring
Definition: workers.h:174
Definition: workers.h:244
unsigned pop_ctx_priority
Definition: workers.h:190
static void _starpu_set_local_worker_key(struct _starpu_worker *worker)
Definition: workers.h:525
unsigned nhwmpi
Definition: workers.h:289
static struct _starpu_worker_set * _starpu_get_local_worker_set_key(void)
Definition: workers.h:551
unsigned nsccdevices
Definition: workers.h:304
unsigned block_in_parallel_ref_count
Definition: workers.h:124
unsigned submitting
Definition: workers.h:445
int scc_nodeid
Definition: workers.h:404
uint32_t _starpu_can_submit_cpu_task(void)
Definition: workers.h:204
uint32_t worker_mask
Definition: workers.h:207
void _starpu_conf_check_environment(struct starpu_conf *conf)
starpu_pthread_cond_t ready_cond
Definition: workers.h:90
unsigned nb_buffers_transferred
Definition: workers.h:172
unsigned char first_task
Definition: workers.h:147
unsigned memory_node
Definition: workers.h:91
unsigned nhwcpus
Definition: workers.h:264
unsigned nopenclgpus
Definition: workers.h:301
unsigned state_blocked_in_parallel
Definition: workers.h:111
struct starpu_conf conf
Definition: workers.h:430
static unsigned _starpu_machine_is_running(void)
Definition: workers.h:471
static enum _starpu_worker_status _starpu_worker_get_status(int workerid)
Definition: workers.h:589
unsigned state_block_in_parallel_ack
Definition: workers.h:114
unsigned nhwmicdevices
Definition: workers.h:315
int bindid
Definition: workers.h:84
static struct _starpu_worker * _starpu_get_worker_struct(unsigned id)
Definition: workers.h:560
starpu_pthread_cond_t ready_cond
Definition: workers.h:236
unsigned state_changing_ctx_waiting
Definition: workers.h:109
int current_bindid
Definition: workers.h:376
static void _starpu_worker_enter_changing_ctx_op(struct _starpu_worker *const worker)
Definition: workers.h:916
unsigned nhwscc
Definition: workers.h:284
unsigned ncpus
Definition: workers.h:292
void _starpu_block_worker(int workerid, starpu_pthread_cond_t *cond, starpu_pthread_mutex_t *mutex)
int current_mic_deviceid
Definition: workers.h:387
static void _starpu_worker_process_block_in_parallel_requests(struct _starpu_worker *const worker)
Definition: workers.h:770
static void _starpu_worker_relax_on_locked(struct _starpu_worker *worker)
Definition: workers.h:1002
unsigned spinning_backoff
Definition: workers.h:170
int current_cuda_gpuid
Definition: workers.h:381
void _starpu_driver_start(struct _starpu_worker *worker, unsigned fut_key, unsigned sync)
static void _starpu_worker_enter_sched_op(struct _starpu_worker *const worker)
Definition: workers.h:825
struct starpu_tree * tree
Definition: workers.h:259
int current_rank
Definition: workers.h:87
unsigned numa_memory_node
Definition: workers.h:92
uint32_t worker_mask
Definition: workers.h:427
unsigned state_sched_op_pending
Definition: workers.h:108
starpu_pthread_t worker_thread
Definition: workers.h:81
int worker_size
Definition: workers.h:88
unsigned ncombinedworkers
Definition: workers.h:250
unsigned nworkers
Definition: workers.h:247
unsigned is_slave_somewhere
Definition: workers.h:191
Definition: workers.h:228
int mic_nodeid
Definition: workers.h:402
unsigned state_block_in_parallel_req
Definition: workers.h:113
uint32_t _starpu_can_submit_cuda_task(void)
uint32_t _starpu_worker_exists(struct starpu_task *)
void _starpu_worker_apply_deferred_ctx_changes(void)
unsigned char pipeline_stuck
Definition: workers.h:150
hwloc_topology_t hwtopology
Definition: workers.h:256
static void _starpu_worker_set_status(int workerid, enum _starpu_worker_status status)
Definition: workers.h:596
unsigned state_changing_ctx_notice
Definition: workers.h:110
int current_scc_deviceid
Definition: workers.h:390
int cpus_nodeid
Definition: workers.h:396
unsigned state_unblock_in_parallel_ack
Definition: workers.h:116
struct starpu_task * current_task
Definition: workers.h:139
starpu_pthread_cond_t sched_cond
Definition: workers.h:97
starpu_pthread_mutex_t sched_mutex
Definition: workers.h:98
static int _starpu_get_disable_kernels(void)
Definition: workers.h:583
unsigned _starpu_worker_can_block(unsigned memnode, struct _starpu_worker *worker)
unsigned nbindid
Definition: workers.h:422
static struct _starpu_worker * _starpu_get_local_worker_key(void)
Definition: workers.h:533
unsigned state_blocked_in_parallel_observed
Definition: workers.h:112
static int _starpu_worker_get_id(void)
Definition: workers.h:633
int opencl_nodeid
Definition: workers.h:400
void _starpu_worker_start(struct _starpu_worker *worker, unsigned fut_key, unsigned sync)
unsigned running
Definition: workers.h:433
starpu_pthread_cond_t started_cond
Definition: workers.h:89
int starpu_worker_get_nids_ctx_free_by_type(enum starpu_worker_archtype type, int *workerids, int maxsize)
int current_opencl_gpuid
Definition: workers.h:384
void _starpu_worker_init(struct _starpu_worker *workerarg, struct _starpu_machine_config *pconfig)
static struct _starpu_sched_ctx * _starpu_get_sched_ctx_struct(unsigned id)
Definition: workers.h:568
unsigned char ntasks
Definition: workers.h:148
unsigned state_keep_awake
Definition: workers.h:155
unsigned nhwpus
Definition: workers.h:269
int mpi_nodeid
Definition: workers.h:406
starpu_pthread_t worker_thread
Definition: workers.h:231