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