• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1! include/omp_lib.h.var
2
3!
4!//===----------------------------------------------------------------------===//
5!//
6!// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
7!// See https://llvm.org/LICENSE.txt for license information.
8!// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
9!//
10!//===----------------------------------------------------------------------===//
11!
12
13      integer omp_integer_kind
14      parameter(omp_integer_kind=4)
15      integer omp_logical_kind
16      parameter(omp_logical_kind=4)
17      integer omp_real_kind
18      parameter(omp_real_kind=4)
19      integer omp_lock_kind
20      parameter(omp_lock_kind=int_ptr_kind())
21      integer omp_nest_lock_kind
22      parameter(omp_nest_lock_kind=int_ptr_kind())
23      integer omp_sched_kind
24      parameter(omp_sched_kind=omp_integer_kind)
25      integer omp_proc_bind_kind
26      parameter(omp_proc_bind_kind=omp_integer_kind)
27      integer kmp_pointer_kind
28      parameter(kmp_pointer_kind=int_ptr_kind())
29      integer kmp_size_t_kind
30      parameter(kmp_size_t_kind=int_ptr_kind())
31      integer kmp_affinity_mask_kind
32      parameter(kmp_affinity_mask_kind=int_ptr_kind())
33      integer omp_sync_hint_kind
34      parameter(omp_sync_hint_kind=omp_integer_kind)
35      integer omp_lock_hint_kind
36      parameter(omp_lock_hint_kind=omp_sync_hint_kind)
37      integer omp_control_tool_kind
38      parameter(omp_control_tool_kind=omp_integer_kind)
39      integer omp_control_tool_result_kind
40      parameter(omp_control_tool_result_kind=omp_integer_kind)
41      integer omp_allocator_handle_kind
42      parameter(omp_allocator_handle_kind=int_ptr_kind())
43      integer omp_memspace_handle_kind
44      parameter(omp_memspace_handle_kind=int_ptr_kind())
45      integer omp_alloctrait_key_kind
46      parameter(omp_alloctrait_key_kind=omp_integer_kind)
47      integer omp_alloctrait_val_kind
48      parameter(omp_alloctrait_val_kind=int_ptr_kind())
49      integer omp_pause_resource_kind
50      parameter(omp_pause_resource_kind=omp_integer_kind)
51      integer omp_depend_kind
52      parameter(omp_depend_kind=int_ptr_kind())
53      integer omp_event_handle_kind
54      parameter(omp_event_handle_kind=int_ptr_kind())
55
56      integer(kind=omp_integer_kind)openmp_version
57      parameter(openmp_version=@LIBOMP_OMP_YEAR_MONTH@)
58      integer(kind=omp_integer_kind)kmp_version_major
59      parameter(kmp_version_major=@LIBOMP_VERSION_MAJOR@)
60      integer(kind=omp_integer_kind)kmp_version_minor
61      parameter(kmp_version_minor=@LIBOMP_VERSION_MINOR@)
62      integer(kind=omp_integer_kind)kmp_version_build
63      parameter(kmp_version_build=@LIBOMP_VERSION_BUILD@)
64      character(*)kmp_build_date
65      parameter(kmp_build_date='@LIBOMP_BUILD_DATE@')
66
67      integer(kind=omp_sched_kind)omp_sched_static
68      parameter(omp_sched_static=1)
69      integer(kind=omp_sched_kind)omp_sched_dynamic
70      parameter(omp_sched_dynamic=2)
71      integer(kind=omp_sched_kind)omp_sched_guided
72      parameter(omp_sched_guided=3)
73      integer(kind=omp_sched_kind)omp_sched_auto
74      parameter(omp_sched_auto=4)
75      integer(kind=omp_sched_kind)omp_sched_monotonic
76      parameter(omp_sched_monotonic=Z'80000000')
77
78      integer(kind=omp_proc_bind_kind)omp_proc_bind_false
79      parameter(omp_proc_bind_false=0)
80      integer(kind=omp_proc_bind_kind)omp_proc_bind_true
81      parameter(omp_proc_bind_true=1)
82      integer(kind=omp_proc_bind_kind)omp_proc_bind_master
83      parameter(omp_proc_bind_master=2)
84      integer(kind=omp_proc_bind_kind)omp_proc_bind_close
85      parameter(omp_proc_bind_close=3)
86      integer(kind=omp_proc_bind_kind)omp_proc_bind_spread
87      parameter(omp_proc_bind_spread=4)
88
89      integer(kind=omp_sync_hint_kind)omp_sync_hint_none
90      parameter(omp_sync_hint_none=0)
91      integer(kind=omp_sync_hint_kind)omp_sync_hint_uncontended
92      parameter(omp_sync_hint_uncontended=1)
93      integer(kind=omp_sync_hint_kind)omp_sync_hint_contended
94      parameter(omp_sync_hint_contended=2)
95      integer(kind=omp_sync_hint_kind)omp_sync_hint_nonspeculative
96      parameter(omp_sync_hint_nonspeculative=4)
97      integer(kind=omp_sync_hint_kind)omp_sync_hint_speculative
98      parameter(omp_sync_hint_speculative=8)
99      integer(kind=omp_lock_hint_kind)omp_lock_hint_none
100      parameter(omp_lock_hint_none=omp_sync_hint_none)
101      integer(kind=omp_lock_hint_kind)omp_lock_hint_uncontended
102      parameter(omp_lock_hint_uncontended=omp_sync_hint_uncontended)
103      integer(kind=omp_lock_hint_kind)omp_lock_hint_contended
104      parameter(omp_lock_hint_contended=omp_sync_hint_contended)
105      integer(kind=omp_lock_hint_kind)omp_lock_hint_nonspeculative
106      parameter(omp_lock_hint_nonspeculative=4)
107      integer(kind=omp_lock_hint_kind)omp_lock_hint_speculative
108      parameter(omp_lock_hint_speculative=omp_sync_hint_speculative)
109      integer(kind=omp_lock_hint_kind)kmp_lock_hint_hle
110      parameter(kmp_lock_hint_hle=65536)
111      integer(kind=omp_lock_hint_kind)kmp_lock_hint_rtm
112      parameter(kmp_lock_hint_rtm=131072)
113      integer(kind=omp_lock_hint_kind)kmp_lock_hint_adaptive
114      parameter(kmp_lock_hint_adaptive=262144)
115
116      integer(kind=omp_control_tool_kind)omp_control_tool_start
117      parameter(omp_control_tool_start=1)
118      integer(kind=omp_control_tool_kind)omp_control_tool_pause
119      parameter(omp_control_tool_pause=2)
120      integer(kind=omp_control_tool_kind)omp_control_tool_flush
121      parameter(omp_control_tool_flush=3)
122      integer(kind=omp_control_tool_kind)omp_control_tool_end
123      parameter(omp_control_tool_end=4)
124
125      integer(omp_control_tool_result_kind)omp_control_tool_notool
126      parameter(omp_control_tool_notool=-2)
127      integer(omp_control_tool_result_kind)omp_control_tool_nocallback
128      parameter(omp_control_tool_nocallback=-1)
129      integer(omp_control_tool_result_kind)omp_control_tool_success
130      parameter(omp_control_tool_success=0)
131      integer(omp_control_tool_result_kind)omp_control_tool_ignored
132      parameter(omp_control_tool_ignored=1)
133
134      integer(kind=omp_alloctrait_key_kind)omp_atk_threadmodel
135      parameter(omp_atk_threadmodel=1)
136      integer(kind=omp_alloctrait_key_kind)omp_atk_alignment
137      parameter(omp_atk_alignment=2)
138      integer(kind=omp_alloctrait_key_kind)omp_atk_access
139      parameter(omp_atk_access=3)
140      integer(kind=omp_alloctrait_key_kind)omp_atk_pool_size
141      parameter(omp_atk_pool_size=4)
142      integer(kind=omp_alloctrait_key_kind)omp_atk_fallback
143      parameter(omp_atk_fallback=5)
144      integer(kind=omp_alloctrait_key_kind)omp_atk_fb_data
145      parameter(omp_atk_fb_data=6)
146      integer(kind=omp_alloctrait_key_kind)omp_atk_pinned
147      parameter(omp_atk_pinned=7)
148      integer(kind=omp_alloctrait_key_kind)omp_atk_partition
149      parameter(omp_atk_partition=8)
150
151      ! Reserved for future use
152      integer(kind=omp_alloctrait_val_kind)omp_atv_false
153      parameter(omp_atv_false=0)
154      ! Reserved for future use
155      integer(kind=omp_alloctrait_val_kind)omp_atv_true
156      parameter(omp_atv_true=1)
157      integer(kind=omp_alloctrait_val_kind)omp_atv_default
158      parameter(omp_atv_default=2)
159      integer(kind=omp_alloctrait_val_kind)omp_atv_contended
160      parameter(omp_atv_contended=3)
161      integer(kind=omp_alloctrait_val_kind)omp_atv_uncontended
162      parameter(omp_atv_uncontended=4)
163      integer(kind=omp_alloctrait_val_kind)omp_atv_sequential
164      parameter(omp_atv_sequential=5)
165      integer(kind=omp_alloctrait_val_kind)omp_atv_private
166      parameter(omp_atv_private=6)
167      integer(kind=omp_alloctrait_val_kind)omp_atv_all
168      parameter(omp_atv_all=7)
169      integer(kind=omp_alloctrait_val_kind)omp_atv_thread
170      parameter(omp_atv_thread=8)
171      integer(kind=omp_alloctrait_val_kind)omp_atv_pteam
172      parameter(omp_atv_pteam=9)
173      integer(kind=omp_alloctrait_val_kind)omp_atv_cgroup
174      parameter(omp_atv_cgroup=10)
175      integer(kind=omp_alloctrait_val_kind)omp_atv_default_mem_fb
176      parameter(omp_atv_default_mem_fb=11)
177      integer(kind=omp_alloctrait_val_kind)omp_atv_null_fb
178      parameter(omp_atv_null_fb=12)
179      integer(kind=omp_alloctrait_val_kind)omp_atv_abort_fb
180      parameter(omp_atv_abort_fb=13)
181      integer(kind=omp_alloctrait_val_kind)omp_atv_allocator_fb
182      parameter(omp_atv_allocator_fb=14)
183      integer(kind=omp_alloctrait_val_kind)omp_atv_environment
184      parameter(omp_atv_environment=15)
185      integer(kind=omp_alloctrait_val_kind)omp_atv_nearest
186      parameter(omp_atv_nearest=16)
187      integer(kind=omp_alloctrait_val_kind)omp_atv_blocked
188      parameter(omp_atv_blocked=17)
189      integer(kind=omp_alloctrait_val_kind)omp_atv_interleaved
190      parameter(omp_atv_interleaved=18)
191
192      type omp_alloctrait
193        integer (kind=omp_alloctrait_key_kind) key
194        integer (kind=omp_alloctrait_val_kind) value
195      end type omp_alloctrait
196
197      integer(kind=omp_allocator_handle_kind)omp_null_allocator
198      parameter(omp_null_allocator=0)
199      integer(kind=omp_allocator_handle_kind)omp_default_mem_alloc
200      parameter(omp_default_mem_alloc=1)
201      integer(kind=omp_allocator_handle_kind)omp_large_cap_mem_alloc
202      parameter(omp_large_cap_mem_alloc=2)
203      integer(kind=omp_allocator_handle_kind)omp_const_mem_alloc
204      parameter(omp_const_mem_alloc=3)
205      integer(kind=omp_allocator_handle_kind)omp_high_bw_mem_alloc
206      parameter(omp_high_bw_mem_alloc=4)
207      integer(kind=omp_allocator_handle_kind)omp_low_lat_mem_alloc
208      parameter(omp_low_lat_mem_alloc=5)
209      integer(kind=omp_allocator_handle_kind)omp_cgroup_mem_alloc
210      parameter(omp_cgroup_mem_alloc=6)
211      integer(kind=omp_allocator_handle_kind)omp_pteam_mem_alloc
212      parameter(omp_pteam_mem_alloc=7)
213      integer(kind=omp_allocator_handle_kind)omp_thread_mem_alloc
214      parameter(omp_thread_mem_alloc=8)
215
216      integer(kind=omp_memspace_handle_kind)omp_default_mem_space
217      parameter(omp_default_mem_space=0)
218      integer(kind=omp_memspace_handle_kind)omp_large_cap_mem_space
219      parameter(omp_large_cap_mem_space=1)
220      integer(kind=omp_memspace_handle_kind)omp_const_mem_space
221      parameter(omp_const_mem_space=2)
222      integer(kind=omp_memspace_handle_kind)omp_high_bw_mem_space
223      parameter(omp_high_bw_mem_space=3)
224      integer(kind=omp_memspace_handle_kind)omp_low_lat_mem_space
225      parameter(omp_low_lat_mem_space=4)
226
227      integer(kind=omp_pause_resource_kind)omp_pause_resume
228      parameter(omp_pause_resume=0)
229      integer(kind=omp_pause_resource_kind)omp_pause_soft
230      parameter(omp_pause_soft=1)
231      integer(kind=omp_pause_resource_kind)omp_pause_hard
232      parameter(omp_pause_hard=2)
233
234      interface
235
236!       ***
237!       *** omp_* entry points
238!       ***
239
240        subroutine omp_set_num_threads(num_threads) bind(c)
241          import
242          integer (kind=omp_integer_kind), value :: num_threads
243        end subroutine omp_set_num_threads
244
245        subroutine omp_set_dynamic(dynamic_threads) bind(c)
246          import
247          logical (kind=omp_logical_kind), value :: dynamic_threads
248        end subroutine omp_set_dynamic
249
250        subroutine omp_set_nested(nested) bind(c)
251          import
252          logical (kind=omp_logical_kind), value :: nested
253        end subroutine omp_set_nested
254
255        function omp_get_num_threads() bind(c)
256          import
257          integer (kind=omp_integer_kind) omp_get_num_threads
258        end function omp_get_num_threads
259
260        function omp_get_max_threads() bind(c)
261          import
262          integer (kind=omp_integer_kind) omp_get_max_threads
263        end function omp_get_max_threads
264
265        function omp_get_thread_num() bind(c)
266          import
267          integer (kind=omp_integer_kind) omp_get_thread_num
268        end function omp_get_thread_num
269
270        function omp_get_num_procs() bind(c)
271          import
272          integer (kind=omp_integer_kind) omp_get_num_procs
273        end function omp_get_num_procs
274
275        function omp_in_parallel() bind(c)
276          import
277          logical (kind=omp_logical_kind) omp_in_parallel
278        end function omp_in_parallel
279
280        function omp_in_final() bind(c)
281          import
282          logical (kind=omp_logical_kind) omp_in_final
283        end function omp_in_final
284
285        function omp_get_dynamic() bind(c)
286          import
287          logical (kind=omp_logical_kind) omp_get_dynamic
288        end function omp_get_dynamic
289
290        function omp_get_nested() bind(c)
291          import
292          logical (kind=omp_logical_kind) omp_get_nested
293        end function omp_get_nested
294
295        function omp_get_thread_limit() bind(c)
296          import
297          integer (kind=omp_integer_kind) omp_get_thread_limit
298        end function omp_get_thread_limit
299
300        subroutine omp_set_max_active_levels(max_levels) bind(c)
301          import
302          integer (kind=omp_integer_kind), value :: max_levels
303        end subroutine omp_set_max_active_levels
304
305        function omp_get_max_active_levels() bind(c)
306          import
307          integer (kind=omp_integer_kind) omp_get_max_active_levels
308        end function omp_get_max_active_levels
309
310        function omp_get_level() bind(c)
311          import
312          integer (kind=omp_integer_kind) omp_get_level
313        end function omp_get_level
314
315        function omp_get_active_level() bind(c)
316          import
317          integer (kind=omp_integer_kind) omp_get_active_level
318        end function omp_get_active_level
319
320        function omp_get_ancestor_thread_num(level) bind(c)
321          import
322          integer (kind=omp_integer_kind) omp_get_ancestor_thread_num
323          integer (kind=omp_integer_kind), value :: level
324        end function omp_get_ancestor_thread_num
325
326        function omp_get_team_size(level) bind(c)
327          import
328          integer (kind=omp_integer_kind) omp_get_team_size
329          integer (kind=omp_integer_kind), value :: level
330        end function omp_get_team_size
331
332        subroutine omp_set_schedule(kind, chunk_size) bind(c)
333          import
334          integer (kind=omp_sched_kind), value :: kind
335          integer (kind=omp_integer_kind), value :: chunk_size
336        end subroutine omp_set_schedule
337
338        subroutine omp_get_schedule(kind, chunk_size) bind(c)
339          import
340          integer (kind=omp_sched_kind) kind
341          integer (kind=omp_integer_kind) chunk_size
342        end subroutine omp_get_schedule
343
344        function omp_get_proc_bind() bind(c)
345          import
346          integer (kind=omp_proc_bind_kind) omp_get_proc_bind
347        end function omp_get_proc_bind
348
349        function omp_get_num_places() bind(c)
350          import
351          integer (kind=omp_integer_kind) omp_get_num_places
352        end function omp_get_num_places
353
354        function omp_get_place_num_procs(place_num) bind(c)
355          import
356          integer (kind=omp_integer_kind), value :: place_num
357          integer (kind=omp_integer_kind) omp_get_place_num_procs
358        end function omp_get_place_num_procs
359
360        subroutine omp_get_place_proc_ids(place_num, ids) bind(c)
361          import
362          integer (kind=omp_integer_kind), value :: place_num
363          integer (kind=omp_integer_kind) ids(*)
364        end subroutine omp_get_place_proc_ids
365
366        function omp_get_place_num() bind(c)
367          import
368          integer (kind=omp_integer_kind) omp_get_place_num
369        end function omp_get_place_num
370
371        function omp_get_partition_num_places() bind(c)
372          import
373          integer (kind=omp_integer_kind) omp_get_partition_num_places
374        end function omp_get_partition_num_places
375
376        subroutine omp_get_partition_place_nums(place_nums) bind(c)
377          import
378          integer (kind=omp_integer_kind) place_nums(*)
379        end subroutine omp_get_partition_place_nums
380
381        function omp_get_wtime() bind(c)
382          double precision omp_get_wtime
383        end function omp_get_wtime
384
385        function omp_get_wtick() bind(c)
386          double precision omp_get_wtick
387        end function omp_get_wtick
388
389        function omp_get_default_device() bind(c)
390          import
391          integer (kind=omp_integer_kind) omp_get_default_device
392        end function omp_get_default_device
393
394        subroutine omp_set_default_device(device_num) bind(c)
395          import
396          integer (kind=omp_integer_kind), value :: device_num
397        end subroutine omp_set_default_device
398
399        function omp_get_num_devices() bind(c)
400          import
401          integer (kind=omp_integer_kind) omp_get_num_devices
402        end function omp_get_num_devices
403
404        function omp_get_num_teams() bind(c)
405          import
406          integer (kind=omp_integer_kind) omp_get_num_teams
407        end function omp_get_num_teams
408
409        function omp_get_team_num() bind(c)
410          import
411          integer (kind=omp_integer_kind) omp_get_team_num
412        end function omp_get_team_num
413
414        function omp_is_initial_device() bind(c)
415          import
416          logical (kind=omp_logical_kind) omp_is_initial_device
417        end function omp_is_initial_device
418
419        function omp_get_initial_device() bind(c)
420          import
421          integer (kind=omp_integer_kind) omp_get_initial_device
422        end function omp_get_initial_device
423
424        function omp_get_device_num() bind(c)
425          import
426          integer (kind=omp_integer_kind) omp_get_device_num
427        end function omp_get_device_num
428
429        function omp_pause_resource(kind, device_num) bind(c)
430          import
431          integer (kind=omp_pause_resource_kind), value :: kind
432          integer (kind=omp_integer_kind), value :: device_num
433          integer (kind=omp_integer_kind) omp_pause_resource
434        end function omp_pause_resource
435
436        function omp_pause_resource_all(kind) bind(c)
437          import
438          integer (kind=omp_pause_resource_kind), value :: kind
439          integer (kind=omp_integer_kind) omp_pause_resource_all
440        end function omp_pause_resource_all
441
442        function omp_get_supported_active_levels() bind(c)
443          import
444          integer (kind=omp_integer_kind) omp_get_supported_active_levels
445        end function omp_get_supported_active_levels
446
447        subroutine omp_fulfill_event(event) bind(c)
448          import
449          integer (kind=omp_event_handle_kind), value :: event
450        end subroutine omp_fulfill_event
451
452        subroutine omp_init_lock(svar) bind(c)
453!DIR$ IF(__INTEL_COMPILER.GE.1400)
454!DIR$ attributes known_intrinsic :: omp_init_lock
455!DIR$ ENDIF
456          import
457          integer (kind=omp_lock_kind) svar
458        end subroutine omp_init_lock
459
460        subroutine omp_destroy_lock(svar) bind(c)
461!DIR$ IF(__INTEL_COMPILER.GE.1400)
462!DIR$ attributes known_intrinsic :: omp_destroy_lock
463!DIR$ ENDIF
464          import
465          integer (kind=omp_lock_kind) svar
466        end subroutine omp_destroy_lock
467
468        subroutine omp_set_lock(svar) bind(c)
469!DIR$ IF(__INTEL_COMPILER.GE.1400)
470!DIR$ attributes known_intrinsic :: omp_set_lock
471!DIR$ ENDIF
472          import
473          integer (kind=omp_lock_kind) svar
474        end subroutine omp_set_lock
475
476        subroutine omp_unset_lock(svar) bind(c)
477!DIR$ IF(__INTEL_COMPILER.GE.1400)
478!DIR$ attributes known_intrinsic :: omp_unset_lock
479!DIR$ ENDIF
480          import
481          integer (kind=omp_lock_kind) svar
482        end subroutine omp_unset_lock
483
484        function omp_test_lock(svar) bind(c)
485!DIR$ IF(__INTEL_COMPILER.GE.1400)
486!DIR$ attributes known_intrinsic :: omp_test_lock
487!DIR$ ENDIF
488          import
489          logical (kind=omp_logical_kind) omp_test_lock
490          integer (kind=omp_lock_kind) svar
491        end function omp_test_lock
492
493        subroutine omp_init_nest_lock(nvar) bind(c)
494!DIR$ IF(__INTEL_COMPILER.GE.1400)
495!DIR$ attributes known_intrinsic :: omp_init_nest_lock
496!DIR$ ENDIF
497          import
498          integer (kind=omp_nest_lock_kind) nvar
499        end subroutine omp_init_nest_lock
500
501        subroutine omp_destroy_nest_lock(nvar) bind(c)
502!DIR$ IF(__INTEL_COMPILER.GE.1400)
503!DIR$ attributes known_intrinsic :: omp_destroy_nest_lock
504!DIR$ ENDIF
505          import
506          integer (kind=omp_nest_lock_kind) nvar
507        end subroutine omp_destroy_nest_lock
508
509        subroutine omp_set_nest_lock(nvar) bind(c)
510!DIR$ IF(__INTEL_COMPILER.GE.1400)
511!DIR$ attributes known_intrinsic :: omp_set_nest_lock
512!DIR$ ENDIF
513          import
514          integer (kind=omp_nest_lock_kind) nvar
515        end subroutine omp_set_nest_lock
516
517        subroutine omp_unset_nest_lock(nvar) bind(c)
518!DIR$ IF(__INTEL_COMPILER.GE.1400)
519!DIR$ attributes known_intrinsic :: omp_unset_nest_lock
520!DIR$ ENDIF
521          import
522          integer (kind=omp_nest_lock_kind) nvar
523        end subroutine omp_unset_nest_lock
524
525        function omp_test_nest_lock(nvar) bind(c)
526!DIR$ IF(__INTEL_COMPILER.GE.1400)
527!DIR$ attributes known_intrinsic :: omp_test_nest_lock
528!DIR$ ENDIF
529          import
530          integer (kind=omp_integer_kind) omp_test_nest_lock
531          integer (kind=omp_nest_lock_kind) nvar
532        end function omp_test_nest_lock
533
534        function omp_get_max_task_priority() bind(c)
535          import
536          integer (kind=omp_integer_kind) omp_get_max_task_priority
537        end function omp_get_max_task_priority
538
539        function omp_init_allocator(memspace, ntraits, traits)
540          import
541          integer (omp_allocator_handle_kind) omp_init_allocator
542          integer (omp_memspace_handle_kind) :: memspace
543          integer (omp_integer_kind) :: ntraits
544          type(omp_alloctrait), intent(in) :: traits(*)
545        end function omp_init_allocator
546
547        subroutine omp_destroy_allocator(allocator) bind(c)
548          import
549          integer (omp_allocator_handle_kind), value :: allocator
550        end subroutine omp_destroy_allocator
551
552        subroutine omp_set_default_allocator(allocator) bind(c)
553          import
554          integer (omp_allocator_handle_kind), value :: allocator
555        end subroutine omp_set_default_allocator
556
557        function omp_get_default_allocator() bind(c)
558          import
559          integer (omp_allocator_handle_kind) omp_get_default_allocator
560        end function omp_get_default_allocator
561
562        subroutine omp_set_affinity_format(format)
563          character (len=*) :: format
564        end subroutine omp_set_affinity_format
565
566        function omp_get_affinity_format(buffer)
567          import
568          character (len=*) :: buffer
569          integer (kind=kmp_size_t_kind) :: omp_get_affinity_format
570        end function omp_get_affinity_format
571
572        subroutine omp_display_affinity(format)
573          character (len=*) :: format
574        end subroutine omp_display_affinity
575
576        function omp_capture_affinity(buffer, format)
577          import
578          character (len=*) :: format
579          character (len=*) :: buffer
580          integer (kind=kmp_size_t_kind) :: omp_capture_affinity
581        end function omp_capture_affinity
582
583        subroutine omp_display_env(verbose) bind(c)
584          import
585          logical (kind=omp_logical_kind), value :: verbose
586        end subroutine omp_display_env
587
588!       ***
589!       *** kmp_* entry points
590!       ***
591
592        subroutine kmp_set_stacksize(size) bind(c)
593          import
594          integer (kind=omp_integer_kind), value :: size
595        end subroutine kmp_set_stacksize
596
597        subroutine kmp_set_stacksize_s(size) bind(c)
598          import
599          integer (kind=kmp_size_t_kind), value :: size
600        end subroutine kmp_set_stacksize_s
601
602        subroutine kmp_set_blocktime(msec) bind(c)
603          import
604          integer (kind=omp_integer_kind), value :: msec
605        end subroutine kmp_set_blocktime
606
607        subroutine kmp_set_library_serial() bind(c)
608        end subroutine kmp_set_library_serial
609
610        subroutine kmp_set_library_turnaround() bind(c)
611        end subroutine kmp_set_library_turnaround
612
613        subroutine kmp_set_library_throughput() bind(c)
614        end subroutine kmp_set_library_throughput
615
616        subroutine kmp_set_library(libnum) bind(c)
617          import
618          integer (kind=omp_integer_kind), value :: libnum
619        end subroutine kmp_set_library
620
621        subroutine kmp_set_defaults(string) bind(c)
622          character string(*)
623        end subroutine kmp_set_defaults
624
625        function kmp_get_stacksize() bind(c)
626          import
627          integer (kind=omp_integer_kind) kmp_get_stacksize
628        end function kmp_get_stacksize
629
630        function kmp_get_stacksize_s() bind(c)
631          import
632          integer (kind=kmp_size_t_kind) kmp_get_stacksize_s
633        end function kmp_get_stacksize_s
634
635        function kmp_get_blocktime() bind(c)
636          import
637          integer (kind=omp_integer_kind) kmp_get_blocktime
638        end function kmp_get_blocktime
639
640        function kmp_get_library() bind(c)
641          import
642          integer (kind=omp_integer_kind) kmp_get_library
643        end function kmp_get_library
644
645        subroutine kmp_set_disp_num_buffers(num) bind(c)
646          import
647          integer (kind=omp_integer_kind), value :: num
648        end subroutine kmp_set_disp_num_buffers
649
650        function kmp_set_affinity(mask) bind(c)
651          import
652          integer (kind=omp_integer_kind) kmp_set_affinity
653          integer (kind=kmp_affinity_mask_kind) mask
654        end function kmp_set_affinity
655
656        function kmp_get_affinity(mask) bind(c)
657          import
658          integer (kind=omp_integer_kind) kmp_get_affinity
659          integer (kind=kmp_affinity_mask_kind) mask
660        end function kmp_get_affinity
661
662        function kmp_get_affinity_max_proc() bind(c)
663          import
664          integer (kind=omp_integer_kind) kmp_get_affinity_max_proc
665        end function kmp_get_affinity_max_proc
666
667        subroutine kmp_create_affinity_mask(mask) bind(c)
668          import
669          integer (kind=kmp_affinity_mask_kind) mask
670        end subroutine kmp_create_affinity_mask
671
672        subroutine kmp_destroy_affinity_mask(mask) bind(c)
673          import
674          integer (kind=kmp_affinity_mask_kind) mask
675        end subroutine kmp_destroy_affinity_mask
676
677        function kmp_set_affinity_mask_proc(proc, mask) bind(c)
678          import
679          integer (kind=omp_integer_kind) kmp_set_affinity_mask_proc
680          integer (kind=omp_integer_kind), value :: proc
681          integer (kind=kmp_affinity_mask_kind) mask
682        end function kmp_set_affinity_mask_proc
683
684        function kmp_unset_affinity_mask_proc(proc, mask) bind(c)
685          import
686          integer (kind=omp_integer_kind) kmp_unset_affinity_mask_proc
687          integer (kind=omp_integer_kind), value :: proc
688          integer (kind=kmp_affinity_mask_kind) mask
689        end function kmp_unset_affinity_mask_proc
690
691        function kmp_get_affinity_mask_proc(proc, mask) bind(c)
692          import
693          integer (kind=omp_integer_kind) kmp_get_affinity_mask_proc
694          integer (kind=omp_integer_kind), value :: proc
695          integer (kind=kmp_affinity_mask_kind) mask
696        end function kmp_get_affinity_mask_proc
697
698        function kmp_malloc(size) bind(c)
699          import
700          integer (kind=kmp_pointer_kind) kmp_malloc
701          integer (kind=kmp_size_t_kind), value :: size
702        end function kmp_malloc
703
704        function kmp_aligned_malloc(size, alignment) bind(c)
705          import
706          integer (kind=kmp_pointer_kind) kmp_aligned_malloc
707          integer (kind=kmp_size_t_kind), value :: size
708          integer (kind=kmp_size_t_kind), value :: alignment
709        end function kmp_aligned_malloc
710
711        function kmp_calloc(nelem, elsize) bind(c)
712          import
713          integer (kind=kmp_pointer_kind) kmp_calloc
714          integer (kind=kmp_size_t_kind), value :: nelem
715          integer (kind=kmp_size_t_kind), value :: elsize
716        end function kmp_calloc
717
718        function kmp_realloc(ptr, size) bind(c)
719          import
720          integer (kind=kmp_pointer_kind) kmp_realloc
721          integer (kind=kmp_pointer_kind), value :: ptr
722          integer (kind=kmp_size_t_kind), value :: size
723        end function kmp_realloc
724
725        subroutine kmp_free(ptr) bind(c)
726          import
727          integer (kind=kmp_pointer_kind), value :: ptr
728        end subroutine kmp_free
729
730        subroutine kmp_set_warnings_on() bind(c)
731        end subroutine kmp_set_warnings_on
732
733        subroutine kmp_set_warnings_off() bind(c)
734        end subroutine kmp_set_warnings_off
735
736        subroutine omp_init_lock_with_hint(svar, hint) bind(c)
737          import
738          integer (kind=omp_lock_kind) svar
739          integer (kind=omp_lock_hint_kind), value :: hint
740        end subroutine omp_init_lock_with_hint
741
742        subroutine omp_init_nest_lock_with_hint(nvar, hint) bind(c)
743          import
744          integer (kind=omp_nest_lock_kind) nvar
745          integer (kind=omp_lock_hint_kind), value :: hint
746        end subroutine omp_init_nest_lock_with_hint
747
748        function omp_control_tool(command, modifier, arg) bind(c)
749          import
750          integer (kind=omp_integer_kind) omp_control_tool
751          integer (kind=omp_control_tool_kind), value :: command
752          integer (kind=omp_control_tool_kind), value :: modifier
753          integer (kind=kmp_pointer_kind), optional :: arg
754        end function omp_control_tool
755
756      end interface
757
758!DIR$ IF DEFINED (__INTEL_OFFLOAD)
759
760!DIR$ IF(__INTEL_COMPILER.LT.1900)
761!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_set_num_threads
762!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_set_dynamic
763!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_set_nested
764!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_get_num_threads
765!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_get_max_threads
766!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_get_thread_num
767!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_get_num_procs
768!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_in_parallel
769!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_in_final
770!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_get_dynamic
771!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_get_nested
772!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_get_thread_limit
773!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_set_max_active_levels
774!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_get_max_active_levels
775!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_get_level
776!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_get_active_level
777!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_get_ancestor_thread_num
778!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_get_team_size
779!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_set_schedule
780!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_get_schedule
781!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_get_proc_bind
782!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_get_wtime
783!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_get_wtick
784!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_get_default_device
785!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_set_default_device
786!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_is_initial_device
787!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_get_initial_device
788!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_get_num_devices
789!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_get_device_num
790!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_pause_resource
791!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_pause_resource_all
792!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_get_supported_active_levels
793!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_fulfill_event
794!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_get_num_teams
795!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_get_team_num
796!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_init_lock
797!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_destroy_lock
798!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_set_lock
799!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_unset_lock
800!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_test_lock
801!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_init_nest_lock
802!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_destroy_nest_lock
803!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_set_nest_lock
804!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_unset_nest_lock
805!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_test_nest_lock
806!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_get_max_task_priority
807!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_set_affinity_format
808!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_get_affinity_format
809!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_display_affinity
810!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_capture_affinity
811!DIR$ ATTRIBUTES OFFLOAD:MIC :: kmp_set_stacksize
812!DIR$ ATTRIBUTES OFFLOAD:MIC :: kmp_set_stacksize_s
813!DIR$ ATTRIBUTES OFFLOAD:MIC :: kmp_set_blocktime
814!DIR$ ATTRIBUTES OFFLOAD:MIC :: kmp_set_library_serial
815!DIR$ ATTRIBUTES OFFLOAD:MIC :: kmp_set_library_turnaround
816!DIR$ ATTRIBUTES OFFLOAD:MIC :: kmp_set_library_throughput
817!DIR$ ATTRIBUTES OFFLOAD:MIC :: kmp_set_library
818!DIR$ ATTRIBUTES OFFLOAD:MIC :: kmp_set_defaults
819!DIR$ ATTRIBUTES OFFLOAD:MIC :: kmp_get_stacksize
820!DIR$ ATTRIBUTES OFFLOAD:MIC :: kmp_get_stacksize_s
821!DIR$ ATTRIBUTES OFFLOAD:MIC :: kmp_get_blocktime
822!DIR$ ATTRIBUTES OFFLOAD:MIC :: kmp_get_library
823!DIR$ ATTRIBUTES OFFLOAD:MIC :: kmp_set_disp_num_buffers
824!DIR$ ATTRIBUTES OFFLOAD:MIC :: kmp_set_affinity
825!DIR$ ATTRIBUTES OFFLOAD:MIC :: kmp_get_affinity
826!DIR$ ATTRIBUTES OFFLOAD:MIC :: kmp_get_affinity_max_proc
827!DIR$ ATTRIBUTES OFFLOAD:MIC :: kmp_create_affinity_mask
828!DIR$ ATTRIBUTES OFFLOAD:MIC :: kmp_destroy_affinity_mask
829!DIR$ ATTRIBUTES OFFLOAD:MIC :: kmp_set_affinity_mask_proc
830!DIR$ ATTRIBUTES OFFLOAD:MIC :: kmp_unset_affinity_mask_proc
831!DIR$ ATTRIBUTES OFFLOAD:MIC :: kmp_get_affinity_mask_proc
832!DIR$ ATTRIBUTES OFFLOAD:MIC :: kmp_malloc
833!DIR$ ATTRIBUTES OFFLOAD:MIC :: kmp_aligned_malloc
834!DIR$ ATTRIBUTES OFFLOAD:MIC :: kmp_calloc
835!DIR$ ATTRIBUTES OFFLOAD:MIC :: kmp_realloc
836!DIR$ ATTRIBUTES OFFLOAD:MIC :: kmp_free
837!DIR$ ATTRIBUTES OFFLOAD:MIC :: kmp_set_warnings_on
838!DIR$ ATTRIBUTES OFFLOAD:MIC :: kmp_set_warnings_off
839!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_init_lock_with_hint
840!DIR$ ATTRIBUTES OFFLOAD:MIC :: omp_init_nest_lock_with_hint
841!DIR$ ENDIF
842
843!DIR$ IF(__INTEL_COMPILER.GE.1400)
844!$omp declare target(omp_set_num_threads )
845!$omp declare target(omp_set_dynamic )
846!$omp declare target(omp_set_nested )
847!$omp declare target(omp_get_num_threads )
848!$omp declare target(omp_get_max_threads )
849!$omp declare target(omp_get_thread_num )
850!$omp declare target(omp_get_num_procs )
851!$omp declare target(omp_in_parallel )
852!$omp declare target(omp_in_final )
853!$omp declare target(omp_get_dynamic )
854!$omp declare target(omp_get_nested )
855!$omp declare target(omp_get_thread_limit )
856!$omp declare target(omp_set_max_active_levels )
857!$omp declare target(omp_get_max_active_levels )
858!$omp declare target(omp_get_level )
859!$omp declare target(omp_get_active_level )
860!$omp declare target(omp_get_ancestor_thread_num )
861!$omp declare target(omp_get_team_size )
862!$omp declare target(omp_set_schedule )
863!$omp declare target(omp_get_schedule )
864!$omp declare target(omp_get_proc_bind )
865!$omp declare target(omp_get_wtime )
866!$omp declare target(omp_get_wtick )
867!$omp declare target(omp_get_default_device )
868!$omp declare target(omp_set_default_device )
869!$omp declare target(omp_is_initial_device )
870!$omp declare target(omp_get_initial_device )
871!$omp declare target(omp_get_num_devices )
872!$omp declare target(omp_get_device_num )
873!$omp declare target(omp_pause_resource )
874!$omp declare target(omp_pause_resource_all )
875!$omp declare target(omp_get_supported_active_levels )
876!$omp declare target(omp_fulfill_event)
877!$omp declare target(omp_get_num_teams )
878!$omp declare target(omp_get_team_num )
879!$omp declare target(omp_init_lock )
880!$omp declare target(omp_destroy_lock )
881!$omp declare target(omp_set_lock )
882!$omp declare target(omp_unset_lock )
883!$omp declare target(omp_test_lock )
884!$omp declare target(omp_init_nest_lock )
885!$omp declare target(omp_destroy_nest_lock )
886!$omp declare target(omp_set_nest_lock )
887!$omp declare target(omp_unset_nest_lock )
888!$omp declare target(omp_test_nest_lock )
889!$omp declare target(omp_get_max_task_priority )
890!$omp declare target(omp_set_affinity_format )
891!$omp declare target(omp_get_affinity_format )
892!$omp declare target(omp_display_affinity )
893!$omp declare target(omp_capture_affinity )
894!$omp declare target(kmp_set_stacksize )
895!$omp declare target(kmp_set_stacksize_s )
896!$omp declare target(kmp_set_blocktime )
897!$omp declare target(kmp_set_library_serial )
898!$omp declare target(kmp_set_library_turnaround )
899!$omp declare target(kmp_set_library_throughput )
900!$omp declare target(kmp_set_library )
901!$omp declare target(kmp_set_defaults )
902!$omp declare target(kmp_get_stacksize )
903!$omp declare target(kmp_get_stacksize_s )
904!$omp declare target(kmp_get_blocktime )
905!$omp declare target(kmp_get_library )
906!$omp declare target(kmp_set_disp_num_buffers )
907!$omp declare target(kmp_set_affinity )
908!$omp declare target(kmp_get_affinity )
909!$omp declare target(kmp_get_affinity_max_proc )
910!$omp declare target(kmp_create_affinity_mask )
911!$omp declare target(kmp_destroy_affinity_mask )
912!$omp declare target(kmp_set_affinity_mask_proc )
913!$omp declare target(kmp_unset_affinity_mask_proc )
914!$omp declare target(kmp_get_affinity_mask_proc )
915!$omp declare target(kmp_malloc )
916!$omp declare target(kmp_aligned_malloc )
917!$omp declare target(kmp_calloc )
918!$omp declare target(kmp_realloc )
919!$omp declare target(kmp_free )
920!$omp declare target(kmp_set_warnings_on )
921!$omp declare target(kmp_set_warnings_off )
922!$omp declare target(omp_init_lock_with_hint )
923!$omp declare target(omp_init_nest_lock_with_hint )
924!DIR$ ENDIF
925!DIR$ ENDIF
926