Intel® OpenMP* Runtime Library
 All Classes Functions Variables Typedefs Enumerations Enumerator Modules Pages
kmp_ftn_os.h
1 /*
2  * kmp_ftn_os.h -- KPTS Fortran defines header file.
3  */
4 
5 /* <copyright>
6  Copyright (c) 1997-2015 Intel Corporation. All Rights Reserved.
7 
8  Redistribution and use in source and binary forms, with or without
9  modification, are permitted provided that the following conditions
10  are met:
11 
12  * Redistributions of source code must retain the above copyright
13  notice, this list of conditions and the following disclaimer.
14  * Redistributions in binary form must reproduce the above copyright
15  notice, this list of conditions and the following disclaimer in the
16  documentation and/or other materials provided with the distribution.
17  * Neither the name of Intel Corporation nor the names of its
18  contributors may be used to endorse or promote products derived
19  from this software without specific prior written permission.
20 
21  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25  HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 
33 </copyright> */
34 
35 #ifndef KMP_FTN_OS_H
36 #define KMP_FTN_OS_H
37 
38 // KMP_FNT_ENTRIES may be one of: KMP_FTN_PLAIN, KMP_FTN_UPPER, KMP_FTN_APPEND, KMP_FTN_UAPPEND.
39 
40 
41 /* -------------------------- External definitions ------------------------ */
42 
43 #if KMP_FTN_ENTRIES == KMP_FTN_PLAIN
44 
45  #define FTN_SET_STACKSIZE kmp_set_stacksize
46  #define FTN_SET_STACKSIZE_S kmp_set_stacksize_s
47  #define FTN_GET_STACKSIZE kmp_get_stacksize
48  #define FTN_GET_STACKSIZE_S kmp_get_stacksize_s
49  #define FTN_SET_BLOCKTIME kmp_set_blocktime
50  #define FTN_GET_BLOCKTIME kmp_get_blocktime
51  #define FTN_SET_LIBRARY_SERIAL kmp_set_library_serial
52  #define FTN_SET_LIBRARY_TURNAROUND kmp_set_library_turnaround
53  #define FTN_SET_LIBRARY_THROUGHPUT kmp_set_library_throughput
54  #define FTN_SET_LIBRARY kmp_set_library
55  #define FTN_GET_LIBRARY kmp_get_library
56  #define FTN_SET_DEFAULTS kmp_set_defaults
57  #define FTN_SET_AFFINITY kmp_set_affinity
58  #define FTN_GET_AFFINITY kmp_get_affinity
59  #define FTN_GET_AFFINITY_MAX_PROC kmp_get_affinity_max_proc
60  #define FTN_CREATE_AFFINITY_MASK kmp_create_affinity_mask
61  #define FTN_DESTROY_AFFINITY_MASK kmp_destroy_affinity_mask
62  #define FTN_SET_AFFINITY_MASK_PROC kmp_set_affinity_mask_proc
63  #define FTN_UNSET_AFFINITY_MASK_PROC kmp_unset_affinity_mask_proc
64  #define FTN_GET_AFFINITY_MASK_PROC kmp_get_affinity_mask_proc
65 
66  #define FTN_MALLOC kmp_malloc
67  #define FTN_CALLOC kmp_calloc
68  #define FTN_REALLOC kmp_realloc
69  #define FTN_FREE kmp_free
70 
71  #define FTN_GET_NUM_KNOWN_THREADS kmp_get_num_known_threads
72 
73  #define FTN_SET_NUM_THREADS omp_set_num_threads
74  #define FTN_GET_NUM_THREADS omp_get_num_threads
75  #define FTN_GET_MAX_THREADS omp_get_max_threads
76  #define FTN_GET_THREAD_NUM omp_get_thread_num
77  #define FTN_GET_NUM_PROCS omp_get_num_procs
78  #define FTN_SET_DYNAMIC omp_set_dynamic
79  #define FTN_GET_DYNAMIC omp_get_dynamic
80  #define FTN_SET_NESTED omp_set_nested
81  #define FTN_GET_NESTED omp_get_nested
82  #define FTN_IN_PARALLEL omp_in_parallel
83  #define FTN_GET_THREAD_LIMIT omp_get_thread_limit
84  #define FTN_SET_SCHEDULE omp_set_schedule
85  #define FTN_GET_SCHEDULE omp_get_schedule
86  #define FTN_SET_MAX_ACTIVE_LEVELS omp_set_max_active_levels
87  #define FTN_GET_MAX_ACTIVE_LEVELS omp_get_max_active_levels
88  #define FTN_GET_ACTIVE_LEVEL omp_get_active_level
89  #define FTN_GET_LEVEL omp_get_level
90  #define FTN_GET_ANCESTOR_THREAD_NUM omp_get_ancestor_thread_num
91  #define FTN_GET_TEAM_SIZE omp_get_team_size
92  #define FTN_IN_FINAL omp_in_final
93 // #define FTN_SET_PROC_BIND omp_set_proc_bind
94  #define FTN_GET_PROC_BIND omp_get_proc_bind
95 // #define FTN_CURR_PROC_BIND omp_curr_proc_bind
96 #if OMP_40_ENABLED
97  #define FTN_GET_NUM_TEAMS omp_get_num_teams
98  #define FTN_GET_TEAM_NUM omp_get_team_num
99 #endif
100  #define FTN_INIT_LOCK omp_init_lock
101 #if KMP_USE_DYNAMIC_LOCK
102  #define FTN_INIT_LOCK_HINTED kmp_init_lock_hinted
103  #define FTN_INIT_NEST_LOCK_HINTED kmp_init_nest_lock_hinted
104 #endif
105  #define FTN_DESTROY_LOCK omp_destroy_lock
106  #define FTN_SET_LOCK omp_set_lock
107  #define FTN_UNSET_LOCK omp_unset_lock
108  #define FTN_TEST_LOCK omp_test_lock
109  #define FTN_INIT_NEST_LOCK omp_init_nest_lock
110  #define FTN_DESTROY_NEST_LOCK omp_destroy_nest_lock
111  #define FTN_SET_NEST_LOCK omp_set_nest_lock
112  #define FTN_UNSET_NEST_LOCK omp_unset_nest_lock
113  #define FTN_TEST_NEST_LOCK omp_test_nest_lock
114 
115  #define FTN_SET_WARNINGS_ON kmp_set_warnings_on
116  #define FTN_SET_WARNINGS_OFF kmp_set_warnings_off
117 
118  #define FTN_GET_WTIME omp_get_wtime
119  #define FTN_GET_WTICK omp_get_wtick
120 
121 #if OMP_40_ENABLED
122 #if KMP_MIC || KMP_OS_DARWIN
123  #define FTN_GET_DEFAULT_DEVICE omp_get_default_device
124  #define FTN_SET_DEFAULT_DEVICE omp_set_default_device
125  #define FTN_GET_NUM_DEVICES omp_get_num_devices
126 #endif
127  #define FTN_IS_INITIAL_DEVICE omp_is_initial_device
128 #endif
129 
130 #if OMP_40_ENABLED
131  #define FTN_GET_CANCELLATION omp_get_cancellation
132  #define FTN_GET_CANCELLATION_STATUS kmp_get_cancellation_status
133 #endif
134 
135 #endif /* KMP_FTN_PLAIN */
136 
137 /* ------------------------------------------------------------------------ */
138 
139 #if KMP_FTN_ENTRIES == KMP_FTN_APPEND
140 
141  #define FTN_SET_STACKSIZE kmp_set_stacksize_
142  #define FTN_SET_STACKSIZE_S kmp_set_stacksize_s_
143  #define FTN_GET_STACKSIZE kmp_get_stacksize_
144  #define FTN_GET_STACKSIZE_S kmp_get_stacksize_s_
145  #define FTN_SET_BLOCKTIME kmp_set_blocktime_
146  #define FTN_GET_BLOCKTIME kmp_get_blocktime_
147  #define FTN_SET_LIBRARY_SERIAL kmp_set_library_serial_
148  #define FTN_SET_LIBRARY_TURNAROUND kmp_set_library_turnaround_
149  #define FTN_SET_LIBRARY_THROUGHPUT kmp_set_library_throughput_
150  #define FTN_SET_LIBRARY kmp_set_library_
151  #define FTN_GET_LIBRARY kmp_get_library_
152  #define FTN_SET_DEFAULTS kmp_set_defaults_
153  #define FTN_SET_AFFINITY kmp_set_affinity_
154  #define FTN_GET_AFFINITY kmp_get_affinity_
155  #define FTN_GET_AFFINITY_MAX_PROC kmp_get_affinity_max_proc_
156  #define FTN_CREATE_AFFINITY_MASK kmp_create_affinity_mask_
157  #define FTN_DESTROY_AFFINITY_MASK kmp_destroy_affinity_mask_
158  #define FTN_SET_AFFINITY_MASK_PROC kmp_set_affinity_mask_proc_
159  #define FTN_UNSET_AFFINITY_MASK_PROC kmp_unset_affinity_mask_proc_
160  #define FTN_GET_AFFINITY_MASK_PROC kmp_get_affinity_mask_proc_
161 
162  #define FTN_MALLOC kmp_malloc_
163  #define FTN_CALLOC kmp_calloc_
164  #define FTN_REALLOC kmp_realloc_
165  #define FTN_FREE kmp_free_
166 
167  #define FTN_GET_NUM_KNOWN_THREADS kmp_get_num_known_threads_
168 
169  #define FTN_SET_NUM_THREADS omp_set_num_threads_
170  #define FTN_GET_NUM_THREADS omp_get_num_threads_
171  #define FTN_GET_MAX_THREADS omp_get_max_threads_
172  #define FTN_GET_THREAD_NUM omp_get_thread_num_
173  #define FTN_GET_NUM_PROCS omp_get_num_procs_
174  #define FTN_SET_DYNAMIC omp_set_dynamic_
175  #define FTN_GET_DYNAMIC omp_get_dynamic_
176  #define FTN_SET_NESTED omp_set_nested_
177  #define FTN_GET_NESTED omp_get_nested_
178  #define FTN_IN_PARALLEL omp_in_parallel_
179  #define FTN_GET_THREAD_LIMIT omp_get_thread_limit_
180  #define FTN_SET_SCHEDULE omp_set_schedule_
181  #define FTN_GET_SCHEDULE omp_get_schedule_
182  #define FTN_SET_MAX_ACTIVE_LEVELS omp_set_max_active_levels_
183  #define FTN_GET_MAX_ACTIVE_LEVELS omp_get_max_active_levels_
184  #define FTN_GET_ACTIVE_LEVEL omp_get_active_level_
185  #define FTN_GET_LEVEL omp_get_level_
186  #define FTN_GET_ANCESTOR_THREAD_NUM omp_get_ancestor_thread_num_
187  #define FTN_GET_TEAM_SIZE omp_get_team_size_
188  #define FTN_IN_FINAL omp_in_final_
189 // #define FTN_SET_PROC_BIND omp_set_proc_bind_
190  #define FTN_GET_PROC_BIND omp_get_proc_bind_
191 // #define FTN_CURR_PROC_BIND omp_curr_proc_bind_
192 #if OMP_40_ENABLED
193  #define FTN_GET_NUM_TEAMS omp_get_num_teams_
194  #define FTN_GET_TEAM_NUM omp_get_team_num_
195 #endif
196  #define FTN_INIT_LOCK omp_init_lock_
197 #if KMP_USE_DYNAMIC_LOCK
198  #define FTN_INIT_LOCK_HINTED kmp_init_lock_hinted_
199  #define FTN_INIT_NEST_LOCK_HINTED kmp_init_nest_lock_hinted_
200 #endif
201  #define FTN_DESTROY_LOCK omp_destroy_lock_
202  #define FTN_SET_LOCK omp_set_lock_
203  #define FTN_UNSET_LOCK omp_unset_lock_
204  #define FTN_TEST_LOCK omp_test_lock_
205  #define FTN_INIT_NEST_LOCK omp_init_nest_lock_
206  #define FTN_DESTROY_NEST_LOCK omp_destroy_nest_lock_
207  #define FTN_SET_NEST_LOCK omp_set_nest_lock_
208  #define FTN_UNSET_NEST_LOCK omp_unset_nest_lock_
209  #define FTN_TEST_NEST_LOCK omp_test_nest_lock_
210 
211  #define FTN_SET_WARNINGS_ON kmp_set_warnings_on_
212  #define FTN_SET_WARNINGS_OFF kmp_set_warnings_off_
213 
214  #define FTN_GET_WTIME omp_get_wtime_
215  #define FTN_GET_WTICK omp_get_wtick_
216 
217 #if OMP_40_ENABLED
218 #if KMP_MIC || KMP_OS_DARWIN
219  #define FTN_GET_DEFAULT_DEVICE omp_get_default_device_
220  #define FTN_SET_DEFAULT_DEVICE omp_set_default_device_
221  #define FTN_GET_NUM_DEVICES omp_get_num_devices_
222 #endif
223  #define FTN_IS_INITIAL_DEVICE omp_is_initial_device_
224 #endif
225 
226 
227 #if OMP_40_ENABLED
228  #define FTN_GET_CANCELLATION omp_get_cancellation_
229  #define FTN_GET_CANCELLATION_STATUS kmp_get_cancellation_status_
230 #endif
231 
232 #endif /* KMP_FTN_APPEND */
233 
234 /* ------------------------------------------------------------------------ */
235 
236 #if KMP_FTN_ENTRIES == KMP_FTN_UPPER
237 
238  #define FTN_SET_STACKSIZE KMP_SET_STACKSIZE
239  #define FTN_SET_STACKSIZE_S KMP_SET_STACKSIZE_S
240  #define FTN_GET_STACKSIZE KMP_GET_STACKSIZE
241  #define FTN_GET_STACKSIZE_S KMP_GET_STACKSIZE_S
242  #define FTN_SET_BLOCKTIME KMP_SET_BLOCKTIME
243  #define FTN_GET_BLOCKTIME KMP_GET_BLOCKTIME
244  #define FTN_SET_LIBRARY_SERIAL KMP_SET_LIBRARY_SERIAL
245  #define FTN_SET_LIBRARY_TURNAROUND KMP_SET_LIBRARY_TURNAROUND
246  #define FTN_SET_LIBRARY_THROUGHPUT KMP_SET_LIBRARY_THROUGHPUT
247  #define FTN_SET_LIBRARY KMP_SET_LIBRARY
248  #define FTN_GET_LIBRARY KMP_GET_LIBRARY
249  #define FTN_SET_DEFAULTS KMP_SET_DEFAULTS
250  #define FTN_SET_AFFINITY KMP_SET_AFFINITY
251  #define FTN_GET_AFFINITY KMP_GET_AFFINITY
252  #define FTN_GET_AFFINITY_MAX_PROC KMP_GET_AFFINITY_MAX_PROC
253  #define FTN_CREATE_AFFINITY_MASK KMP_CREATE_AFFINITY_MASK
254  #define FTN_DESTROY_AFFINITY_MASK KMP_DESTROY_AFFINITY_MASK
255  #define FTN_SET_AFFINITY_MASK_PROC KMP_SET_AFFINITY_MASK_PROC
256  #define FTN_UNSET_AFFINITY_MASK_PROC KMP_UNSET_AFFINITY_MASK_PROC
257  #define FTN_GET_AFFINITY_MASK_PROC KMP_GET_AFFINITY_MASK_PROC
258 
259  #define FTN_MALLOC KMP_MALLOC
260  #define FTN_CALLOC KMP_CALLOC
261  #define FTN_REALLOC KMP_REALLOC
262  #define FTN_FREE KMP_FREE
263 
264  #define FTN_GET_NUM_KNOWN_THREADS KMP_GET_NUM_KNOWN_THREADS
265 
266  #define FTN_SET_NUM_THREADS OMP_SET_NUM_THREADS
267  #define FTN_GET_NUM_THREADS OMP_GET_NUM_THREADS
268  #define FTN_GET_MAX_THREADS OMP_GET_MAX_THREADS
269  #define FTN_GET_THREAD_NUM OMP_GET_THREAD_NUM
270  #define FTN_GET_NUM_PROCS OMP_GET_NUM_PROCS
271  #define FTN_SET_DYNAMIC OMP_SET_DYNAMIC
272  #define FTN_GET_DYNAMIC OMP_GET_DYNAMIC
273  #define FTN_SET_NESTED OMP_SET_NESTED
274  #define FTN_GET_NESTED OMP_GET_NESTED
275  #define FTN_IN_PARALLEL OMP_IN_PARALLEL
276  #define FTN_GET_THREAD_LIMIT OMP_GET_THREAD_LIMIT
277  #define FTN_SET_SCHEDULE OMP_SET_SCHEDULE
278  #define FTN_GET_SCHEDULE OMP_GET_SCHEDULE
279  #define FTN_SET_MAX_ACTIVE_LEVELS OMP_SET_MAX_ACTIVE_LEVELS
280  #define FTN_GET_MAX_ACTIVE_LEVELS OMP_GET_MAX_ACTIVE_LEVELS
281  #define FTN_GET_ACTIVE_LEVEL OMP_GET_ACTIVE_LEVEL
282  #define FTN_GET_LEVEL OMP_GET_LEVEL
283  #define FTN_GET_ANCESTOR_THREAD_NUM OMP_GET_ANCESTOR_THREAD_NUM
284  #define FTN_GET_TEAM_SIZE OMP_GET_TEAM_SIZE
285  #define FTN_IN_FINAL OMP_IN_FINAL
286 // #define FTN_SET_PROC_BIND OMP_SET_PROC_BIND
287  #define FTN_GET_PROC_BIND OMP_GET_PROC_BIND
288 // #define FTN_CURR_PROC_BIND OMP_CURR_PROC_BIND
289 #if OMP_40_ENABLED
290  #define FTN_GET_NUM_TEAMS OMP_GET_NUM_TEAMS
291  #define FTN_GET_TEAM_NUM OMP_GET_TEAM_NUM
292 #endif
293  #define FTN_INIT_LOCK OMP_INIT_LOCK
294 #if KMP_USE_DYNAMIC_LOCK
295  #define FTN_INIT_LOCK_HINTED KMP_INIT_LOCK_HINTED
296  #define FTN_INIT_NEST_LOCK_HINTED KMP_INIT_NEST_LOCK_HINTED
297 #endif
298  #define FTN_DESTROY_LOCK OMP_DESTROY_LOCK
299  #define FTN_SET_LOCK OMP_SET_LOCK
300  #define FTN_UNSET_LOCK OMP_UNSET_LOCK
301  #define FTN_TEST_LOCK OMP_TEST_LOCK
302  #define FTN_INIT_NEST_LOCK OMP_INIT_NEST_LOCK
303  #define FTN_DESTROY_NEST_LOCK OMP_DESTROY_NEST_LOCK
304  #define FTN_SET_NEST_LOCK OMP_SET_NEST_LOCK
305  #define FTN_UNSET_NEST_LOCK OMP_UNSET_NEST_LOCK
306  #define FTN_TEST_NEST_LOCK OMP_TEST_NEST_LOCK
307 
308  #define FTN_SET_WARNINGS_ON KMP_SET_WARNINGS_ON
309  #define FTN_SET_WARNINGS_OFF KMP_SET_WARNINGS_OFF
310 
311  #define FTN_GET_WTIME OMP_GET_WTIME
312  #define FTN_GET_WTICK OMP_GET_WTICK
313 
314 #if OMP_40_ENABLED
315 #if KMP_MIC || KMP_OS_DARWIN
316  #define FTN_GET_DEFAULT_DEVICE OMP_GET_DEFAULT_DEVICE
317  #define FTN_SET_DEFAULT_DEVICE OMP_SET_DEFAULT_DEVICE
318  #define FTN_GET_NUM_DEVICES OMP_GET_NUM_DEVICES
319 #endif
320  #define FTN_IS_INITIAL_DEVICE OMP_IS_INITIAL_DEVICE
321 #endif
322 
323 
324 #if OMP_40_ENABLED
325  #define FTN_GET_CANCELLATION OMP_GET_CANCELLATION
326  #define FTN_GET_CANCELLATION_STATUS KMP_GET_CANCELLATION_STATUS
327 #endif
328 
329 #endif /* KMP_FTN_UPPER */
330 
331 /* ------------------------------------------------------------------------ */
332 
333 #if KMP_FTN_ENTRIES == KMP_FTN_UAPPEND
334 
335  #define FTN_SET_STACKSIZE KMP_SET_STACKSIZE_
336  #define FTN_SET_STACKSIZE_S KMP_SET_STACKSIZE_S_
337  #define FTN_GET_STACKSIZE KMP_GET_STACKSIZE_
338  #define FTN_GET_STACKSIZE_S KMP_GET_STACKSIZE_S_
339  #define FTN_SET_BLOCKTIME KMP_SET_BLOCKTIME_
340  #define FTN_GET_BLOCKTIME KMP_GET_BLOCKTIME_
341  #define FTN_SET_LIBRARY_SERIAL KMP_SET_LIBRARY_SERIAL_
342  #define FTN_SET_LIBRARY_TURNAROUND KMP_SET_LIBRARY_TURNAROUND_
343  #define FTN_SET_LIBRARY_THROUGHPUT KMP_SET_LIBRARY_THROUGHPUT_
344  #define FTN_SET_LIBRARY KMP_SET_LIBRARY_
345  #define FTN_GET_LIBRARY KMP_GET_LIBRARY_
346  #define FTN_SET_DEFAULTS KMP_SET_DEFAULTS_
347  #define FTN_SET_AFFINITY KMP_SET_AFFINITY_
348  #define FTN_GET_AFFINITY KMP_GET_AFFINITY_
349  #define FTN_GET_AFFINITY_MAX_PROC KMP_GET_AFFINITY_MAX_PROC_
350  #define FTN_CREATE_AFFINITY_MASK KMP_CREATE_AFFINITY_MASK_
351  #define FTN_DESTROY_AFFINITY_MASK KMP_DESTROY_AFFINITY_MASK_
352  #define FTN_SET_AFFINITY_MASK_PROC KMP_SET_AFFINITY_MASK_PROC_
353  #define FTN_UNSET_AFFINITY_MASK_PROC KMP_UNSET_AFFINITY_MASK_PROC_
354  #define FTN_GET_AFFINITY_MASK_PROC KMP_GET_AFFINITY_MASK_PROC_
355 
356  #define FTN_MALLOC KMP_MALLOC_
357  #define FTN_CALLOC KMP_CALLOC_
358  #define FTN_REALLOC KMP_REALLOC_
359  #define FTN_FREE KMP_FREE_
360 
361  #define FTN_GET_NUM_KNOWN_THREADS KMP_GET_NUM_KNOWN_THREADS_
362 
363  #define FTN_SET_NUM_THREADS OMP_SET_NUM_THREADS_
364  #define FTN_GET_NUM_THREADS OMP_GET_NUM_THREADS_
365  #define FTN_GET_MAX_THREADS OMP_GET_MAX_THREADS_
366  #define FTN_GET_THREAD_NUM OMP_GET_THREAD_NUM_
367  #define FTN_GET_NUM_PROCS OMP_GET_NUM_PROCS_
368  #define FTN_SET_DYNAMIC OMP_SET_DYNAMIC_
369  #define FTN_GET_DYNAMIC OMP_GET_DYNAMIC_
370  #define FTN_SET_NESTED OMP_SET_NESTED_
371  #define FTN_GET_NESTED OMP_GET_NESTED_
372  #define FTN_IN_PARALLEL OMP_IN_PARALLEL_
373  #define FTN_GET_THREAD_LIMIT OMP_GET_THREAD_LIMIT_
374  #define FTN_SET_SCHEDULE OMP_SET_SCHEDULE_
375  #define FTN_GET_SCHEDULE OMP_GET_SCHEDULE_
376  #define FTN_SET_MAX_ACTIVE_LEVELS OMP_SET_MAX_ACTIVE_LEVELS_
377  #define FTN_GET_MAX_ACTIVE_LEVELS OMP_GET_MAX_ACTIVE_LEVELS_
378  #define FTN_GET_ACTIVE_LEVEL OMP_GET_ACTIVE_LEVEL_
379  #define FTN_GET_LEVEL OMP_GET_LEVEL_
380  #define FTN_GET_ANCESTOR_THREAD_NUM OMP_GET_ANCESTOR_THREAD_NUM_
381  #define FTN_GET_TEAM_SIZE OMP_GET_TEAM_SIZE_
382  #define FTN_IN_FINAL OMP_IN_FINAL_
383 // #define FTN_SET_PROC_BIND OMP_SET_PROC_BIND_
384  #define FTN_GET_PROC_BIND OMP_GET_PROC_BIND_
385 // #define FTN_CURR_PROC_BIND OMP_CURR_PROC_BIND_
386 #if OMP_40_ENABLED
387  #define FTN_GET_NUM_TEAMS OMP_GET_NUM_TEAMS_
388  #define FTN_GET_TEAM_NUM OMP_GET_TEAM_NUM_
389 #endif
390  #define FTN_INIT_LOCK OMP_INIT_LOCK_
391 #if KMP_USE_DYNAMIC_LOCK
392  #define FTN_INIT_LOCK_HINTED KMP_INIT_LOCK_HINTED_
393  #define FTN_INIT_NEST_LOCK_HINTED KMP_INIT_NEST_LOCK_HINTED_
394 #endif
395  #define FTN_DESTROY_LOCK OMP_DESTROY_LOCK_
396  #define FTN_SET_LOCK OMP_SET_LOCK_
397  #define FTN_UNSET_LOCK OMP_UNSET_LOCK_
398  #define FTN_TEST_LOCK OMP_TEST_LOCK_
399  #define FTN_INIT_NEST_LOCK OMP_INIT_NEST_LOCK_
400  #define FTN_DESTROY_NEST_LOCK OMP_DESTROY_NEST_LOCK_
401  #define FTN_SET_NEST_LOCK OMP_SET_NEST_LOCK_
402  #define FTN_UNSET_NEST_LOCK OMP_UNSET_NEST_LOCK_
403  #define FTN_TEST_NEST_LOCK OMP_TEST_NEST_LOCK_
404 
405  #define FTN_SET_WARNINGS_ON KMP_SET_WARNINGS_ON_
406  #define FTN_SET_WARNINGS_OFF KMP_SET_WARNINGS_OFF_
407 
408  #define FTN_GET_WTIME OMP_GET_WTIME_
409  #define FTN_GET_WTICK OMP_GET_WTICK_
410 
411 #if OMP_40_ENABLED
412 #if KMP_MIC || KMP_OS_DARWIN
413  #define FTN_GET_DEFAULT_DEVICE OMP_GET_DEFAULT_DEVICE_
414  #define FTN_SET_DEFAULT_DEVICE OMP_SET_DEFAULT_DEVICE_
415  #define FTN_GET_NUM_DEVICES OMP_GET_NUM_DEVICES_
416 #endif
417  #define FTN_IS_INITIAL_DEVICE OMP_IS_INITIAL_DEVICE_
418 #endif
419 
420 
421 #if OMP_40_ENABLED
422  #define FTN_GET_CANCELLATION OMP_GET_CANCELLATION_
423  #define FTN_GET_CANCELLATION_STATUS KMP_GET_CANCELLATION_STATUS_
424 #endif
425 
426 #endif /* KMP_FTN_UAPPEND */
427 
428 /* ------------------------------------------------------------------ */
429 /* -------------------------- GOMP API NAMES ------------------------ */
430 // All GOMP_1.0 symbols
431 #define KMP_API_NAME_GOMP_ATOMIC_END GOMP_atomic_end
432 #define KMP_API_NAME_GOMP_ATOMIC_START GOMP_atomic_start
433 #define KMP_API_NAME_GOMP_BARRIER GOMP_barrier
434 #define KMP_API_NAME_GOMP_CRITICAL_END GOMP_critical_end
435 #define KMP_API_NAME_GOMP_CRITICAL_NAME_END GOMP_critical_name_end
436 #define KMP_API_NAME_GOMP_CRITICAL_NAME_START GOMP_critical_name_start
437 #define KMP_API_NAME_GOMP_CRITICAL_START GOMP_critical_start
438 #define KMP_API_NAME_GOMP_LOOP_DYNAMIC_NEXT GOMP_loop_dynamic_next
439 #define KMP_API_NAME_GOMP_LOOP_DYNAMIC_START GOMP_loop_dynamic_start
440 #define KMP_API_NAME_GOMP_LOOP_END GOMP_loop_end
441 #define KMP_API_NAME_GOMP_LOOP_END_NOWAIT GOMP_loop_end_nowait
442 #define KMP_API_NAME_GOMP_LOOP_GUIDED_NEXT GOMP_loop_guided_next
443 #define KMP_API_NAME_GOMP_LOOP_GUIDED_START GOMP_loop_guided_start
444 #define KMP_API_NAME_GOMP_LOOP_ORDERED_DYNAMIC_NEXT GOMP_loop_ordered_dynamic_next
445 #define KMP_API_NAME_GOMP_LOOP_ORDERED_DYNAMIC_START GOMP_loop_ordered_dynamic_start
446 #define KMP_API_NAME_GOMP_LOOP_ORDERED_GUIDED_NEXT GOMP_loop_ordered_guided_next
447 #define KMP_API_NAME_GOMP_LOOP_ORDERED_GUIDED_START GOMP_loop_ordered_guided_start
448 #define KMP_API_NAME_GOMP_LOOP_ORDERED_RUNTIME_NEXT GOMP_loop_ordered_runtime_next
449 #define KMP_API_NAME_GOMP_LOOP_ORDERED_RUNTIME_START GOMP_loop_ordered_runtime_start
450 #define KMP_API_NAME_GOMP_LOOP_ORDERED_STATIC_NEXT GOMP_loop_ordered_static_next
451 #define KMP_API_NAME_GOMP_LOOP_ORDERED_STATIC_START GOMP_loop_ordered_static_start
452 #define KMP_API_NAME_GOMP_LOOP_RUNTIME_NEXT GOMP_loop_runtime_next
453 #define KMP_API_NAME_GOMP_LOOP_RUNTIME_START GOMP_loop_runtime_start
454 #define KMP_API_NAME_GOMP_LOOP_STATIC_NEXT GOMP_loop_static_next
455 #define KMP_API_NAME_GOMP_LOOP_STATIC_START GOMP_loop_static_start
456 #define KMP_API_NAME_GOMP_ORDERED_END GOMP_ordered_end
457 #define KMP_API_NAME_GOMP_ORDERED_START GOMP_ordered_start
458 #define KMP_API_NAME_GOMP_PARALLEL_END GOMP_parallel_end
459 #define KMP_API_NAME_GOMP_PARALLEL_LOOP_DYNAMIC_START GOMP_parallel_loop_dynamic_start
460 #define KMP_API_NAME_GOMP_PARALLEL_LOOP_GUIDED_START GOMP_parallel_loop_guided_start
461 #define KMP_API_NAME_GOMP_PARALLEL_LOOP_RUNTIME_START GOMP_parallel_loop_runtime_start
462 #define KMP_API_NAME_GOMP_PARALLEL_LOOP_STATIC_START GOMP_parallel_loop_static_start
463 #define KMP_API_NAME_GOMP_PARALLEL_SECTIONS_START GOMP_parallel_sections_start
464 #define KMP_API_NAME_GOMP_PARALLEL_START GOMP_parallel_start
465 #define KMP_API_NAME_GOMP_SECTIONS_END GOMP_sections_end
466 #define KMP_API_NAME_GOMP_SECTIONS_END_NOWAIT GOMP_sections_end_nowait
467 #define KMP_API_NAME_GOMP_SECTIONS_NEXT GOMP_sections_next
468 #define KMP_API_NAME_GOMP_SECTIONS_START GOMP_sections_start
469 #define KMP_API_NAME_GOMP_SINGLE_COPY_END GOMP_single_copy_end
470 #define KMP_API_NAME_GOMP_SINGLE_COPY_START GOMP_single_copy_start
471 #define KMP_API_NAME_GOMP_SINGLE_START GOMP_single_start
472 
473 // All GOMP_2.0 symbols
474 #define KMP_API_NAME_GOMP_TASK GOMP_task
475 #define KMP_API_NAME_GOMP_TASKWAIT GOMP_taskwait
476 #define KMP_API_NAME_GOMP_LOOP_ULL_DYNAMIC_NEXT GOMP_loop_ull_dynamic_next
477 #define KMP_API_NAME_GOMP_LOOP_ULL_DYNAMIC_START GOMP_loop_ull_dynamic_start
478 #define KMP_API_NAME_GOMP_LOOP_ULL_GUIDED_NEXT GOMP_loop_ull_guided_next
479 #define KMP_API_NAME_GOMP_LOOP_ULL_GUIDED_START GOMP_loop_ull_guided_start
480 #define KMP_API_NAME_GOMP_LOOP_ULL_ORDERED_DYNAMIC_NEXT GOMP_loop_ull_ordered_dynamic_next
481 #define KMP_API_NAME_GOMP_LOOP_ULL_ORDERED_DYNAMIC_START GOMP_loop_ull_ordered_dynamic_start
482 #define KMP_API_NAME_GOMP_LOOP_ULL_ORDERED_GUIDED_NEXT GOMP_loop_ull_ordered_guided_next
483 #define KMP_API_NAME_GOMP_LOOP_ULL_ORDERED_GUIDED_START GOMP_loop_ull_ordered_guided_start
484 #define KMP_API_NAME_GOMP_LOOP_ULL_ORDERED_RUNTIME_NEXT GOMP_loop_ull_ordered_runtime_next
485 #define KMP_API_NAME_GOMP_LOOP_ULL_ORDERED_RUNTIME_START GOMP_loop_ull_ordered_runtime_start
486 #define KMP_API_NAME_GOMP_LOOP_ULL_ORDERED_STATIC_NEXT GOMP_loop_ull_ordered_static_next
487 #define KMP_API_NAME_GOMP_LOOP_ULL_ORDERED_STATIC_START GOMP_loop_ull_ordered_static_start
488 #define KMP_API_NAME_GOMP_LOOP_ULL_RUNTIME_NEXT GOMP_loop_ull_runtime_next
489 #define KMP_API_NAME_GOMP_LOOP_ULL_RUNTIME_START GOMP_loop_ull_runtime_start
490 #define KMP_API_NAME_GOMP_LOOP_ULL_STATIC_NEXT GOMP_loop_ull_static_next
491 #define KMP_API_NAME_GOMP_LOOP_ULL_STATIC_START GOMP_loop_ull_static_start
492 
493 // All GOMP_3.0 symbols
494 #define KMP_API_NAME_GOMP_TASKYIELD GOMP_taskyield
495 
496 // All GOMP_4.0 symbols
497 // TODO: As of 2013-10-14, none of the GOMP_4.0 functions are implemented in libiomp5
498 #define KMP_API_NAME_GOMP_BARRIER_CANCEL GOMP_barrier_cancel
499 #define KMP_API_NAME_GOMP_CANCEL GOMP_cancel
500 #define KMP_API_NAME_GOMP_CANCELLATION_POINT GOMP_cancellation_point
501 #define KMP_API_NAME_GOMP_LOOP_END_CANCEL GOMP_loop_end_cancel
502 #define KMP_API_NAME_GOMP_PARALLEL_LOOP_DYNAMIC GOMP_parallel_loop_dynamic
503 #define KMP_API_NAME_GOMP_PARALLEL_LOOP_GUIDED GOMP_parallel_loop_guided
504 #define KMP_API_NAME_GOMP_PARALLEL_LOOP_RUNTIME GOMP_parallel_loop_runtime
505 #define KMP_API_NAME_GOMP_PARALLEL_LOOP_STATIC GOMP_parallel_loop_static
506 #define KMP_API_NAME_GOMP_PARALLEL_SECTIONS GOMP_parallel_sections
507 #define KMP_API_NAME_GOMP_PARALLEL GOMP_parallel
508 #define KMP_API_NAME_GOMP_SECTIONS_END_CANCEL GOMP_sections_end_cancel
509 #define KMP_API_NAME_GOMP_TASKGROUP_START GOMP_taskgroup_start
510 #define KMP_API_NAME_GOMP_TASKGROUP_END GOMP_taskgroup_end
511 /* Target functions should be taken care of by liboffload */
512 #define KMP_API_NAME_GOMP_TARGET GOMP_target
513 #define KMP_API_NAME_GOMP_TARGET_DATA GOMP_target_data
514 #define KMP_API_NAME_GOMP_TARGET_END_DATA GOMP_target_end_data
515 #define KMP_API_NAME_GOMP_TARGET_UPDATE GOMP_target_update
516 #define KMP_API_NAME_GOMP_TEAMS GOMP_teams
517 
518 #ifdef KMP_USE_VERSION_SYMBOLS
519  #define xstr(x) str(x)
520  #define str(x) #x
521 
522  // If Linux, xexpand prepends __kmp_api_ to the real API name
523  #define xexpand(api_name) expand(api_name)
524  #define expand(api_name) __kmp_api_##api_name
525 
526  #define xaliasify(api_name,ver) aliasify(api_name,ver)
527  #define aliasify(api_name,ver) __typeof__(__kmp_api_##api_name) __kmp_api_##api_name##_##ver##_alias __attribute__((alias(xstr(__kmp_api_##api_name))))
528 
529  #define xversionify(api_name, version_num, version_str) versionify(api_name, version_num, version_str, "VERSION")
530  #define versionify(api_name, version_num, version_str, default_ver) \
531  __asm__(".symver " xstr(__kmp_api_##api_name##_##version_num##_alias) "," xstr(api_name) "@" version_str "\n\t"); \
532  __asm__(".symver " xstr(__kmp_api_##api_name) "," xstr(api_name) "@@" default_ver "\n\t")
533 
534 #else // KMP_USE_VERSION_SYMBOLS
535  #define xstr(x) /* Nothing */
536  #define str(x) /* Nothing */
537 
538  // if Windows or Mac, xexpand does no name transformation
539  #define xexpand(api_name) expand(api_name)
540  #define expand(api_name) api_name
541 
542  #define xaliasify(api_name,ver) /* Nothing */
543  #define aliasify(api_name,ver) /* Nothing */
544 
545  #define xversionify(api_name, version_num, version_str) /* Nothing */
546  #define versionify(api_name, version_num, version_str, default_ver) /* Nothing */
547 
548 #endif // KMP_USE_VERSION_SYMBOLS
549 
550 #endif /* KMP_FTN_OS_H */
551