28 #include <common/config.h>
41 #ifdef STARPU_HAVE_HWLOC
53 #ifdef STARPU_USE_MPI_MASTER_SLAVE
63 #define STARPU_MAX_PIPELINE 4
65 enum initialization { UNINITIALIZED = 0, CHANGING, INITIALIZED };
67 struct _starpu_ctx_change_list;
72 starpu_pthread_mutex_t mutex;
73 enum starpu_worker_archtype arch;
75 struct starpu_perfmodel_arch perf_arch;
95 #ifdef STARPU_SPINLOCK_CHECK
96 const char *relax_on_file;
98 const char *relax_on_func;
99 const char *relax_off_file;
101 const char *relax_off_func;
128 struct _starpu_ctx_change_list ctx_change_list;
129 struct starpu_task_list local_tasks;
135 struct starpu_task *current_tasks[STARPU_MAX_PIPELINE];
136 #ifdef STARPU_SIMGRID
137 starpu_pthread_wait_t wait;
140 struct timespec cl_start;
141 struct timespec cl_end;
147 unsigned worker_is_running;
148 unsigned worker_is_initialized;
163 unsigned removed_from_ctx[STARPU_NMAX_SCHED_CTXS+1];
175 unsigned shares_tasks_lists[STARPU_NMAX_SCHED_CTXS+1];
177 unsigned poped_in_ctx[STARPU_NMAX_SCHED_CTXS+1];
183 unsigned reverse_phase[2];
193 #ifdef STARPU_HAVE_HWLOC
194 hwloc_bitmap_t hwloc_cpu_set;
195 hwloc_obj_t hwloc_obj;
200 char padding[STARPU_CACHELINE_SIZE];
209 int combined_workerid[STARPU_NMAXWORKERS];
212 starpu_pthread_mutex_t count_mutex;
218 #ifdef STARPU_HAVE_HWLOC
219 hwloc_bitmap_t hwloc_cpu_set;
224 char padding[STARPU_CACHELINE_SIZE];
233 starpu_pthread_mutex_t mutex;
240 unsigned set_is_initialized;
243 #ifdef STARPU_USE_MPI_MASTER_SLAVE
255 unsigned nsched_ctxs;
257 #ifdef STARPU_HAVE_HWLOC
294 unsigned nworkerpercuda;
295 int cuda_th_per_stream;
303 unsigned nhwmpidevices;
306 unsigned nmpicores[STARPU_MAXMPIDEVS];
311 unsigned nmicdevices;
314 unsigned nmiccores[STARPU_MAXMICDEVS];
356 #ifdef STARPU_HAVE_HWLOC
363 char currently_bound[STARPU_NMAXWORKERS];
364 char currently_shared[STARPU_NMAXWORKERS];
390 char padding1[STARPU_CACHELINE_SIZE];
400 starpu_pthread_mutex_t submitted_mutex;
403 char padding2[STARPU_CACHELINE_SIZE];
439 extern int _starpu_worker_parallel_blocks;
442 extern int _starpu_keys_initialized STARPU_ATTRIBUTE_INTERNAL;
443 extern starpu_pthread_key_t _starpu_worker_key STARPU_ATTRIBUTE_INTERNAL;
444 extern starpu_pthread_key_t _starpu_worker_set_key STARPU_ATTRIBUTE_INTERNAL;
448 int *_starpu_get_argc();
449 char ***_starpu_get_argv();
464 ANNOTATE_HAPPENS_AFTER(&_starpu_config.running);
465 ret = _starpu_config.running;
466 ANNOTATE_HAPPENS_BEFORE(&_starpu_config.running);
493 void _starpu_block_worker(
int workerid, starpu_pthread_cond_t *cond, starpu_pthread_mutex_t *mutex);
500 static inline unsigned _starpu_worker_get_count(
void)
502 return _starpu_config.topology.nworkers;
504 #define starpu_worker_get_count _starpu_worker_get_count
511 STARPU_ASSERT(_starpu_keys_initialized);
512 STARPU_PTHREAD_SETSPECIFIC(_starpu_worker_key, worker);
519 if (!_starpu_keys_initialized)
521 return (
struct _starpu_worker *) STARPU_PTHREAD_GETSPECIFIC(_starpu_worker_key);
529 STARPU_ASSERT(_starpu_keys_initialized);
530 STARPU_PTHREAD_SETSPECIFIC(_starpu_worker_set_key, worker);
537 if (!_starpu_keys_initialized)
539 return (
struct _starpu_worker_set *) STARPU_PTHREAD_GETSPECIFIC(_starpu_worker_set_key);
546 STARPU_ASSERT(
id < starpu_worker_get_count());
547 return &_starpu_config.workers[id];
554 return (
id > STARPU_NMAX_SCHED_CTXS) ? NULL : &_starpu_config.sched_ctxs[
id];
563 return &_starpu_config;
569 return _starpu_config.disable_kernels;
575 return _starpu_config.workers[workerid].status;
582 _starpu_config.workers[workerid].status = status;
588 return &_starpu_config.sched_ctxs[STARPU_GLOBAL_SCHED_CTX];
591 int starpu_worker_get_nids_by_type(
enum starpu_worker_archtype type,
int *workerids,
int maxsize);
597 static inline unsigned _starpu_worker_mutex_is_sched_mutex(
int workerid, starpu_pthread_mutex_t *mutex)
603 static inline int _starpu_worker_get_nsched_ctxs(
int workerid)
605 return _starpu_config.workers[
workerid].nsched_ctxs;
613 return _starpu_config.topology.nsched_ctxs;
633 #define starpu_worker_get_id _starpu_worker_get_id
641 int id = starpu_worker_get_id();
642 STARPU_ASSERT_MSG(
id>=0,
"%s:%d Cannot be called from outside a worker\n", f, l);
645 #define _starpu_worker_get_id_check(f,l) __starpu_worker_get_id_check(f,l)
647 enum starpu_node_kind _starpu_worker_get_node_kind(
enum starpu_worker_archtype type);
649 void _starpu_worker_set_stream_ctx(
unsigned workerid,
struct _starpu_sched_ctx *sched_ctx);
651 struct _starpu_sched_ctx* _starpu_worker_get_ctx_stream(
unsigned stream_workerid);
660 _starpu_worker_parallel_blocks = 1;
681 STARPU_PTHREAD_COND_BROADCAST(&worker->
sched_cond);
682 #ifdef STARPU_SIMGRID
683 starpu_pthread_queue_broadcast(&_starpu_simgrid_task_queue[worker->
workerid]);
699 STARPU_PTHREAD_COND_BROADCAST(&worker->
sched_cond);
728 STARPU_PTHREAD_COND_BROADCAST(&worker->
sched_cond);
742 STARPU_PTHREAD_COND_BROADCAST(&worker->
sched_cond);
771 STARPU_PTHREAD_COND_BROADCAST(&worker->
sched_cond);
788 STARPU_PTHREAD_COND_BROADCAST(&worker->
sched_cond);
808 #ifdef STARPU_SPINLOCK_CHECK
809 static inline void __starpu_worker_enter_sched_op(
struct _starpu_worker *
const worker,
const char*file,
int line,
const char* func)
847 #ifdef STARPU_SPINLOCK_CHECK
848 worker->relax_on_file = file;
849 worker->relax_on_line = line;
850 worker->relax_on_func = func;
853 #ifdef STARPU_SPINLOCK_CHECK
854 #define _starpu_worker_enter_sched_op(worker) __starpu_worker_enter_sched_op((worker), __FILE__, __LINE__, __starpu_func__)
862 #ifdef STARPU_SPINLOCK_CHECK
863 static inline void __starpu_worker_leave_sched_op(
struct _starpu_worker *
const worker,
const char*file,
int line,
const char* func)
865 static inline void _starpu_worker_leave_sched_op(
struct _starpu_worker *
const worker)
870 #ifdef STARPU_SPINLOCK_CHECK
871 worker->relax_off_file = file;
872 worker->relax_off_line = line;
873 worker->relax_off_func = func;
876 STARPU_PTHREAD_COND_BROADCAST(&worker->
sched_cond);
879 #ifdef STARPU_SPINLOCK_CHECK
880 #define _starpu_worker_leave_sched_op(worker) __starpu_worker_leave_sched_op((worker), __FILE__, __LINE__, __starpu_func__)
883 static inline int _starpu_worker_sched_op_pending(
void)
885 int workerid = starpu_worker_get_id();
889 STARPU_ASSERT(worker != NULL);
925 STARPU_PTHREAD_COND_BROADCAST(&worker->
sched_cond);
926 #ifdef STARPU_SIMGRID
927 starpu_pthread_queue_broadcast(&_starpu_simgrid_task_queue[worker->
workerid]);
948 STARPU_PTHREAD_COND_BROADCAST(&worker->
sched_cond);
953 #ifdef STARPU_SPINLOCK_CHECK
954 static inline void __starpu_worker_relax_on(
const char*file,
int line,
const char* func)
964 STARPU_PTHREAD_MUTEX_LOCK_SCHED(&worker->
sched_mutex);
965 #ifdef STARPU_SPINLOCK_CHECK
966 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);
971 #ifdef STARPU_SPINLOCK_CHECK
972 worker->relax_on_file = file;
973 worker->relax_on_line = line;
974 worker->relax_on_func = func;
976 STARPU_PTHREAD_COND_BROADCAST(&worker->
sched_cond);
977 STARPU_PTHREAD_MUTEX_UNLOCK_SCHED(&worker->
sched_mutex);
979 #ifdef STARPU_SPINLOCK_CHECK
980 #define _starpu_worker_relax_on() __starpu_worker_relax_on(__FILE__, __LINE__, __starpu_func__)
982 #define starpu_worker_relax_on _starpu_worker_relax_on
985 #ifdef STARPU_SPINLOCK_CHECK
986 static inline void __starpu_worker_relax_on_locked(
struct _starpu_worker *worker,
const char*file,
int line,
const char* func)
993 #ifdef STARPU_SPINLOCK_CHECK
994 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);
999 #ifdef STARPU_SPINLOCK_CHECK
1000 worker->relax_on_file = file;
1001 worker->relax_on_line = line;
1002 worker->relax_on_func = func;
1004 STARPU_PTHREAD_COND_BROADCAST(&worker->
sched_cond);
1006 #ifdef STARPU_SPINLOCK_CHECK
1007 #define _starpu_worker_relax_on_locked(worker) __starpu_worker_relax_on_locked(worker,__FILE__, __LINE__, __starpu_func__)
1010 #ifdef STARPU_SPINLOCK_CHECK
1011 static inline void __starpu_worker_relax_off(
const char*file,
int line,
const char* func)
1013 static inline void _starpu_worker_relax_off(
void)
1016 int workerid = starpu_worker_get_id();
1020 STARPU_ASSERT(worker != NULL);
1023 STARPU_PTHREAD_MUTEX_LOCK_SCHED(&worker->
sched_mutex);
1024 #ifdef STARPU_SPINLOCK_CHECK
1025 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);
1030 #ifdef STARPU_SPINLOCK_CHECK
1031 worker->relax_off_file = file;
1032 worker->relax_off_line = line;
1033 worker->relax_off_func = func;
1035 STARPU_PTHREAD_MUTEX_UNLOCK_SCHED(&worker->
sched_mutex);
1037 #ifdef STARPU_SPINLOCK_CHECK
1038 #define _starpu_worker_relax_off() __starpu_worker_relax_off(__FILE__, __LINE__, __starpu_func__)
1040 #define starpu_worker_relax_off _starpu_worker_relax_off
1042 #ifdef STARPU_SPINLOCK_CHECK
1043 static inline void __starpu_worker_relax_off_locked(
const char*file,
int line,
const char* func)
1045 static inline void _starpu_worker_relax_off_locked(
void)
1048 int workerid = starpu_worker_get_id();
1052 STARPU_ASSERT(worker != NULL);
1055 #ifdef STARPU_SPINLOCK_CHECK
1056 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);
1061 #ifdef STARPU_SPINLOCK_CHECK
1062 worker->relax_off_file = file;
1063 worker->relax_off_line = line;
1064 worker->relax_off_func = func;
1067 #ifdef STARPU_SPINLOCK_CHECK
1068 #define _starpu_worker_relax_off_locked() __starpu_worker_relax_off_locked(__FILE__, __LINE__, __starpu_func__)
1071 static inline int _starpu_worker_get_relax_state(
void)
1073 int workerid = starpu_worker_get_id();
1077 STARPU_ASSERT(worker != NULL);
1080 #define starpu_worker_get_relax_state _starpu_worker_get_relax_state
1089 STARPU_ASSERT(worker != NULL);
1090 int cur_workerid = starpu_worker_get_id();
1091 if (workerid != cur_workerid)
1093 starpu_worker_relax_on();
1095 STARPU_PTHREAD_MUTEX_LOCK_SCHED(&worker->
sched_mutex);
1103 STARPU_PTHREAD_MUTEX_LOCK_SCHED(&worker->
sched_mutex);
1107 static inline int _starpu_worker_trylock(
int workerid)
1110 int cur_workerid = cur_worker->
workerid;
1112 STARPU_ASSERT(worker != NULL);
1115 int ret = STARPU_PTHREAD_MUTEX_TRYLOCK_SCHED(&cur_worker->
sched_mutex);
1118 if (workerid == cur_workerid)
1123 ret = STARPU_PTHREAD_MUTEX_TRYLOCK_SCHED(&worker->
sched_mutex);
1129 STARPU_PTHREAD_MUTEX_UNLOCK_SCHED(&worker->
sched_mutex);
1133 STARPU_PTHREAD_MUTEX_UNLOCK_SCHED(&cur_worker->
sched_mutex);
1137 static inline void _starpu_worker_unlock(
int workerid)
1140 STARPU_ASSERT(worker != NULL);
1141 STARPU_PTHREAD_MUTEX_UNLOCK_SCHED(&worker->
sched_mutex);
1142 int cur_workerid = starpu_worker_get_id();
1143 if (workerid != cur_workerid)
1145 starpu_worker_relax_off();
1149 static inline void _starpu_worker_lock_self(
void)
1151 int workerid = starpu_worker_get_id_check();
1153 STARPU_ASSERT(worker != NULL);
1154 STARPU_PTHREAD_MUTEX_LOCK_SCHED(&worker->
sched_mutex);
1157 static inline void _starpu_worker_unlock_self(
void)
1159 int workerid = starpu_worker_get_id_check();
1161 STARPU_ASSERT(worker != NULL);
1162 STARPU_PTHREAD_MUTEX_UNLOCK_SCHED(&worker->
sched_mutex);
1165 static inline int _starpu_wake_worker_relax(
int workerid)
1168 int ret = starpu_wake_worker_locked(workerid);
1169 _starpu_worker_unlock(workerid);
1173 int starpu_wake_worker_relax_light(
int workerid);
1183 #endif // __WORKERS_H__
struct starpu_task ** local_ordered_tasks
Definition: workers.h:130
void _starpu_may_pause(void)
unsigned nhwmpicores[STARPU_MAXMPIDEVS]
Definition: workers.h:305
unsigned devid
Definition: workers.h:77
static unsigned __starpu_worker_get_id_check(const char *f, int l)
Definition: workers.h:637
static void _starpu_worker_relax_on(void)
Definition: workers.h:956
int pause_depth
Definition: workers.h:428
unsigned char pipeline_length
Definition: workers.h:144
unsigned nhwmiccores[STARPU_MAXMICDEVS]
Definition: workers.h:313
unsigned ncudagpus
Definition: workers.h:293
static void _starpu_worker_request_blocking_in_parallel(struct _starpu_worker *const worker)
Definition: workers.h:658
int workerid
Definition: workers.h:80
unsigned state_unblock_in_parallel_req
Definition: workers.h:110
unsigned current_ordered_task_order
Definition: workers.h:133
static unsigned _starpu_get_nsched_ctxs(void)
Definition: workers.h:609
unsigned subworkerid
Definition: workers.h:78
unsigned nhwcudagpus
Definition: workers.h:277
unsigned nb_buffers_totransfer
Definition: workers.h:168
struct _starpu_combined_worker combined_workers[STARPU_NMAX_COMBINEDWORKERS]
Definition: workers.h:398
int current_mpi_deviceid
Definition: workers.h:376
unsigned memory_node
Definition: workers.h:208
unsigned nhwopenclgpus
Definition: workers.h:282
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:944
unsigned nmpidevices
Definition: workers.h:302
unsigned workers_cuda_gpuid[STARPU_NMAXWORKERS]
Definition: workers.h:331
int combined_workerid
Definition: workers.h:81
unsigned workers_mpi_ms_deviceid[STARPU_NMAXWORKERS]
Definition: workers.h:349
struct _starpu_sched_ctx sched_ctxs[STARPU_NMAX_SCHED_CTXS+1]
Definition: workers.h:431
Definition: workers.h:352
struct starpu_perfmodel_arch perf_arch
Definition: workers.h:205
unsigned has_prev_init
Definition: workers.h:161
unsigned run_by_starpu
Definition: workers.h:153
unsigned nsched_ctxs
Definition: workers.h:158
starpu_pthread_t thread_changing_ctx
Definition: workers.h:120
static struct _starpu_machine_config * _starpu_get_machine_config(void)
Definition: workers.h:561
void _starpu_set_argc_argv(int *argc, char ***argv)
uint32_t _starpu_can_submit_opencl_task(void)
unsigned started
Definition: workers.h:236
static void _starpu_set_local_worker_set_key(struct _starpu_worker_set *worker)
Definition: workers.h:527
int cuda_nodeid
Definition: workers.h:381
uint32_t worker_mask
Definition: workers.h:74
static struct _starpu_sched_ctx * _starpu_get_initial_sched_ctx(void)
Definition: workers.h:586
unsigned current_ordered_task
Definition: workers.h:132
unsigned local_ordered_tasks_size
Definition: workers.h:131
static void _starpu_worker_lock(int workerid)
Definition: workers.h:1086
static void _starpu_worker_request_unblocking_in_parallel(struct _starpu_worker *const worker)
Definition: workers.h:707
unsigned state_relax_refcnt
Definition: workers.h:94
struct starpu_task * task_transferring
Definition: workers.h:169
Definition: workers.h:247
unsigned pop_ctx_priority
Definition: workers.h:185
Definition: barrier_counter.h:26
static void _starpu_set_local_worker_key(struct _starpu_worker *worker)
Definition: workers.h:509
unsigned nhwmpi
Definition: workers.h:287
static struct _starpu_worker_set * _starpu_get_local_worker_set_key(void)
Definition: workers.h:535
unsigned block_in_parallel_ref_count
Definition: workers.h:119
unsigned submitting
Definition: workers.h:434
uint32_t _starpu_can_submit_cpu_task(void)
Definition: workers.h:203
uint32_t worker_mask
Definition: workers.h:206
unsigned id
Definition: sched_ctx.h:48
void _starpu_conf_check_environment(struct starpu_conf *conf)
starpu_pthread_cond_t ready_cond
Definition: workers.h:85
unsigned nb_buffers_transferred
Definition: workers.h:167
unsigned char first_task
Definition: workers.h:142
Definition: sched_ctx.h:45
unsigned memory_node
Definition: workers.h:86
unsigned nhwcpus
Definition: workers.h:267
unsigned nopenclgpus
Definition: workers.h:299
unsigned state_blocked_in_parallel
Definition: workers.h:106
struct starpu_conf conf
Definition: workers.h:419
static unsigned _starpu_machine_is_running(void)
Definition: workers.h:458
static enum _starpu_worker_status _starpu_worker_get_status(int workerid)
Definition: workers.h:573
unsigned state_block_in_parallel_ack
Definition: workers.h:109
unsigned nhwmicdevices
Definition: workers.h:310
int bindid
Definition: workers.h:79
struct _starpu_machine_config::@4 * bindid_workers
static struct _starpu_worker * _starpu_get_worker_struct(unsigned id)
Definition: workers.h:544
starpu_pthread_cond_t ready_cond
Definition: workers.h:239
unsigned state_changing_ctx_waiting
Definition: workers.h:104
int current_bindid
Definition: workers.h:362
static void _starpu_worker_enter_changing_ctx_op(struct _starpu_worker *const worker)
Definition: workers.h:902
unsigned ncpus
Definition: workers.h:290
void _starpu_block_worker(int workerid, starpu_pthread_cond_t *cond, starpu_pthread_mutex_t *mutex)
int current_mic_deviceid
Definition: workers.h:373
static void _starpu_worker_process_block_in_parallel_requests(struct _starpu_worker *const worker)
Definition: workers.h:756
unsigned workers_opencl_gpuid[STARPU_NMAXWORKERS]
Definition: workers.h:339
static void _starpu_worker_relax_on_locked(struct _starpu_worker *worker)
Definition: workers.h:988
unsigned spinning_backoff
Definition: workers.h:165
int current_cuda_gpuid
Definition: workers.h:367
struct _starpu_worker_set * set
Definition: workers.h:146
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:811
struct starpu_tree * tree
Definition: workers.h:262
int current_rank
Definition: workers.h:82
Definition: sched_ctx_list.h:24
unsigned numa_memory_node
Definition: workers.h:87
uint32_t worker_mask
Definition: workers.h:416
unsigned state_sched_op_pending
Definition: workers.h:103
starpu_pthread_t worker_thread
Definition: workers.h:76
int worker_size
Definition: workers.h:83
unsigned ncombinedworkers
Definition: workers.h:253
unsigned nworkers
Definition: workers.h:250
unsigned is_slave_somewhere
Definition: workers.h:186
Definition: workers.h:231
int mic_nodeid
Definition: workers.h:385
unsigned state_block_in_parallel_req
Definition: workers.h:108
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:145
unsigned workers_bindid[STARPU_NMAXWORKERS]
Definition: workers.h:323
hwloc_topology_t hwtopology
Definition: workers.h:259
static void _starpu_worker_set_status(int workerid, enum _starpu_worker_status status)
Definition: workers.h:580
unsigned state_changing_ctx_notice
Definition: workers.h:105
int cpus_nodeid
Definition: workers.h:379
unsigned state_unblock_in_parallel_ack
Definition: workers.h:111
struct starpu_task * current_task
Definition: workers.h:134
starpu_pthread_cond_t sched_cond
Definition: workers.h:92
starpu_pthread_mutex_t sched_mutex
Definition: workers.h:93
static int _starpu_get_disable_kernels(void)
Definition: workers.h:567
unsigned _starpu_worker_can_block(unsigned memnode, struct _starpu_worker *worker)
unsigned nbindid
Definition: workers.h:411
static struct _starpu_worker * _starpu_get_local_worker_key(void)
Definition: workers.h:517
unsigned state_blocked_in_parallel_observed
Definition: workers.h:107
static int _starpu_worker_get_id(void)
Definition: workers.h:617
int opencl_nodeid
Definition: workers.h:383
void _starpu_worker_start(struct _starpu_worker *worker, unsigned fut_key, unsigned sync)
unsigned running
Definition: workers.h:422
starpu_pthread_cond_t started_cond
Definition: workers.h:84
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:370
void _starpu_worker_init(struct _starpu_worker *workerarg, struct _starpu_machine_config *pconfig)
struct _starpu_worker workers[STARPU_NMAXWORKERS]
Definition: workers.h:394
_starpu_worker_status
Definition: errorcheck.h:25
static struct _starpu_sched_ctx * _starpu_get_sched_ctx_struct(unsigned id)
Definition: workers.h:552
unsigned char ntasks
Definition: workers.h:143
unsigned state_keep_awake
Definition: workers.h:150
unsigned nhwpus
Definition: workers.h:272
int mpi_nodeid
Definition: workers.h:387
starpu_pthread_t worker_thread
Definition: workers.h:234