LLVM OpenMP* Runtime Library
kmp_ftn_os.h
1 /*
2  * kmp_ftn_os.h -- KPTS Fortran defines header file.
3  */
4 
5 
6 //===----------------------------------------------------------------------===//
7 //
8 // The LLVM Compiler Infrastructure
9 //
10 // This file is dual licensed under the MIT and the University of Illinois Open
11 // Source Licenses. See LICENSE.txt for details.
12 //
13 //===----------------------------------------------------------------------===//
14 
15 
16 #ifndef KMP_FTN_OS_H
17 #define KMP_FTN_OS_H
18 
19 // KMP_FNT_ENTRIES may be one of: KMP_FTN_PLAIN, KMP_FTN_UPPER, KMP_FTN_APPEND, KMP_FTN_UAPPEND.
20 
21 
22 /* -------------------------- External definitions ------------------------ */
23 
24 #if KMP_FTN_ENTRIES == KMP_FTN_PLAIN
25 
26  #define FTN_SET_STACKSIZE kmp_set_stacksize
27  #define FTN_SET_STACKSIZE_S kmp_set_stacksize_s
28  #define FTN_GET_STACKSIZE kmp_get_stacksize
29  #define FTN_GET_STACKSIZE_S kmp_get_stacksize_s
30  #define FTN_SET_BLOCKTIME kmp_set_blocktime
31  #define FTN_GET_BLOCKTIME kmp_get_blocktime
32  #define FTN_SET_LIBRARY_SERIAL kmp_set_library_serial
33  #define FTN_SET_LIBRARY_TURNAROUND kmp_set_library_turnaround
34  #define FTN_SET_LIBRARY_THROUGHPUT kmp_set_library_throughput
35  #define FTN_SET_LIBRARY kmp_set_library
36  #define FTN_GET_LIBRARY kmp_get_library
37  #define FTN_SET_DEFAULTS kmp_set_defaults
38  #define FTN_SET_DISP_NUM_BUFFERS kmp_set_disp_num_buffers
39  #define FTN_SET_AFFINITY kmp_set_affinity
40  #define FTN_GET_AFFINITY kmp_get_affinity
41  #define FTN_GET_AFFINITY_MAX_PROC kmp_get_affinity_max_proc
42  #define FTN_CREATE_AFFINITY_MASK kmp_create_affinity_mask
43  #define FTN_DESTROY_AFFINITY_MASK kmp_destroy_affinity_mask
44  #define FTN_SET_AFFINITY_MASK_PROC kmp_set_affinity_mask_proc
45  #define FTN_UNSET_AFFINITY_MASK_PROC kmp_unset_affinity_mask_proc
46  #define FTN_GET_AFFINITY_MASK_PROC kmp_get_affinity_mask_proc
47 
48  #define FTN_MALLOC kmp_malloc
49  #define FTN_ALIGNED_MALLOC kmp_aligned_malloc
50  #define FTN_CALLOC kmp_calloc
51  #define FTN_REALLOC kmp_realloc
52  #define FTN_FREE kmp_free
53 
54  #define FTN_GET_NUM_KNOWN_THREADS kmp_get_num_known_threads
55 
56  #define FTN_SET_NUM_THREADS omp_set_num_threads
57  #define FTN_GET_NUM_THREADS omp_get_num_threads
58  #define FTN_GET_MAX_THREADS omp_get_max_threads
59  #define FTN_GET_THREAD_NUM omp_get_thread_num
60  #define FTN_GET_NUM_PROCS omp_get_num_procs
61  #define FTN_SET_DYNAMIC omp_set_dynamic
62  #define FTN_GET_DYNAMIC omp_get_dynamic
63  #define FTN_SET_NESTED omp_set_nested
64  #define FTN_GET_NESTED omp_get_nested
65  #define FTN_IN_PARALLEL omp_in_parallel
66  #define FTN_GET_THREAD_LIMIT omp_get_thread_limit
67  #define FTN_SET_SCHEDULE omp_set_schedule
68  #define FTN_GET_SCHEDULE omp_get_schedule
69  #define FTN_SET_MAX_ACTIVE_LEVELS omp_set_max_active_levels
70  #define FTN_GET_MAX_ACTIVE_LEVELS omp_get_max_active_levels
71  #define FTN_GET_ACTIVE_LEVEL omp_get_active_level
72  #define FTN_GET_LEVEL omp_get_level
73  #define FTN_GET_ANCESTOR_THREAD_NUM omp_get_ancestor_thread_num
74  #define FTN_GET_TEAM_SIZE omp_get_team_size
75  #define FTN_IN_FINAL omp_in_final
76 // #define FTN_SET_PROC_BIND omp_set_proc_bind
77  #define FTN_GET_PROC_BIND omp_get_proc_bind
78 // #define FTN_CURR_PROC_BIND omp_curr_proc_bind
79 #if OMP_40_ENABLED
80  #define FTN_GET_NUM_TEAMS omp_get_num_teams
81  #define FTN_GET_TEAM_NUM omp_get_team_num
82 #endif
83  #define FTN_INIT_LOCK omp_init_lock
84 #if KMP_USE_DYNAMIC_LOCK
85  #define FTN_INIT_LOCK_WITH_HINT omp_init_lock_with_hint
86  #define FTN_INIT_NEST_LOCK_WITH_HINT omp_init_nest_lock_with_hint
87 #endif
88  #define FTN_DESTROY_LOCK omp_destroy_lock
89  #define FTN_SET_LOCK omp_set_lock
90  #define FTN_UNSET_LOCK omp_unset_lock
91  #define FTN_TEST_LOCK omp_test_lock
92  #define FTN_INIT_NEST_LOCK omp_init_nest_lock
93  #define FTN_DESTROY_NEST_LOCK omp_destroy_nest_lock
94  #define FTN_SET_NEST_LOCK omp_set_nest_lock
95  #define FTN_UNSET_NEST_LOCK omp_unset_nest_lock
96  #define FTN_TEST_NEST_LOCK omp_test_nest_lock
97 
98  #define FTN_SET_WARNINGS_ON kmp_set_warnings_on
99  #define FTN_SET_WARNINGS_OFF kmp_set_warnings_off
100 
101  #define FTN_GET_WTIME omp_get_wtime
102  #define FTN_GET_WTICK omp_get_wtick
103 
104 #if OMP_40_ENABLED
105 #if KMP_MIC || KMP_OS_DARWIN || defined(KMP_STUB)
106  #define FTN_GET_DEFAULT_DEVICE omp_get_default_device
107  #define FTN_SET_DEFAULT_DEVICE omp_set_default_device
108  #define FTN_GET_NUM_DEVICES omp_get_num_devices
109 #endif
110  #define FTN_IS_INITIAL_DEVICE omp_is_initial_device
111 #endif
112 
113 #if OMP_40_ENABLED
114  #define FTN_GET_CANCELLATION omp_get_cancellation
115  #define FTN_GET_CANCELLATION_STATUS kmp_get_cancellation_status
116 #endif
117 
118 #if OMP_45_ENABLED
119  #define FTN_GET_MAX_TASK_PRIORITY omp_get_max_task_priority
120  #define FTN_GET_NUM_PLACES omp_get_num_places
121  #define FTN_GET_PLACE_NUM_PROCS omp_get_place_num_procs
122  #define FTN_GET_PLACE_PROC_IDS omp_get_place_proc_ids
123  #define FTN_GET_PLACE_NUM omp_get_place_num
124  #define FTN_GET_PARTITION_NUM_PLACES omp_get_partition_num_places
125  #define FTN_GET_PARTITION_PLACE_NUMS omp_get_partition_place_nums
126 # ifdef KMP_STUB
127  #define FTN_GET_INITIAL_DEVICE omp_get_initial_device
128  #define FTN_TARGET_ALLOC omp_target_alloc
129  #define FTN_TARGET_FREE omp_target_free
130  #define FTN_TARGET_IS_PRESENT omp_target_is_present
131  #define FTN_TARGET_MEMCPY omp_target_memcpy
132  #define FTN_TARGET_MEMCPY_RECT omp_target_memcpy_rect
133  #define FTN_TARGET_ASSOCIATE_PTR omp_target_associate_ptr
134  #define FTN_TARGET_DISASSOCIATE_PTR omp_target_disassociate_ptr
135 # endif
136 #endif
137 
138 #endif /* KMP_FTN_PLAIN */
139 
140 /* ------------------------------------------------------------------------ */
141 
142 #if KMP_FTN_ENTRIES == KMP_FTN_APPEND
143 
144  #define FTN_SET_STACKSIZE kmp_set_stacksize_
145  #define FTN_SET_STACKSIZE_S kmp_set_stacksize_s_
146  #define FTN_GET_STACKSIZE kmp_get_stacksize_
147  #define FTN_GET_STACKSIZE_S kmp_get_stacksize_s_
148  #define FTN_SET_BLOCKTIME kmp_set_blocktime_
149  #define FTN_GET_BLOCKTIME kmp_get_blocktime_
150  #define FTN_SET_LIBRARY_SERIAL kmp_set_library_serial_
151  #define FTN_SET_LIBRARY_TURNAROUND kmp_set_library_turnaround_
152  #define FTN_SET_LIBRARY_THROUGHPUT kmp_set_library_throughput_
153  #define FTN_SET_LIBRARY kmp_set_library_
154  #define FTN_GET_LIBRARY kmp_get_library_
155  #define FTN_SET_DEFAULTS kmp_set_defaults_
156  #define FTN_SET_DISP_NUM_BUFFERS kmp_set_disp_num_buffers_
157  #define FTN_SET_AFFINITY kmp_set_affinity_
158  #define FTN_GET_AFFINITY kmp_get_affinity_
159  #define FTN_GET_AFFINITY_MAX_PROC kmp_get_affinity_max_proc_
160  #define FTN_CREATE_AFFINITY_MASK kmp_create_affinity_mask_
161  #define FTN_DESTROY_AFFINITY_MASK kmp_destroy_affinity_mask_
162  #define FTN_SET_AFFINITY_MASK_PROC kmp_set_affinity_mask_proc_
163  #define FTN_UNSET_AFFINITY_MASK_PROC kmp_unset_affinity_mask_proc_
164  #define FTN_GET_AFFINITY_MASK_PROC kmp_get_affinity_mask_proc_
165 
166  #define FTN_MALLOC kmp_malloc_
167  #define FTN_ALIGNED_MALLOC kmp_aligned_malloc_
168  #define FTN_CALLOC kmp_calloc_
169  #define FTN_REALLOC kmp_realloc_
170  #define FTN_FREE kmp_free_
171 
172  #define FTN_GET_NUM_KNOWN_THREADS kmp_get_num_known_threads_
173 
174  #define FTN_SET_NUM_THREADS omp_set_num_threads_
175  #define FTN_GET_NUM_THREADS omp_get_num_threads_
176  #define FTN_GET_MAX_THREADS omp_get_max_threads_
177  #define FTN_GET_THREAD_NUM omp_get_thread_num_
178  #define FTN_GET_NUM_PROCS omp_get_num_procs_
179  #define FTN_SET_DYNAMIC omp_set_dynamic_
180  #define FTN_GET_DYNAMIC omp_get_dynamic_
181  #define FTN_SET_NESTED omp_set_nested_
182  #define FTN_GET_NESTED omp_get_nested_
183  #define FTN_IN_PARALLEL omp_in_parallel_
184  #define FTN_GET_THREAD_LIMIT omp_get_thread_limit_
185  #define FTN_SET_SCHEDULE omp_set_schedule_
186  #define FTN_GET_SCHEDULE omp_get_schedule_
187  #define FTN_SET_MAX_ACTIVE_LEVELS omp_set_max_active_levels_
188  #define FTN_GET_MAX_ACTIVE_LEVELS omp_get_max_active_levels_
189  #define FTN_GET_ACTIVE_LEVEL omp_get_active_level_
190  #define FTN_GET_LEVEL omp_get_level_
191  #define FTN_GET_ANCESTOR_THREAD_NUM omp_get_ancestor_thread_num_
192  #define FTN_GET_TEAM_SIZE omp_get_team_size_
193  #define FTN_IN_FINAL omp_in_final_
194 // #define FTN_SET_PROC_BIND omp_set_proc_bind_
195  #define FTN_GET_PROC_BIND omp_get_proc_bind_
196 // #define FTN_CURR_PROC_BIND omp_curr_proc_bind_
197 #if OMP_40_ENABLED
198  #define FTN_GET_NUM_TEAMS omp_get_num_teams_
199  #define FTN_GET_TEAM_NUM omp_get_team_num_
200 #endif
201  #define FTN_INIT_LOCK omp_init_lock_
202 #if KMP_USE_DYNAMIC_LOCK
203  #define FTN_INIT_LOCK_WITH_HINT omp_init_lock_with_hint_
204  #define FTN_INIT_NEST_LOCK_WITH_HINT omp_init_nest_lock_with_hint_
205 #endif
206  #define FTN_DESTROY_LOCK omp_destroy_lock_
207  #define FTN_SET_LOCK omp_set_lock_
208  #define FTN_UNSET_LOCK omp_unset_lock_
209  #define FTN_TEST_LOCK omp_test_lock_
210  #define FTN_INIT_NEST_LOCK omp_init_nest_lock_
211  #define FTN_DESTROY_NEST_LOCK omp_destroy_nest_lock_
212  #define FTN_SET_NEST_LOCK omp_set_nest_lock_
213  #define FTN_UNSET_NEST_LOCK omp_unset_nest_lock_
214  #define FTN_TEST_NEST_LOCK omp_test_nest_lock_
215 
216  #define FTN_SET_WARNINGS_ON kmp_set_warnings_on_
217  #define FTN_SET_WARNINGS_OFF kmp_set_warnings_off_
218 
219  #define FTN_GET_WTIME omp_get_wtime_
220  #define FTN_GET_WTICK omp_get_wtick_
221 
222 #if OMP_40_ENABLED
223 #if KMP_MIC || KMP_OS_DARWIN || defined(KMP_STUB)
224  #define FTN_GET_DEFAULT_DEVICE omp_get_default_device_
225  #define FTN_SET_DEFAULT_DEVICE omp_set_default_device_
226  #define FTN_GET_NUM_DEVICES omp_get_num_devices_
227 #endif
228  #define FTN_IS_INITIAL_DEVICE omp_is_initial_device_
229 #endif
230 
231 
232 #if OMP_40_ENABLED
233  #define FTN_GET_CANCELLATION omp_get_cancellation_
234  #define FTN_GET_CANCELLATION_STATUS kmp_get_cancellation_status_
235 #endif
236 
237 #if OMP_45_ENABLED
238  #define FTN_GET_MAX_TASK_PRIORITY omp_get_max_task_priority_
239  #define FTN_GET_NUM_PLACES omp_get_num_places_
240  #define FTN_GET_PLACE_NUM_PROCS omp_get_place_num_procs_
241  #define FTN_GET_PLACE_PROC_IDS omp_get_place_proc_ids_
242  #define FTN_GET_PLACE_NUM omp_get_place_num_
243  #define FTN_GET_PARTITION_NUM_PLACES omp_get_partition_num_places_
244  #define FTN_GET_PARTITION_PLACE_NUMS omp_get_partition_place_nums_
245 # ifdef KMP_STUB
246  #define FTN_GET_INITIAL_DEVICE omp_get_initial_device_
247  #define FTN_TARGET_ALLOC omp_target_alloc_
248  #define FTN_TARGET_FREE omp_target_free_
249  #define FTN_TARGET_IS_PRESENT omp_target_is_present_
250  #define FTN_TARGET_MEMCPY omp_target_memcpy_
251  #define FTN_TARGET_MEMCPY_RECT omp_target_memcpy_rect_
252  #define FTN_TARGET_ASSOCIATE_PTR omp_target_associate_ptr_
253  #define FTN_TARGET_DISASSOCIATE_PTR omp_target_disassociate_ptr_
254 # endif
255 #endif
256 
257 #endif /* KMP_FTN_APPEND */
258 
259 /* ------------------------------------------------------------------------ */
260 
261 #if KMP_FTN_ENTRIES == KMP_FTN_UPPER
262 
263  #define FTN_SET_STACKSIZE KMP_SET_STACKSIZE
264  #define FTN_SET_STACKSIZE_S KMP_SET_STACKSIZE_S
265  #define FTN_GET_STACKSIZE KMP_GET_STACKSIZE
266  #define FTN_GET_STACKSIZE_S KMP_GET_STACKSIZE_S
267  #define FTN_SET_BLOCKTIME KMP_SET_BLOCKTIME
268  #define FTN_GET_BLOCKTIME KMP_GET_BLOCKTIME
269  #define FTN_SET_LIBRARY_SERIAL KMP_SET_LIBRARY_SERIAL
270  #define FTN_SET_LIBRARY_TURNAROUND KMP_SET_LIBRARY_TURNAROUND
271  #define FTN_SET_LIBRARY_THROUGHPUT KMP_SET_LIBRARY_THROUGHPUT
272  #define FTN_SET_LIBRARY KMP_SET_LIBRARY
273  #define FTN_GET_LIBRARY KMP_GET_LIBRARY
274  #define FTN_SET_DEFAULTS KMP_SET_DEFAULTS
275  #define FTN_SET_DISP_NUM_BUFFERS KMP_SET_DISP_NUM_BUFFERS
276  #define FTN_SET_AFFINITY KMP_SET_AFFINITY
277  #define FTN_GET_AFFINITY KMP_GET_AFFINITY
278  #define FTN_GET_AFFINITY_MAX_PROC KMP_GET_AFFINITY_MAX_PROC
279  #define FTN_CREATE_AFFINITY_MASK KMP_CREATE_AFFINITY_MASK
280  #define FTN_DESTROY_AFFINITY_MASK KMP_DESTROY_AFFINITY_MASK
281  #define FTN_SET_AFFINITY_MASK_PROC KMP_SET_AFFINITY_MASK_PROC
282  #define FTN_UNSET_AFFINITY_MASK_PROC KMP_UNSET_AFFINITY_MASK_PROC
283  #define FTN_GET_AFFINITY_MASK_PROC KMP_GET_AFFINITY_MASK_PROC
284 
285  #define FTN_MALLOC KMP_MALLOC
286  #define FTN_ALIGNED_MALLOC KMP_ALIGNED_MALLOC
287  #define FTN_CALLOC KMP_CALLOC
288  #define FTN_REALLOC KMP_REALLOC
289  #define FTN_FREE KMP_FREE
290 
291  #define FTN_GET_NUM_KNOWN_THREADS KMP_GET_NUM_KNOWN_THREADS
292 
293  #define FTN_SET_NUM_THREADS OMP_SET_NUM_THREADS
294  #define FTN_GET_NUM_THREADS OMP_GET_NUM_THREADS
295  #define FTN_GET_MAX_THREADS OMP_GET_MAX_THREADS
296  #define FTN_GET_THREAD_NUM OMP_GET_THREAD_NUM
297  #define FTN_GET_NUM_PROCS OMP_GET_NUM_PROCS
298  #define FTN_SET_DYNAMIC OMP_SET_DYNAMIC
299  #define FTN_GET_DYNAMIC OMP_GET_DYNAMIC
300  #define FTN_SET_NESTED OMP_SET_NESTED
301  #define FTN_GET_NESTED OMP_GET_NESTED
302  #define FTN_IN_PARALLEL OMP_IN_PARALLEL
303  #define FTN_GET_THREAD_LIMIT OMP_GET_THREAD_LIMIT
304  #define FTN_SET_SCHEDULE OMP_SET_SCHEDULE
305  #define FTN_GET_SCHEDULE OMP_GET_SCHEDULE
306  #define FTN_SET_MAX_ACTIVE_LEVELS OMP_SET_MAX_ACTIVE_LEVELS
307  #define FTN_GET_MAX_ACTIVE_LEVELS OMP_GET_MAX_ACTIVE_LEVELS
308  #define FTN_GET_ACTIVE_LEVEL OMP_GET_ACTIVE_LEVEL
309  #define FTN_GET_LEVEL OMP_GET_LEVEL
310  #define FTN_GET_ANCESTOR_THREAD_NUM OMP_GET_ANCESTOR_THREAD_NUM
311  #define FTN_GET_TEAM_SIZE OMP_GET_TEAM_SIZE
312  #define FTN_IN_FINAL OMP_IN_FINAL
313 // #define FTN_SET_PROC_BIND OMP_SET_PROC_BIND
314  #define FTN_GET_PROC_BIND OMP_GET_PROC_BIND
315 // #define FTN_CURR_PROC_BIND OMP_CURR_PROC_BIND
316 #if OMP_40_ENABLED
317  #define FTN_GET_NUM_TEAMS OMP_GET_NUM_TEAMS
318  #define FTN_GET_TEAM_NUM OMP_GET_TEAM_NUM
319 #endif
320  #define FTN_INIT_LOCK OMP_INIT_LOCK
321 #if KMP_USE_DYNAMIC_LOCK
322  #define FTN_INIT_LOCK_WITH_HINT OMP_INIT_LOCK_WITH_HINT
323  #define FTN_INIT_NEST_LOCK_WITH_HINT OMP_INIT_NEST_LOCK_WITH_HINT
324 #endif
325  #define FTN_DESTROY_LOCK OMP_DESTROY_LOCK
326  #define FTN_SET_LOCK OMP_SET_LOCK
327  #define FTN_UNSET_LOCK OMP_UNSET_LOCK
328  #define FTN_TEST_LOCK OMP_TEST_LOCK
329  #define FTN_INIT_NEST_LOCK OMP_INIT_NEST_LOCK
330  #define FTN_DESTROY_NEST_LOCK OMP_DESTROY_NEST_LOCK
331  #define FTN_SET_NEST_LOCK OMP_SET_NEST_LOCK
332  #define FTN_UNSET_NEST_LOCK OMP_UNSET_NEST_LOCK
333  #define FTN_TEST_NEST_LOCK OMP_TEST_NEST_LOCK
334 
335  #define FTN_SET_WARNINGS_ON KMP_SET_WARNINGS_ON
336  #define FTN_SET_WARNINGS_OFF KMP_SET_WARNINGS_OFF
337 
338  #define FTN_GET_WTIME OMP_GET_WTIME
339  #define FTN_GET_WTICK OMP_GET_WTICK
340 
341 #if OMP_40_ENABLED
342 #if KMP_MIC || KMP_OS_DARWIN || defined(KMP_STUB)
343  #define FTN_GET_DEFAULT_DEVICE OMP_GET_DEFAULT_DEVICE
344  #define FTN_SET_DEFAULT_DEVICE OMP_SET_DEFAULT_DEVICE
345  #define FTN_GET_NUM_DEVICES OMP_GET_NUM_DEVICES
346 #endif
347  #define FTN_IS_INITIAL_DEVICE OMP_IS_INITIAL_DEVICE
348 #endif
349 
350 
351 #if OMP_40_ENABLED
352  #define FTN_GET_CANCELLATION OMP_GET_CANCELLATION
353  #define FTN_GET_CANCELLATION_STATUS KMP_GET_CANCELLATION_STATUS
354 #endif
355 
356 #if OMP_45_ENABLED
357  #define FTN_GET_MAX_TASK_PRIORITY OMP_GET_MAX_TASK_PRIORITY
358  #define FTN_GET_NUM_PLACES OMP_GET_NUM_PLACES
359  #define FTN_GET_PLACE_NUM_PROCS OMP_GET_PLACE_NUM_PROCS
360  #define FTN_GET_PLACE_PROC_IDS OMP_GET_PLACE_PROC_IDS
361  #define FTN_GET_PLACE_NUM OMP_GET_PLACE_NUM
362  #define FTN_GET_PARTITION_NUM_PLACES OMP_GET_PARTITION_NUM_PLACES
363  #define FTN_GET_PARTITION_PLACE_NUMS OMP_GET_PARTITION_PLACE_NUMS
364 # ifdef KMP_STUB
365  #define FTN_GET_INITIAL_DEVICE OMP_GET_INITIAL_DEVICE
366  #define FTN_TARGET_ALLOC OMP_TARGET_ALLOC
367  #define FTN_TARGET_FREE OMP_TARGET_FREE
368  #define FTN_TARGET_IS_PRESENT OMP_TARGET_IS_PRESENT
369  #define FTN_TARGET_MEMCPY OMP_TARGET_MEMCPY
370  #define FTN_TARGET_MEMCPY_RECT OMP_TARGET_MEMCPY_RECT
371  #define FTN_TARGET_ASSOCIATE_PTR OMP_TARGET_ASSOCIATE_PTR
372  #define FTN_TARGET_DISASSOCIATE_PTR OMP_TARGET_DISASSOCIATE_PTR
373 # endif
374 #endif
375 
376 #endif /* KMP_FTN_UPPER */
377 
378 /* ------------------------------------------------------------------------ */
379 
380 #if KMP_FTN_ENTRIES == KMP_FTN_UAPPEND
381 
382  #define FTN_SET_STACKSIZE KMP_SET_STACKSIZE_
383  #define FTN_SET_STACKSIZE_S KMP_SET_STACKSIZE_S_
384  #define FTN_GET_STACKSIZE KMP_GET_STACKSIZE_
385  #define FTN_GET_STACKSIZE_S KMP_GET_STACKSIZE_S_
386  #define FTN_SET_BLOCKTIME KMP_SET_BLOCKTIME_
387  #define FTN_GET_BLOCKTIME KMP_GET_BLOCKTIME_
388  #define FTN_SET_LIBRARY_SERIAL KMP_SET_LIBRARY_SERIAL_
389  #define FTN_SET_LIBRARY_TURNAROUND KMP_SET_LIBRARY_TURNAROUND_
390  #define FTN_SET_LIBRARY_THROUGHPUT KMP_SET_LIBRARY_THROUGHPUT_
391  #define FTN_SET_LIBRARY KMP_SET_LIBRARY_
392  #define FTN_GET_LIBRARY KMP_GET_LIBRARY_
393  #define FTN_SET_DEFAULTS KMP_SET_DEFAULTS_
394  #define FTN_SET_DISP_NUM_BUFFERS KMP_SET_DISP_NUM_BUFFERS_
395  #define FTN_SET_AFFINITY KMP_SET_AFFINITY_
396  #define FTN_GET_AFFINITY KMP_GET_AFFINITY_
397  #define FTN_GET_AFFINITY_MAX_PROC KMP_GET_AFFINITY_MAX_PROC_
398  #define FTN_CREATE_AFFINITY_MASK KMP_CREATE_AFFINITY_MASK_
399  #define FTN_DESTROY_AFFINITY_MASK KMP_DESTROY_AFFINITY_MASK_
400  #define FTN_SET_AFFINITY_MASK_PROC KMP_SET_AFFINITY_MASK_PROC_
401  #define FTN_UNSET_AFFINITY_MASK_PROC KMP_UNSET_AFFINITY_MASK_PROC_
402  #define FTN_GET_AFFINITY_MASK_PROC KMP_GET_AFFINITY_MASK_PROC_
403 
404  #define FTN_MALLOC KMP_MALLOC_
405  #define FTN_ALIGNED_MALLOC KMP_ALIGNED_MALLOC_
406  #define FTN_CALLOC KMP_CALLOC_
407  #define FTN_REALLOC KMP_REALLOC_
408  #define FTN_FREE KMP_FREE_
409 
410  #define FTN_GET_NUM_KNOWN_THREADS KMP_GET_NUM_KNOWN_THREADS_
411 
412  #define FTN_SET_NUM_THREADS OMP_SET_NUM_THREADS_
413  #define FTN_GET_NUM_THREADS OMP_GET_NUM_THREADS_
414  #define FTN_GET_MAX_THREADS OMP_GET_MAX_THREADS_
415  #define FTN_GET_THREAD_NUM OMP_GET_THREAD_NUM_
416  #define FTN_GET_NUM_PROCS OMP_GET_NUM_PROCS_
417  #define FTN_SET_DYNAMIC OMP_SET_DYNAMIC_
418  #define FTN_GET_DYNAMIC OMP_GET_DYNAMIC_
419  #define FTN_SET_NESTED OMP_SET_NESTED_
420  #define FTN_GET_NESTED OMP_GET_NESTED_
421  #define FTN_IN_PARALLEL OMP_IN_PARALLEL_
422  #define FTN_GET_THREAD_LIMIT OMP_GET_THREAD_LIMIT_
423  #define FTN_SET_SCHEDULE OMP_SET_SCHEDULE_
424  #define FTN_GET_SCHEDULE OMP_GET_SCHEDULE_
425  #define FTN_SET_MAX_ACTIVE_LEVELS OMP_SET_MAX_ACTIVE_LEVELS_
426  #define FTN_GET_MAX_ACTIVE_LEVELS OMP_GET_MAX_ACTIVE_LEVELS_
427  #define FTN_GET_ACTIVE_LEVEL OMP_GET_ACTIVE_LEVEL_
428  #define FTN_GET_LEVEL OMP_GET_LEVEL_
429  #define FTN_GET_ANCESTOR_THREAD_NUM OMP_GET_ANCESTOR_THREAD_NUM_
430  #define FTN_GET_TEAM_SIZE OMP_GET_TEAM_SIZE_
431  #define FTN_IN_FINAL OMP_IN_FINAL_
432 // #define FTN_SET_PROC_BIND OMP_SET_PROC_BIND_
433  #define FTN_GET_PROC_BIND OMP_GET_PROC_BIND_
434 // #define FTN_CURR_PROC_BIND OMP_CURR_PROC_BIND_
435 #if OMP_40_ENABLED
436  #define FTN_GET_NUM_TEAMS OMP_GET_NUM_TEAMS_
437  #define FTN_GET_TEAM_NUM OMP_GET_TEAM_NUM_
438 #endif
439  #define FTN_INIT_LOCK OMP_INIT_LOCK_
440 #if KMP_USE_DYNAMIC_LOCK
441  #define FTN_INIT_LOCK_WITH_HINT OMP_INIT_LOCK_WITH_HINT_
442  #define FTN_INIT_NEST_LOCK_WITH_HINT OMP_INIT_NEST_LOCK_WITH_HINT_
443 #endif
444  #define FTN_DESTROY_LOCK OMP_DESTROY_LOCK_
445  #define FTN_SET_LOCK OMP_SET_LOCK_
446  #define FTN_UNSET_LOCK OMP_UNSET_LOCK_
447  #define FTN_TEST_LOCK OMP_TEST_LOCK_
448  #define FTN_INIT_NEST_LOCK OMP_INIT_NEST_LOCK_
449  #define FTN_DESTROY_NEST_LOCK OMP_DESTROY_NEST_LOCK_
450  #define FTN_SET_NEST_LOCK OMP_SET_NEST_LOCK_
451  #define FTN_UNSET_NEST_LOCK OMP_UNSET_NEST_LOCK_
452  #define FTN_TEST_NEST_LOCK OMP_TEST_NEST_LOCK_
453 
454  #define FTN_SET_WARNINGS_ON KMP_SET_WARNINGS_ON_
455  #define FTN_SET_WARNINGS_OFF KMP_SET_WARNINGS_OFF_
456 
457  #define FTN_GET_WTIME OMP_GET_WTIME_
458  #define FTN_GET_WTICK OMP_GET_WTICK_
459 
460 #if OMP_40_ENABLED
461 #if KMP_MIC || KMP_OS_DARWIN || defined(KMP_STUB)
462  #define FTN_GET_DEFAULT_DEVICE OMP_GET_DEFAULT_DEVICE_
463  #define FTN_SET_DEFAULT_DEVICE OMP_SET_DEFAULT_DEVICE_
464  #define FTN_GET_NUM_DEVICES OMP_GET_NUM_DEVICES_
465 #endif
466  #define FTN_IS_INITIAL_DEVICE OMP_IS_INITIAL_DEVICE_
467 #endif
468 
469 
470 #if OMP_40_ENABLED
471  #define FTN_GET_CANCELLATION OMP_GET_CANCELLATION_
472  #define FTN_GET_CANCELLATION_STATUS KMP_GET_CANCELLATION_STATUS_
473 #endif
474 
475 #if OMP_45_ENABLED
476  #define FTN_GET_MAX_TASK_PRIORITY OMP_GET_MAX_TASK_PRIORITY_
477  #define FTN_GET_NUM_PLACES OMP_GET_NUM_PLACES_
478  #define FTN_GET_PLACE_NUM_PROCS OMP_GET_PLACE_NUM_PROCS_
479  #define FTN_GET_PLACE_PROC_IDS OMP_GET_PLACE_PROC_IDS_
480  #define FTN_GET_PLACE_NUM OMP_GET_PLACE_NUM_
481  #define FTN_GET_PARTITION_NUM_PLACES OMP_GET_PARTITION_NUM_PLACES_
482  #define FTN_GET_PARTITION_PLACE_NUMS OMP_GET_PARTITION_PLACE_NUMS_
483 # ifdef KMP_STUB
484  #define FTN_GET_INITIAL_DEVICE OMP_GET_INITIAL_DEVICE_
485  #define FTN_TARGET_ALLOC OMP_TARGET_ALLOC_
486  #define FTN_TARGET_FREE OMP_TARGET_FREE_
487  #define FTN_TARGET_IS_PRESENT OMP_TARGET_IS_PRESENT_
488  #define FTN_TARGET_MEMCPY OMP_TARGET_MEMCPY_
489  #define FTN_TARGET_MEMCPY_RECT OMP_TARGET_MEMCPY_RECT_
490  #define FTN_TARGET_ASSOCIATE_PTR OMP_TARGET_ASSOCIATE_PTR_
491  #define FTN_TARGET_DISASSOCIATE_PTR OMP_TARGET_DISASSOCIATE_PTR_
492 # endif
493 #endif
494 
495 #endif /* KMP_FTN_UAPPEND */
496 
497 /* ------------------------------------------------------------------ */
498 /* -------------------------- GOMP API NAMES ------------------------ */
499 // All GOMP_1.0 symbols
500 #define KMP_API_NAME_GOMP_ATOMIC_END GOMP_atomic_end
501 #define KMP_API_NAME_GOMP_ATOMIC_START GOMP_atomic_start
502 #define KMP_API_NAME_GOMP_BARRIER GOMP_barrier
503 #define KMP_API_NAME_GOMP_CRITICAL_END GOMP_critical_end
504 #define KMP_API_NAME_GOMP_CRITICAL_NAME_END GOMP_critical_name_end
505 #define KMP_API_NAME_GOMP_CRITICAL_NAME_START GOMP_critical_name_start
506 #define KMP_API_NAME_GOMP_CRITICAL_START GOMP_critical_start
507 #define KMP_API_NAME_GOMP_LOOP_DYNAMIC_NEXT GOMP_loop_dynamic_next
508 #define KMP_API_NAME_GOMP_LOOP_DYNAMIC_START GOMP_loop_dynamic_start
509 #define KMP_API_NAME_GOMP_LOOP_END GOMP_loop_end
510 #define KMP_API_NAME_GOMP_LOOP_END_NOWAIT GOMP_loop_end_nowait
511 #define KMP_API_NAME_GOMP_LOOP_GUIDED_NEXT GOMP_loop_guided_next
512 #define KMP_API_NAME_GOMP_LOOP_GUIDED_START GOMP_loop_guided_start
513 #define KMP_API_NAME_GOMP_LOOP_ORDERED_DYNAMIC_NEXT GOMP_loop_ordered_dynamic_next
514 #define KMP_API_NAME_GOMP_LOOP_ORDERED_DYNAMIC_START GOMP_loop_ordered_dynamic_start
515 #define KMP_API_NAME_GOMP_LOOP_ORDERED_GUIDED_NEXT GOMP_loop_ordered_guided_next
516 #define KMP_API_NAME_GOMP_LOOP_ORDERED_GUIDED_START GOMP_loop_ordered_guided_start
517 #define KMP_API_NAME_GOMP_LOOP_ORDERED_RUNTIME_NEXT GOMP_loop_ordered_runtime_next
518 #define KMP_API_NAME_GOMP_LOOP_ORDERED_RUNTIME_START GOMP_loop_ordered_runtime_start
519 #define KMP_API_NAME_GOMP_LOOP_ORDERED_STATIC_NEXT GOMP_loop_ordered_static_next
520 #define KMP_API_NAME_GOMP_LOOP_ORDERED_STATIC_START GOMP_loop_ordered_static_start
521 #define KMP_API_NAME_GOMP_LOOP_RUNTIME_NEXT GOMP_loop_runtime_next
522 #define KMP_API_NAME_GOMP_LOOP_RUNTIME_START GOMP_loop_runtime_start
523 #define KMP_API_NAME_GOMP_LOOP_STATIC_NEXT GOMP_loop_static_next
524 #define KMP_API_NAME_GOMP_LOOP_STATIC_START GOMP_loop_static_start
525 #define KMP_API_NAME_GOMP_ORDERED_END GOMP_ordered_end
526 #define KMP_API_NAME_GOMP_ORDERED_START GOMP_ordered_start
527 #define KMP_API_NAME_GOMP_PARALLEL_END GOMP_parallel_end
528 #define KMP_API_NAME_GOMP_PARALLEL_LOOP_DYNAMIC_START GOMP_parallel_loop_dynamic_start
529 #define KMP_API_NAME_GOMP_PARALLEL_LOOP_GUIDED_START GOMP_parallel_loop_guided_start
530 #define KMP_API_NAME_GOMP_PARALLEL_LOOP_RUNTIME_START GOMP_parallel_loop_runtime_start
531 #define KMP_API_NAME_GOMP_PARALLEL_LOOP_STATIC_START GOMP_parallel_loop_static_start
532 #define KMP_API_NAME_GOMP_PARALLEL_SECTIONS_START GOMP_parallel_sections_start
533 #define KMP_API_NAME_GOMP_PARALLEL_START GOMP_parallel_start
534 #define KMP_API_NAME_GOMP_SECTIONS_END GOMP_sections_end
535 #define KMP_API_NAME_GOMP_SECTIONS_END_NOWAIT GOMP_sections_end_nowait
536 #define KMP_API_NAME_GOMP_SECTIONS_NEXT GOMP_sections_next
537 #define KMP_API_NAME_GOMP_SECTIONS_START GOMP_sections_start
538 #define KMP_API_NAME_GOMP_SINGLE_COPY_END GOMP_single_copy_end
539 #define KMP_API_NAME_GOMP_SINGLE_COPY_START GOMP_single_copy_start
540 #define KMP_API_NAME_GOMP_SINGLE_START GOMP_single_start
541 
542 // All GOMP_2.0 symbols
543 #define KMP_API_NAME_GOMP_TASK GOMP_task
544 #define KMP_API_NAME_GOMP_TASKWAIT GOMP_taskwait
545 #define KMP_API_NAME_GOMP_LOOP_ULL_DYNAMIC_NEXT GOMP_loop_ull_dynamic_next
546 #define KMP_API_NAME_GOMP_LOOP_ULL_DYNAMIC_START GOMP_loop_ull_dynamic_start
547 #define KMP_API_NAME_GOMP_LOOP_ULL_GUIDED_NEXT GOMP_loop_ull_guided_next
548 #define KMP_API_NAME_GOMP_LOOP_ULL_GUIDED_START GOMP_loop_ull_guided_start
549 #define KMP_API_NAME_GOMP_LOOP_ULL_ORDERED_DYNAMIC_NEXT GOMP_loop_ull_ordered_dynamic_next
550 #define KMP_API_NAME_GOMP_LOOP_ULL_ORDERED_DYNAMIC_START GOMP_loop_ull_ordered_dynamic_start
551 #define KMP_API_NAME_GOMP_LOOP_ULL_ORDERED_GUIDED_NEXT GOMP_loop_ull_ordered_guided_next
552 #define KMP_API_NAME_GOMP_LOOP_ULL_ORDERED_GUIDED_START GOMP_loop_ull_ordered_guided_start
553 #define KMP_API_NAME_GOMP_LOOP_ULL_ORDERED_RUNTIME_NEXT GOMP_loop_ull_ordered_runtime_next
554 #define KMP_API_NAME_GOMP_LOOP_ULL_ORDERED_RUNTIME_START GOMP_loop_ull_ordered_runtime_start
555 #define KMP_API_NAME_GOMP_LOOP_ULL_ORDERED_STATIC_NEXT GOMP_loop_ull_ordered_static_next
556 #define KMP_API_NAME_GOMP_LOOP_ULL_ORDERED_STATIC_START GOMP_loop_ull_ordered_static_start
557 #define KMP_API_NAME_GOMP_LOOP_ULL_RUNTIME_NEXT GOMP_loop_ull_runtime_next
558 #define KMP_API_NAME_GOMP_LOOP_ULL_RUNTIME_START GOMP_loop_ull_runtime_start
559 #define KMP_API_NAME_GOMP_LOOP_ULL_STATIC_NEXT GOMP_loop_ull_static_next
560 #define KMP_API_NAME_GOMP_LOOP_ULL_STATIC_START GOMP_loop_ull_static_start
561 
562 // All GOMP_3.0 symbols
563 #define KMP_API_NAME_GOMP_TASKYIELD GOMP_taskyield
564 
565 // All GOMP_4.0 symbols
566 // TODO: As of 2013-10-14, none of the GOMP_4.0 functions are implemented in libomp
567 #define KMP_API_NAME_GOMP_BARRIER_CANCEL GOMP_barrier_cancel
568 #define KMP_API_NAME_GOMP_CANCEL GOMP_cancel
569 #define KMP_API_NAME_GOMP_CANCELLATION_POINT GOMP_cancellation_point
570 #define KMP_API_NAME_GOMP_LOOP_END_CANCEL GOMP_loop_end_cancel
571 #define KMP_API_NAME_GOMP_PARALLEL_LOOP_DYNAMIC GOMP_parallel_loop_dynamic
572 #define KMP_API_NAME_GOMP_PARALLEL_LOOP_GUIDED GOMP_parallel_loop_guided
573 #define KMP_API_NAME_GOMP_PARALLEL_LOOP_RUNTIME GOMP_parallel_loop_runtime
574 #define KMP_API_NAME_GOMP_PARALLEL_LOOP_STATIC GOMP_parallel_loop_static
575 #define KMP_API_NAME_GOMP_PARALLEL_SECTIONS GOMP_parallel_sections
576 #define KMP_API_NAME_GOMP_PARALLEL GOMP_parallel
577 #define KMP_API_NAME_GOMP_SECTIONS_END_CANCEL GOMP_sections_end_cancel
578 #define KMP_API_NAME_GOMP_TASKGROUP_START GOMP_taskgroup_start
579 #define KMP_API_NAME_GOMP_TASKGROUP_END GOMP_taskgroup_end
580 /* Target functions should be taken care of by liboffload */
581 #define KMP_API_NAME_GOMP_TARGET GOMP_target
582 #define KMP_API_NAME_GOMP_TARGET_DATA GOMP_target_data
583 #define KMP_API_NAME_GOMP_TARGET_END_DATA GOMP_target_end_data
584 #define KMP_API_NAME_GOMP_TARGET_UPDATE GOMP_target_update
585 #define KMP_API_NAME_GOMP_TEAMS GOMP_teams
586 
587 #ifdef KMP_USE_VERSION_SYMBOLS
588  #define xstr(x) str(x)
589  #define str(x) #x
590 
591  // If Linux, xexpand prepends __kmp_api_ to the real API name
592  #define xexpand(api_name) expand(api_name)
593  #define expand(api_name) __kmp_api_##api_name
594 
595  #define xaliasify(api_name,ver) aliasify(api_name,ver)
596  #define aliasify(api_name,ver) __typeof__(__kmp_api_##api_name) __kmp_api_##api_name##_##ver##_alias __attribute__((alias(xstr(__kmp_api_##api_name))))
597 
598  #define xversionify(api_name, version_num, version_str) versionify(api_name, version_num, version_str, "VERSION")
599  #define versionify(api_name, version_num, version_str, default_ver) \
600  __asm__(".symver " xstr(__kmp_api_##api_name##_##version_num##_alias) "," xstr(api_name) "@" version_str "\n\t"); \
601  __asm__(".symver " xstr(__kmp_api_##api_name) "," xstr(api_name) "@@" default_ver "\n\t")
602 
603 #else // KMP_USE_VERSION_SYMBOLS
604  #define xstr(x) /* Nothing */
605  #define str(x) /* Nothing */
606 
607  // if Windows or Mac, xexpand does no name transformation
608  #define xexpand(api_name) expand(api_name)
609  #define expand(api_name) api_name
610 
611  #define xaliasify(api_name,ver) /* Nothing */
612  #define aliasify(api_name,ver) /* Nothing */
613 
614  #define xversionify(api_name, version_num, version_str) /* Nothing */
615  #define versionify(api_name, version_num, version_str, default_ver) /* Nothing */
616 
617 #endif // KMP_USE_VERSION_SYMBOLS
618 
619 #endif /* KMP_FTN_OS_H */
620