StarPU Handbook
starpu_openmp.h
Go to the documentation of this file.
1 /* StarPU --- Runtime system for heterogeneous multicore architectures.
2  *
3  * Copyright (C) 2014-2015,2017 CNRS
4  * Copyright (C) 2014-2015 Inria
5  *
6  * StarPU is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU Lesser General Public License as published by
8  * the Free Software Foundation; either version 2.1 of the License, or (at
9  * your option) any later version.
10  *
11  * StarPU is distributed in the hope that it will be useful, but
12  * WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14  *
15  * See the GNU Lesser General Public License in COPYING.LGPL for more details.
16  */
17 
18 #ifndef __STARPU_OPENMP_H__
19 #define __STARPU_OPENMP_H__
20 
21 #include <starpu_config.h>
22 
23 #if defined STARPU_OPENMP
24 typedef struct { void *internal; } starpu_omp_lock_t;
25 typedef struct { void *internal; } starpu_omp_nest_lock_t;
26 
28 {
35 };
36 
38 {
45 };
46 
48 {
51  void *cl_arg;
52  size_t cl_arg_size;
53  unsigned cl_arg_free;
54 
55  int if_clause;
57 };
58 
60 {
63  void *cl_arg;
64  size_t cl_arg_size;
65  unsigned cl_arg_free;
66  int priority;
67 
68  int if_clause;
72 };
73 
74 #ifdef __cplusplus
75 extern "C"
76 {
77 #define __STARPU_OMP_NOTHROW throw ()
78 #else
79 #define __STARPU_OMP_NOTHROW __attribute__((__nothrow__))
80 #endif
81 
82 extern int starpu_omp_init(void) __STARPU_OMP_NOTHROW;
83 extern void starpu_omp_shutdown(void) __STARPU_OMP_NOTHROW;
84 
85 extern void starpu_omp_parallel_region(const struct starpu_omp_parallel_region_attr *attr) __STARPU_OMP_NOTHROW;
86 
87 extern void starpu_omp_barrier(void) __STARPU_OMP_NOTHROW;
88 
89 extern void starpu_omp_master(void (*f)(void *arg), void *arg) __STARPU_OMP_NOTHROW;
90 extern int starpu_omp_master_inline(void) __STARPU_OMP_NOTHROW;
91 
92 extern void starpu_omp_single(void (*f)(void *arg), void *arg, int nowait) __STARPU_OMP_NOTHROW;
93 extern int starpu_omp_single_inline(void) __STARPU_OMP_NOTHROW;
94 extern void starpu_omp_single_copyprivate(void (*f)(void *arg, void *data, unsigned long long data_size), void *arg, void *data, unsigned long long data_size) __STARPU_OMP_NOTHROW;
95 extern void *starpu_omp_single_copyprivate_inline_begin(void *data) __STARPU_OMP_NOTHROW;
96 extern void starpu_omp_single_copyprivate_inline_end(void) __STARPU_OMP_NOTHROW;
97 
98 extern void starpu_omp_critical(void (*f)(void *arg), void *arg, const char *name) __STARPU_OMP_NOTHROW;
99 extern void starpu_omp_critical_inline_begin(const char *name) __STARPU_OMP_NOTHROW;
100 extern void starpu_omp_critical_inline_end(const char *name) __STARPU_OMP_NOTHROW;
101 
102 extern void starpu_omp_task_region(const struct starpu_omp_task_region_attr *attr) __STARPU_OMP_NOTHROW;
103 extern void starpu_omp_taskwait(void) __STARPU_OMP_NOTHROW;
104 extern void starpu_omp_taskgroup(void (*f)(void *arg), void *arg) __STARPU_OMP_NOTHROW;
105 extern void starpu_omp_taskgroup_inline_begin(void) __STARPU_OMP_NOTHROW;
106 extern void starpu_omp_taskgroup_inline_end(void) __STARPU_OMP_NOTHROW;
107 
108 extern void starpu_omp_for(void (*f)(unsigned long long _first_i, unsigned long long _nb_i, void *arg), void *arg, unsigned long long nb_iterations, unsigned long long chunk, int schedule, int ordered, int nowait) __STARPU_OMP_NOTHROW;
109 extern int starpu_omp_for_inline_first(unsigned long long nb_iterations, unsigned long long chunk, int schedule, int ordered, unsigned long long *_first_i, unsigned long long *_nb_i) __STARPU_OMP_NOTHROW;
110 extern int starpu_omp_for_inline_next(unsigned long long nb_iterations, unsigned long long chunk, int schedule, int ordered, unsigned long long *_first_i, unsigned long long *_nb_i) __STARPU_OMP_NOTHROW;
111 
112 extern void starpu_omp_for_alt(void (*f)(unsigned long long _begin_i, unsigned long long _end_i, void *arg), void *arg, unsigned long long nb_iterations, unsigned long long chunk, int schedule, int ordered, int nowait) __STARPU_OMP_NOTHROW;
113 extern int starpu_omp_for_inline_first_alt(unsigned long long nb_iterations, unsigned long long chunk, int schedule, int ordered, unsigned long long *_begin_i, unsigned long long *_end_i) __STARPU_OMP_NOTHROW;
114 extern int starpu_omp_for_inline_next_alt(unsigned long long nb_iterations, unsigned long long chunk, int schedule, int ordered, unsigned long long *_begin_i, unsigned long long *_end_i) __STARPU_OMP_NOTHROW;
115 
116 extern void starpu_omp_ordered_inline_begin(void) __STARPU_OMP_NOTHROW;
117 extern void starpu_omp_ordered_inline_end(void) __STARPU_OMP_NOTHROW;
118 extern void starpu_omp_ordered(void (*f)(void *arg), void *arg) __STARPU_OMP_NOTHROW;
119 
120 extern void starpu_omp_sections(unsigned long long nb_sections, void (**section_f)(void *arg), void **section_arg, int nowait) __STARPU_OMP_NOTHROW;
121 extern void starpu_omp_sections_combined(unsigned long long nb_sections, void (*section_f)(unsigned long long section_num, void *arg), void *section_arg, int nowait) __STARPU_OMP_NOTHROW;
122 
123 extern void starpu_omp_set_num_threads(int threads) __STARPU_OMP_NOTHROW;
124 extern int starpu_omp_get_num_threads() __STARPU_OMP_NOTHROW;
125 extern int starpu_omp_get_thread_num() __STARPU_OMP_NOTHROW;
126 extern int starpu_omp_get_max_threads() __STARPU_OMP_NOTHROW;
127 extern int starpu_omp_get_num_procs(void) __STARPU_OMP_NOTHROW;
128 extern int starpu_omp_in_parallel(void) __STARPU_OMP_NOTHROW;
129 extern void starpu_omp_set_dynamic(int dynamic_threads) __STARPU_OMP_NOTHROW;
130 extern int starpu_omp_get_dynamic(void) __STARPU_OMP_NOTHROW;
131 extern void starpu_omp_set_nested(int nested) __STARPU_OMP_NOTHROW;
132 extern int starpu_omp_get_nested(void) __STARPU_OMP_NOTHROW;
133 extern int starpu_omp_get_cancellation(void) __STARPU_OMP_NOTHROW;
134 extern void starpu_omp_set_schedule(enum starpu_omp_sched_value kind, int modifier) __STARPU_OMP_NOTHROW;
135 extern void starpu_omp_get_schedule(enum starpu_omp_sched_value *kind, int *modifier) __STARPU_OMP_NOTHROW;
136 extern int starpu_omp_get_thread_limit(void) __STARPU_OMP_NOTHROW;
137 extern void starpu_omp_set_max_active_levels(int max_levels) __STARPU_OMP_NOTHROW;
138 extern int starpu_omp_get_max_active_levels(void) __STARPU_OMP_NOTHROW;
139 extern int starpu_omp_get_level(void) __STARPU_OMP_NOTHROW;
140 extern int starpu_omp_get_ancestor_thread_num(int level) __STARPU_OMP_NOTHROW;
141 extern int starpu_omp_get_team_size(int level) __STARPU_OMP_NOTHROW;
142 extern int starpu_omp_get_active_level(void) __STARPU_OMP_NOTHROW;
143 extern int starpu_omp_in_final(void) __STARPU_OMP_NOTHROW;
144 extern enum starpu_omp_proc_bind_value starpu_omp_get_proc_bind(void) __STARPU_OMP_NOTHROW;
145 extern void starpu_omp_set_default_device(int device_num) __STARPU_OMP_NOTHROW;
146 extern int starpu_omp_get_default_device(void) __STARPU_OMP_NOTHROW;
147 extern int starpu_omp_get_num_devices(void) __STARPU_OMP_NOTHROW;
148 extern int starpu_omp_get_num_teams(void) __STARPU_OMP_NOTHROW;
149 extern int starpu_omp_get_team_num(void) __STARPU_OMP_NOTHROW;
150 extern int starpu_omp_is_initial_device(void) __STARPU_OMP_NOTHROW;
151 extern void starpu_omp_init_lock(starpu_omp_lock_t *lock) __STARPU_OMP_NOTHROW;
152 extern void starpu_omp_destroy_lock(starpu_omp_lock_t *lock) __STARPU_OMP_NOTHROW;
153 extern void starpu_omp_set_lock(starpu_omp_lock_t *lock) __STARPU_OMP_NOTHROW;
154 extern void starpu_omp_unset_lock(starpu_omp_lock_t *lock) __STARPU_OMP_NOTHROW;
155 extern int starpu_omp_test_lock(starpu_omp_lock_t *lock) __STARPU_OMP_NOTHROW;
156 extern void starpu_omp_init_nest_lock(starpu_omp_nest_lock_t *lock) __STARPU_OMP_NOTHROW;
157 extern void starpu_omp_destroy_nest_lock(starpu_omp_nest_lock_t *lock) __STARPU_OMP_NOTHROW;
158 extern void starpu_omp_set_nest_lock(starpu_omp_nest_lock_t *lock) __STARPU_OMP_NOTHROW;
159 extern void starpu_omp_unset_nest_lock(starpu_omp_nest_lock_t *lock) __STARPU_OMP_NOTHROW;
160 extern int starpu_omp_test_nest_lock(starpu_omp_nest_lock_t *lock) __STARPU_OMP_NOTHROW;
161 extern void starpu_omp_atomic_fallback_inline_begin(void) __STARPU_OMP_NOTHROW;
162 extern void starpu_omp_atomic_fallback_inline_end(void) __STARPU_OMP_NOTHROW;
163 extern double starpu_omp_get_wtime(void) __STARPU_OMP_NOTHROW;
164 extern double starpu_omp_get_wtick(void) __STARPU_OMP_NOTHROW;
165 extern void starpu_omp_vector_annotate(starpu_data_handle_t handle, uint32_t slice_base) __STARPU_OMP_NOTHROW;
166 extern struct starpu_arbiter *starpu_omp_get_default_arbiter(void) __STARPU_OMP_NOTHROW;
167 
168 #ifdef __cplusplus
169 }
170 #endif
171 
172 #endif /* STARPU_USE_OPENMP && !STARPU_DONT_INCLUDE_OPENMP_HEADERS */
173 #endif /* __STARPU_OPENMP_H__ */
void starpu_omp_master(void(*f)(void *arg), void *arg) __STARPU_OMP_NOTHROW
void starpu_omp_set_nested(int nested) __STARPU_OMP_NOTHROW
Definition: starpu_task.h:89
int starpu_omp_get_dynamic(void) __STARPU_OMP_NOTHROW
struct starpu_codelet cl
Definition: starpu_openmp.h:49
int starpu_omp_get_team_num(void) __STARPU_OMP_NOTHROW
void starpu_omp_set_lock(starpu_omp_lock_t *lock) __STARPU_OMP_NOTHROW
Definition: starpu_openmp.h:47
void starpu_omp_ordered_inline_begin(void) __STARPU_OMP_NOTHROW
int starpu_omp_for_inline_first(unsigned long long nb_iterations, unsigned long long chunk, int schedule, int ordered, unsigned long long *_first_i, unsigned long long *_nb_i) __STARPU_OMP_NOTHROW
int starpu_omp_test_lock(starpu_omp_lock_t *lock) __STARPU_OMP_NOTHROW
int starpu_omp_get_active_level(void) __STARPU_OMP_NOTHROW
void starpu_omp_set_max_active_levels(int max_levels) __STARPU_OMP_NOTHROW
void starpu_omp_for(void(*f)(unsigned long long _first_i, unsigned long long _nb_i, void *arg), void *arg, unsigned long long nb_iterations, unsigned long long chunk, int schedule, int ordered, int nowait) __STARPU_OMP_NOTHROW
int starpu_omp_get_ancestor_thread_num(int level) __STARPU_OMP_NOTHROW
void starpu_omp_critical_inline_begin(const char *name) __STARPU_OMP_NOTHROW
Definition: starpu_openmp.h:39
void starpu_omp_get_schedule(enum starpu_omp_sched_value *kind, int *modifier) __STARPU_OMP_NOTHROW
void starpu_omp_destroy_lock(starpu_omp_lock_t *lock) __STARPU_OMP_NOTHROW
Definition: starpu_openmp.h:40
int starpu_omp_in_parallel(void) __STARPU_OMP_NOTHROW
Definition: starpu_openmp.h:32
void starpu_omp_shutdown(void) __STARPU_OMP_NOTHROW
void starpu_omp_taskgroup_inline_end(void) __STARPU_OMP_NOTHROW
void starpu_omp_set_nest_lock(starpu_omp_nest_lock_t *lock) __STARPU_OMP_NOTHROW
int starpu_omp_get_team_size(int level) __STARPU_OMP_NOTHROW
void * cl_arg
Definition: starpu_openmp.h:63
void starpu_omp_parallel_region(const struct starpu_omp_parallel_region_attr *attr) __STARPU_OMP_NOTHROW
void * starpu_omp_single_copyprivate_inline_begin(void *data) __STARPU_OMP_NOTHROW
int starpu_omp_for_inline_first_alt(unsigned long long nb_iterations, unsigned long long chunk, int schedule, int ordered, unsigned long long *_begin_i, unsigned long long *_end_i) __STARPU_OMP_NOTHROW
size_t cl_arg_size
Definition: starpu_openmp.h:52
int untied_clause
Definition: starpu_openmp.h:70
void starpu_omp_vector_annotate(starpu_data_handle_t handle, uint32_t slice_base) __STARPU_OMP_NOTHROW
void starpu_omp_single_copyprivate_inline_end(void) __STARPU_OMP_NOTHROW
int num_threads
Definition: starpu_openmp.h:56
int final_clause
Definition: starpu_openmp.h:69
void starpu_omp_destroy_nest_lock(starpu_omp_nest_lock_t *lock) __STARPU_OMP_NOTHROW
void starpu_omp_set_schedule(enum starpu_omp_sched_value kind, int modifier) __STARPU_OMP_NOTHROW
int starpu_omp_get_default_device(void) __STARPU_OMP_NOTHROW
void starpu_omp_atomic_fallback_inline_begin(void) __STARPU_OMP_NOTHROW
void starpu_omp_ordered(void(*f)(void *arg), void *arg) __STARPU_OMP_NOTHROW
Definition: starpu_openmp.h:30
Definition: starpu_openmp.h:25
Definition: starpu_openmp.h:42
int starpu_omp_in_final(void) __STARPU_OMP_NOTHROW
const char * name
Definition: starpu_task.h:123
enum starpu_omp_proc_bind_value starpu_omp_get_proc_bind(void) __STARPU_OMP_NOTHROW
int starpu_omp_get_thread_num() __STARPU_OMP_NOTHROW
Definition: starpu_openmp.h:31
int starpu_omp_for_inline_next(unsigned long long nb_iterations, unsigned long long chunk, int schedule, int ordered, unsigned long long *_first_i, unsigned long long *_nb_i) __STARPU_OMP_NOTHROW
int starpu_omp_get_level(void) __STARPU_OMP_NOTHROW
int starpu_omp_master_inline(void) __STARPU_OMP_NOTHROW
Definition: starpu_openmp.h:29
int starpu_omp_init(void) __STARPU_OMP_NOTHROW
starpu_data_handle_t * handles
Definition: starpu_openmp.h:62
void starpu_omp_taskgroup_inline_begin(void) __STARPU_OMP_NOTHROW
int starpu_omp_for_inline_next_alt(unsigned long long nb_iterations, unsigned long long chunk, int schedule, int ordered, unsigned long long *_begin_i, unsigned long long *_end_i) __STARPU_OMP_NOTHROW
int starpu_omp_get_nested(void) __STARPU_OMP_NOTHROW
starpu_omp_sched_value
Definition: starpu_openmp.h:27
void starpu_omp_set_default_device(int device_num) __STARPU_OMP_NOTHROW
void starpu_omp_single_copyprivate(void(*f)(void *arg, void *data, unsigned long long data_size), void *arg, void *data, unsigned long long data_size) __STARPU_OMP_NOTHROW
void starpu_omp_set_num_threads(int threads) __STARPU_OMP_NOTHROW
Definition: starpu_openmp.h:59
void starpu_omp_unset_nest_lock(starpu_omp_nest_lock_t *lock) __STARPU_OMP_NOTHROW
int starpu_omp_get_thread_limit(void) __STARPU_OMP_NOTHROW
void starpu_omp_single(void(*f)(void *arg), void *arg, int nowait) __STARPU_OMP_NOTHROW
int starpu_omp_get_cancellation(void) __STARPU_OMP_NOTHROW
int starpu_omp_get_num_devices(void) __STARPU_OMP_NOTHROW
int starpu_omp_get_num_procs(void) __STARPU_OMP_NOTHROW
Definition: starpu_openmp.h:24
int starpu_omp_get_num_threads() __STARPU_OMP_NOTHROW
void starpu_omp_init_nest_lock(starpu_omp_nest_lock_t *lock) __STARPU_OMP_NOTHROW
int mergeable_clause
Definition: starpu_openmp.h:71
void starpu_omp_critical_inline_end(const char *name) __STARPU_OMP_NOTHROW
double starpu_omp_get_wtick(void) __STARPU_OMP_NOTHROW
Definition: starpu_openmp.h:33
void starpu_omp_atomic_fallback_inline_end(void) __STARPU_OMP_NOTHROW
starpu_data_handle_t * handles
Definition: starpu_openmp.h:50
void starpu_omp_critical(void(*f)(void *arg), void *arg, const char *name) __STARPU_OMP_NOTHROW
int starpu_omp_test_nest_lock(starpu_omp_nest_lock_t *lock) __STARPU_OMP_NOTHROW
Definition: starpu_openmp.h:44
void starpu_omp_unset_lock(starpu_omp_lock_t *lock) __STARPU_OMP_NOTHROW
unsigned cl_arg_free
Definition: starpu_openmp.h:65
unsigned cl_arg_free
Definition: starpu_openmp.h:53
int starpu_omp_get_max_active_levels(void) __STARPU_OMP_NOTHROW
void starpu_omp_sections_combined(unsigned long long nb_sections, void(*section_f)(unsigned long long section_num, void *arg), void *section_arg, int nowait) __STARPU_OMP_NOTHROW
int starpu_omp_get_max_threads() __STARPU_OMP_NOTHROW
void starpu_omp_barrier(void) __STARPU_OMP_NOTHROW
double starpu_omp_get_wtime(void) __STARPU_OMP_NOTHROW
void * cl_arg
Definition: starpu_openmp.h:51
Definition: starpu_openmp.h:43
void starpu_omp_for_alt(void(*f)(unsigned long long _begin_i, unsigned long long _end_i, void *arg), void *arg, unsigned long long nb_iterations, unsigned long long chunk, int schedule, int ordered, int nowait) __STARPU_OMP_NOTHROW
struct _starpu_data_state * starpu_data_handle_t
Definition: starpu_data.h:30
size_t cl_arg_size
Definition: starpu_openmp.h:64
int starpu_omp_single_inline(void) __STARPU_OMP_NOTHROW
void starpu_omp_taskgroup(void(*f)(void *arg), void *arg) __STARPU_OMP_NOTHROW
int starpu_omp_get_num_teams(void) __STARPU_OMP_NOTHROW
void starpu_omp_task_region(const struct starpu_omp_task_region_attr *attr) __STARPU_OMP_NOTHROW
void starpu_omp_init_lock(starpu_omp_lock_t *lock) __STARPU_OMP_NOTHROW
int starpu_omp_is_initial_device(void) __STARPU_OMP_NOTHROW
int if_clause
Definition: starpu_openmp.h:68
void starpu_omp_set_dynamic(int dynamic_threads) __STARPU_OMP_NOTHROW
void starpu_omp_taskwait(void) __STARPU_OMP_NOTHROW
void starpu_omp_sections(unsigned long long nb_sections, void(**section_f)(void *arg), void **section_arg, int nowait) __STARPU_OMP_NOTHROW
Definition: starpu_openmp.h:41
int if_clause
Definition: starpu_openmp.h:55
Definition: starpu_openmp.h:34
starpu_omp_proc_bind_value
Definition: starpu_openmp.h:37
void starpu_omp_ordered_inline_end(void) __STARPU_OMP_NOTHROW