17#ifndef __OPENMP_RUNTIME_SUPPORT_H__
18#define __OPENMP_RUNTIME_SUPPORT_H__
39#pragma GCC visibility push(hidden)
41extern starpu_pthread_key_t omp_thread_key;
42extern starpu_pthread_key_t omp_task_key;
47#define STARPU_OMP_MAX_ACTIVE_LEVELS 1
54 starpu_omp_place_undefined = 0,
55 starpu_omp_place_threads = 1,
56 starpu_omp_place_cores = 2,
57 starpu_omp_place_sockets = 3,
58 starpu_omp_place_numerical = 4
64 int *included_numeric_items;
65 int nb_included_numeric_items;
66 int *excluded_numeric_items;
67 int nb_excluded_numeric_items;
76 int abstract_excluded;
79 int nb_numeric_places;
94 int active_levels_var;
100 unsigned long long run_sched_chunk_var;
104 int max_task_priority_var;
114 unsigned long long def_sched_chunk_var;
139 unsigned long long run_sched_chunk_var;
141 unsigned long long def_sched_chunk_var;
145 int thread_limit_var;
146 int max_active_levels_var;
147 int active_levels_var;
149 int place_partition_var;
151 int default_device_var;
152 int max_task_priority_var;
160 int descendent_task_count;
161 struct starpu_omp_task *leader_task;
167 struct starpu_omp_task *task;
187 starpu_omp_task_state_clear = 0,
188 starpu_omp_task_state_preempted = 1,
189 starpu_omp_task_state_terminated = 2,
190 starpu_omp_task_state_zombie = 3,
196enum starpu_omp_task_wait_on
198 starpu_omp_task_wait_on_task_childs = 1 << 0,
199 starpu_omp_task_wait_on_region_tasks = 1 << 1,
200 starpu_omp_task_wait_on_barrier = 1 << 2,
201 starpu_omp_task_wait_on_group = 1 << 3,
202 starpu_omp_task_wait_on_critical = 1 << 4,
203 starpu_omp_task_wait_on_ordered = 1 << 5,
204 starpu_omp_task_wait_on_lock = 1 << 6,
205 starpu_omp_task_wait_on_nest_lock = 1 << 7,
208enum starpu_omp_task_flags
210 STARPU_OMP_TASK_FLAGS_IMPLICIT = 1 << 0,
211 STARPU_OMP_TASK_FLAGS_UNDEFERRED = 1 << 1,
212 STARPU_OMP_TASK_FLAGS_FINAL = 1 << 2,
213 STARPU_OMP_TASK_FLAGS_UNTIED = 1 << 3,
216LIST_TYPE(starpu_omp_task,
218 struct starpu_omp_task *parent_task;
219 struct starpu_omp_thread *owner_thread;
220 struct starpu_omp_region *owner_region;
221 struct starpu_omp_region *nested_region;
223 int child_task_count;
226 int transaction_pending;
232 unsigned long long ordered_first_i;
233 unsigned long long ordered_nb_i;
237 struct handle_entry *registered_handles;
239 struct starpu_task *starpu_task;
240 struct starpu_codelet cl;
241 void **starpu_buffers;
246 void (*cpu_f)(
void **starpu_buffers,
void *starpu_cl_arg);
247 void (*cuda_f)(
void **starpu_buffers,
void *starpu_cl_arg);
248 void (*opencl_f)(
void **starpu_buffers,
void *starpu_cl_arg);
251 enum starpu_omp_task_flags flags;
276 unsigned long long nb_iterations;
277 unsigned long long grainsize;
278 unsigned long long chunk;
279 unsigned long long begin_i;
280 unsigned long long end_i;
283LIST_TYPE(starpu_omp_thread,
286 struct starpu_omp_task *current_task;
287 struct starpu_omp_region *owner_region;
294 void *initial_thread_stack;
298 int initial_thread_stack_vg_id;
318struct _starpu_omp_nest_lock_internal
323 struct starpu_omp_task *owner_task;
327struct starpu_omp_loop
330 unsigned long long next_iteration;
331 int nb_completed_threads;
332 struct starpu_omp_loop *next_loop;
335 unsigned long long ordered_iteration;
338struct starpu_omp_sections
341 unsigned long long next_section_num;
342 int nb_completed_threads;
343 struct starpu_omp_sections *next_sections;
346struct starpu_omp_region
349 struct starpu_omp_region *parent_region;
350 struct starpu_omp_device *owner_device;
351 struct starpu_omp_thread *master_thread;
353 struct starpu_omp_thread_list thread_list;
355 struct starpu_omp_task **implicit_task_array;
359 struct starpu_omp_task *waiting_task;
361 int bound_explicit_task_count;
363 void *copy_private_data;
365 struct starpu_omp_loop *loop_list;
366 struct starpu_omp_sections *sections_list;
367 struct starpu_task *continuation_starpu_task;
368 struct handle_entry *registered_handles;
372struct starpu_omp_device
380struct starpu_omp_global
383 struct starpu_omp_task *initial_task;
384 struct starpu_omp_thread *initial_thread;
385 struct starpu_omp_region *initial_region;
386 struct starpu_omp_device *initial_device;
390 struct starpu_omp_thread *hash_workers;
392 struct starpu_arbiter *default_arbiter;
393 unsigned nb_starpu_cpu_workers;
394 int *starpu_cpu_worker_ids;
395 int environment_valid;
402extern struct starpu_omp_global *_starpu_omp_global_state;
403extern starpu_pthread_key_t _starpu_omp_thread_key;
404extern starpu_pthread_key_t _starpu_omp_task_key;
405extern double _starpu_omp_clock_ref;
410void _starpu_omp_environment_init(
void);
411void _starpu_omp_environment_exit(
void);
412int _starpu_omp_environment_check(
void);
413struct starpu_omp_thread *_starpu_omp_get_thread(
void);
414struct starpu_omp_region *_starpu_omp_get_region_at_level(
int level) STARPU_ATTRIBUTE_VISIBILITY_DEFAULT;
415struct starpu_omp_task *_starpu_omp_get_task(
void);
416int _starpu_omp_get_region_thread_num(
const struct starpu_omp_region *
const region) STARPU_ATTRIBUTE_VISIBILITY_DEFAULT;
417void _starpu_omp_dummy_init(
void);
418void _starpu_omp_dummy_shutdown(
void);
421#pragma GCC visibility pop
Definition starpu_driver.h:49
int def_sched_var
Definition openmp_runtime_support.h:113
int run_sched_var
Definition openmp_runtime_support.h:99
starpu_omp_place_name
Definition openmp_runtime_support.h:53
int thread_limit_var
Definition openmp_runtime_support.h:92
int place_partition_var
Definition openmp_runtime_support.h:124
int max_active_levels_var
Definition openmp_runtime_support.h:110
int stacksize_var
Definition openmp_runtime_support.h:117
starpu_omp_task_state
Definition openmp_runtime_support.h:186
@ starpu_omp_task_state_target
Definition openmp_runtime_support.h:193
struct starpu_omp_place places
Definition openmp_runtime_support.h:155
int dyn_var
Definition openmp_runtime_support.h:89
int default_device_var
Definition openmp_runtime_support.h:103
int cancel_var
Definition openmp_runtime_support.h:130
Definition openmp_runtime_support.h:172
Definition openmp_runtime_support.h:177
Definition openmp_runtime_support.h:87
Definition openmp_runtime_support.h:108
Definition openmp_runtime_support.h:128
Definition openmp_runtime_support.h:122
Definition openmp_runtime_support.h:134
Definition openmp_runtime_support.h:62
Definition openmp_runtime_support.h:74
Definition openmp_runtime_support.h:159
Definition openmp_runtime_support.h:166
Definition starpu_spinlock.h:82
int workerid
Definition workers.h:166