17 #ifndef __OPENMP_RUNTIME_SUPPORT_H__
18 #define __OPENMP_RUNTIME_SUPPORT_H__
39 extern starpu_pthread_key_t omp_thread_key;
40 extern starpu_pthread_key_t omp_task_key;
45 #define STARPU_OMP_MAX_ACTIVE_LEVELS 1
52 starpu_omp_place_undefined = 0,
53 starpu_omp_place_threads = 1,
54 starpu_omp_place_cores = 2,
55 starpu_omp_place_sockets = 3,
56 starpu_omp_place_numerical = 4
62 int *included_numeric_items;
63 int nb_included_numeric_items;
64 int *excluded_numeric_items;
65 int nb_excluded_numeric_items;
74 int abstract_excluded;
77 int nb_numeric_places;
92 int active_levels_var;
98 unsigned long long run_sched_chunk_var;
102 int max_task_priority_var;
112 unsigned long long def_sched_chunk_var;
137 unsigned long long run_sched_chunk_var;
139 unsigned long long def_sched_chunk_var;
143 int thread_limit_var;
144 int max_active_levels_var;
145 int active_levels_var;
147 int place_partition_var;
149 int default_device_var;
150 int max_task_priority_var;
158 int descendent_task_count;
159 struct starpu_omp_task *leader_task;
165 struct starpu_omp_task *task;
185 starpu_omp_task_state_clear = 0,
186 starpu_omp_task_state_preempted = 1,
187 starpu_omp_task_state_terminated = 2,
188 starpu_omp_task_state_zombie = 3,
194 enum starpu_omp_task_wait_on
196 starpu_omp_task_wait_on_task_childs = 1 << 0,
197 starpu_omp_task_wait_on_region_tasks = 1 << 1,
198 starpu_omp_task_wait_on_barrier = 1 << 2,
199 starpu_omp_task_wait_on_group = 1 << 3,
200 starpu_omp_task_wait_on_critical = 1 << 4,
201 starpu_omp_task_wait_on_ordered = 1 << 5,
202 starpu_omp_task_wait_on_lock = 1 << 6,
203 starpu_omp_task_wait_on_nest_lock = 1 << 7,
206 enum starpu_omp_task_flags
208 STARPU_OMP_TASK_FLAGS_IMPLICIT = 1 << 0,
209 STARPU_OMP_TASK_FLAGS_UNDEFERRED = 1 << 1,
210 STARPU_OMP_TASK_FLAGS_FINAL = 1 << 2,
211 STARPU_OMP_TASK_FLAGS_UNTIED = 1 << 3,
214 LIST_TYPE(starpu_omp_task,
216 struct starpu_omp_task *parent_task;
217 struct starpu_omp_thread *owner_thread;
218 struct starpu_omp_region *owner_region;
219 struct starpu_omp_region *nested_region;
221 int child_task_count;
224 int transaction_pending;
230 unsigned long long ordered_first_i;
231 unsigned long long ordered_nb_i;
235 struct handle_entry *registered_handles;
237 struct starpu_task *starpu_task;
238 struct starpu_codelet cl;
239 void **starpu_buffers;
243 void (*cpu_f)(
void **starpu_buffers,
void *starpu_cl_arg);
244 #ifdef STARPU_USE_CUDA
245 void (*cuda_f)(
void **starpu_buffers,
void *starpu_cl_arg);
247 #ifdef STARPU_USE_OPENCL
248 void (*opencl_f)(
void **starpu_buffers,
void *starpu_cl_arg);
252 enum starpu_omp_task_flags flags;
277 unsigned long long nb_iterations;
278 unsigned long long grainsize;
279 unsigned long long chunk;
280 unsigned long long begin_i;
281 unsigned long long end_i;
284 LIST_TYPE(starpu_omp_thread,
287 struct starpu_omp_task *current_task;
288 struct starpu_omp_region *owner_region;
295 void *initial_thread_stack;
299 int initial_thread_stack_vg_id;
308 struct starpu_driver starpu_driver;
312 struct _starpu_omp_lock_internal
319 struct _starpu_omp_nest_lock_internal
324 struct starpu_omp_task *owner_task;
328 struct starpu_omp_loop
331 unsigned long long next_iteration;
332 int nb_completed_threads;
333 struct starpu_omp_loop *next_loop;
336 unsigned long long ordered_iteration;
339 struct starpu_omp_sections
342 unsigned long long next_section_num;
343 int nb_completed_threads;
344 struct starpu_omp_sections *next_sections;
347 struct starpu_omp_region
350 struct starpu_omp_region *parent_region;
351 struct starpu_omp_device *owner_device;
352 struct starpu_omp_thread *master_thread;
354 struct starpu_omp_thread_list thread_list;
356 struct starpu_omp_task **implicit_task_array;
360 struct starpu_omp_task *waiting_task;
362 int bound_explicit_task_count;
364 void *copy_private_data;
366 struct starpu_omp_loop *loop_list;
367 struct starpu_omp_sections *sections_list;
368 struct starpu_task *continuation_starpu_task;
369 struct handle_entry *registered_handles;
373 struct starpu_omp_device
381 struct starpu_omp_global
384 struct starpu_omp_task *initial_task;
385 struct starpu_omp_thread *initial_thread;
386 struct starpu_omp_region *initial_region;
387 struct starpu_omp_device *initial_device;
391 struct starpu_omp_thread *hash_workers;
393 struct starpu_arbiter *default_arbiter;
394 unsigned nb_starpu_cpu_workers;
395 int *starpu_cpu_worker_ids;
396 int environment_valid;
403 extern struct starpu_omp_global *_starpu_omp_global_state;
404 extern double _starpu_omp_clock_ref;
409 void _starpu_omp_environment_init(
void);
410 void _starpu_omp_environment_exit(
void);
411 int _starpu_omp_environment_check(
void);
412 struct starpu_omp_thread *_starpu_omp_get_thread(
void);
413 struct starpu_omp_region *_starpu_omp_get_region_at_level(
int level);
414 struct starpu_omp_task *_starpu_omp_get_task(
void);
415 int _starpu_omp_get_region_thread_num(
const struct starpu_omp_region *
const region);
416 void _starpu_omp_dummy_init(
void);
417 void _starpu_omp_dummy_shutdown(
void);
int def_sched_var
Definition: openmp_runtime_support.h:111
int run_sched_var
Definition: openmp_runtime_support.h:97
starpu_omp_place_name
Definition: openmp_runtime_support.h:51
int thread_limit_var
Definition: openmp_runtime_support.h:90
int place_partition_var
Definition: openmp_runtime_support.h:122
int max_active_levels_var
Definition: openmp_runtime_support.h:108
int stacksize_var
Definition: openmp_runtime_support.h:115
starpu_omp_task_state
Definition: openmp_runtime_support.h:184
@ starpu_omp_task_state_target
Definition: openmp_runtime_support.h:191
struct starpu_omp_place places
Definition: openmp_runtime_support.h:153
int dyn_var
Definition: openmp_runtime_support.h:87
int default_device_var
Definition: openmp_runtime_support.h:101
int cancel_var
Definition: openmp_runtime_support.h:128
Definition: openmp_runtime_support.h:170
Definition: openmp_runtime_support.h:175
Definition: openmp_runtime_support.h:85
Definition: openmp_runtime_support.h:106
Definition: openmp_runtime_support.h:126
Definition: openmp_runtime_support.h:120
Definition: openmp_runtime_support.h:132
Definition: openmp_runtime_support.h:60
Definition: openmp_runtime_support.h:72
Definition: openmp_runtime_support.h:157
Definition: openmp_runtime_support.h:164
Definition: starpu_spinlock.h:82
Definition: uthash.h:1015