xref: /freebsd/contrib/llvm-project/openmp/runtime/src/include/omp_lib.F90.var (revision 7fdf597e96a02165cfe22ff357b857d5fa15ed8a)
1! include/omp_lib.f90.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      module omp_lib_kinds
14
15        use, intrinsic :: iso_c_binding
16
17        ! Set PRIVATE by default to explicitly only export what is meant
18        ! to be exported by this MODULE.
19        private
20
21        integer, parameter, public :: omp_integer_kind       = c_int
22        integer, parameter, public :: omp_logical_kind       = 4
23        integer, parameter, public :: omp_real_kind          = c_float
24        integer, parameter, public :: kmp_double_kind        = c_double
25        integer, parameter, public :: omp_lock_kind          = c_intptr_t
26        integer, parameter, public :: omp_nest_lock_kind     = c_intptr_t
27        integer, parameter, public :: omp_sched_kind         = omp_integer_kind
28        integer, parameter, public :: omp_proc_bind_kind     = omp_integer_kind
29        integer, parameter, public :: kmp_pointer_kind       = c_intptr_t
30        integer, parameter, public :: kmp_size_t_kind        = c_size_t
31        integer, parameter, public :: kmp_affinity_mask_kind = c_intptr_t
32        integer, parameter, public :: kmp_cancel_kind        = omp_integer_kind
33        integer, parameter, public :: omp_sync_hint_kind     = omp_integer_kind
34        integer, parameter, public :: omp_lock_hint_kind     = omp_sync_hint_kind
35        integer, parameter, public :: omp_control_tool_kind  = omp_integer_kind
36        integer, parameter, public :: omp_control_tool_result_kind = omp_integer_kind
37        integer, parameter, public :: omp_allocator_handle_kind = c_intptr_t
38        integer, parameter, public :: omp_memspace_handle_kind = c_intptr_t
39        integer, parameter, public :: omp_alloctrait_key_kind = omp_integer_kind
40        integer, parameter, public :: omp_alloctrait_val_kind = c_intptr_t
41        integer, parameter, public :: omp_interop_kind = c_intptr_t
42        integer, parameter, public :: omp_interop_fr_kind = omp_integer_kind
43
44        type omp_alloctrait
45          integer(kind=omp_alloctrait_key_kind) key
46          integer(kind=omp_alloctrait_val_kind) value
47        end type omp_alloctrait
48        public :: omp_alloctrait
49
50        integer, parameter, public :: omp_pause_resource_kind = omp_integer_kind
51        integer, parameter, public :: omp_depend_kind = c_intptr_t
52        integer, parameter, public :: omp_event_handle_kind = c_intptr_t
53
54      end module omp_lib_kinds
55
56      module omp_lib
57
58        use omp_lib_kinds
59
60        ! Set PRIVATE by default to explicitly only export what is meant
61        ! to be exported by this MODULE.
62        private
63
64        ! Re-export definitions in omp_lib_kinds
65        public :: omp_integer_kind
66        public :: omp_logical_kind
67        public :: omp_real_kind
68        public :: kmp_double_kind
69        public :: omp_lock_kind
70        public :: omp_nest_lock_kind
71        public :: omp_sched_kind
72        public :: omp_proc_bind_kind
73        public :: kmp_pointer_kind
74        public :: kmp_size_t_kind
75        public :: kmp_affinity_mask_kind
76        public :: kmp_cancel_kind
77        public :: omp_sync_hint_kind
78        public :: omp_lock_hint_kind
79        public :: omp_control_tool_kind
80        public :: omp_control_tool_result_kind
81        public :: omp_allocator_handle_kind
82        public :: omp_memspace_handle_kind
83        public :: omp_alloctrait_key_kind
84        public :: omp_alloctrait_val_kind
85        public :: omp_interop_kind
86        public :: omp_interop_fr_kind
87        public :: omp_alloctrait
88        public :: omp_pause_resource_kind
89        public :: omp_depend_kind
90        public :: omp_event_handle_kind
91
92        integer (kind=omp_integer_kind), parameter, public :: openmp_version    = @LIBOMP_OMP_YEAR_MONTH@
93        integer (kind=omp_integer_kind), parameter, public :: kmp_version_major = @LIBOMP_VERSION_MAJOR@
94        integer (kind=omp_integer_kind), parameter, public :: kmp_version_minor = @LIBOMP_VERSION_MINOR@
95        integer (kind=omp_integer_kind), parameter, public :: kmp_version_build = @LIBOMP_VERSION_BUILD@
96        character(*)               kmp_build_date
97        parameter( kmp_build_date = '@LIBOMP_BUILD_DATE@' )
98
99        integer(kind=omp_sched_kind), parameter, public :: omp_sched_static  = 1
100        integer(kind=omp_sched_kind), parameter, public :: omp_sched_dynamic = 2
101        integer(kind=omp_sched_kind), parameter, public :: omp_sched_guided  = 3
102        integer(kind=omp_sched_kind), parameter, public :: omp_sched_auto    = 4
103        integer(kind=omp_sched_kind), parameter, public :: omp_sched_monotonic = int(Z'80000000', kind=omp_sched_kind)
104
105        integer (kind=omp_proc_bind_kind), parameter, public :: omp_proc_bind_false = 0
106        integer (kind=omp_proc_bind_kind), parameter, public :: omp_proc_bind_true = 1
107        integer (kind=omp_proc_bind_kind), parameter, public :: omp_proc_bind_master = 2
108        integer (kind=omp_proc_bind_kind), parameter, public :: omp_proc_bind_close = 3
109        integer (kind=omp_proc_bind_kind), parameter, public :: omp_proc_bind_spread = 4
110
111        integer (kind=kmp_cancel_kind), parameter, public :: kmp_cancel_parallel = 1
112        integer (kind=kmp_cancel_kind), parameter, public :: kmp_cancel_loop = 2
113        integer (kind=kmp_cancel_kind), parameter, public :: kmp_cancel_sections = 3
114        integer (kind=kmp_cancel_kind), parameter, public :: kmp_cancel_taskgroup = 4
115
116        integer (kind=omp_sync_hint_kind), parameter, public :: omp_sync_hint_none           = 0
117        integer (kind=omp_sync_hint_kind), parameter, public :: omp_sync_hint_uncontended    = 1
118        integer (kind=omp_sync_hint_kind), parameter, public :: omp_sync_hint_contended      = 2
119        integer (kind=omp_sync_hint_kind), parameter, public :: omp_sync_hint_nonspeculative = 4
120        integer (kind=omp_sync_hint_kind), parameter, public :: omp_sync_hint_speculative    = 8
121        integer (kind=omp_lock_hint_kind), parameter, public :: omp_lock_hint_none = omp_sync_hint_none
122        integer (kind=omp_lock_hint_kind), parameter, public :: omp_lock_hint_uncontended = omp_sync_hint_uncontended
123        integer (kind=omp_lock_hint_kind), parameter, public :: omp_lock_hint_contended = omp_sync_hint_contended
124        integer (kind=omp_lock_hint_kind), parameter, public :: omp_lock_hint_nonspeculative = omp_sync_hint_nonspeculative
125        integer (kind=omp_lock_hint_kind), parameter, public :: omp_lock_hint_speculative = omp_sync_hint_speculative
126        integer (kind=omp_lock_hint_kind), parameter, public :: kmp_lock_hint_hle         = 65536
127        integer (kind=omp_lock_hint_kind), parameter, public :: kmp_lock_hint_rtm         = 131072
128        integer (kind=omp_lock_hint_kind), parameter, public :: kmp_lock_hint_adaptive    = 262144
129
130        integer (kind=omp_control_tool_kind), parameter, public :: omp_control_tool_start = 1
131        integer (kind=omp_control_tool_kind), parameter, public :: omp_control_tool_pause = 2
132        integer (kind=omp_control_tool_kind), parameter, public :: omp_control_tool_flush = 3
133        integer (kind=omp_control_tool_kind), parameter, public :: omp_control_tool_end = 4
134
135        integer (kind=omp_control_tool_result_kind), parameter, public :: omp_control_tool_notool = -2
136        integer (kind=omp_control_tool_result_kind), parameter, public :: omp_control_tool_nocallback = -1
137        integer (kind=omp_control_tool_result_kind), parameter, public :: omp_control_tool_success = 0
138        integer (kind=omp_control_tool_result_kind), parameter, public :: omp_control_tool_ignored = 1
139
140        integer (kind=omp_alloctrait_key_kind), parameter, public :: omp_atk_sync_hint = 1
141        integer (kind=omp_alloctrait_key_kind), parameter, public :: omp_atk_alignment = 2
142        integer (kind=omp_alloctrait_key_kind), parameter, public :: omp_atk_access = 3
143        integer (kind=omp_alloctrait_key_kind), parameter, public :: omp_atk_pool_size = 4
144        integer (kind=omp_alloctrait_key_kind), parameter, public :: omp_atk_fallback = 5
145        integer (kind=omp_alloctrait_key_kind), parameter, public :: omp_atk_fb_data = 6
146        integer (kind=omp_alloctrait_key_kind), parameter, public :: omp_atk_pinned = 7
147        integer (kind=omp_alloctrait_key_kind), parameter, public :: omp_atk_partition = 8
148
149        integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_default = -1
150        integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_false = 0
151        integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_true = 1
152        integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_contended = 3
153        integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_uncontended = 4
154        integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_serialized = 5
155        integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_sequential = omp_atv_serialized
156        integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_private = 6
157        integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_all = 7
158        integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_thread = 8
159        integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_pteam = 9
160        integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_cgroup = 10
161        integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_default_mem_fb = 11
162        integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_null_fb = 12
163        integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_abort_fb = 13
164        integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_allocator_fb = 14
165        integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_environment = 15
166        integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_nearest = 16
167        integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_blocked = 17
168        integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_interleaved = 18
169
170        integer (kind=omp_allocator_handle_kind), parameter, public :: omp_null_allocator = 0
171        integer (kind=omp_allocator_handle_kind), parameter, public :: omp_default_mem_alloc = 1
172        integer (kind=omp_allocator_handle_kind), parameter, public :: omp_large_cap_mem_alloc = 2
173        integer (kind=omp_allocator_handle_kind), parameter, public :: omp_const_mem_alloc = 3
174        integer (kind=omp_allocator_handle_kind), parameter, public :: omp_high_bw_mem_alloc = 4
175        integer (kind=omp_allocator_handle_kind), parameter, public :: omp_low_lat_mem_alloc = 5
176        integer (kind=omp_allocator_handle_kind), parameter, public :: omp_cgroup_mem_alloc = 6
177        integer (kind=omp_allocator_handle_kind), parameter, public :: omp_pteam_mem_alloc = 7
178        integer (kind=omp_allocator_handle_kind), parameter, public :: omp_thread_mem_alloc = 8
179        integer (kind=omp_allocator_handle_kind), parameter, public :: llvm_omp_target_host_mem_alloc = 100
180        integer (kind=omp_allocator_handle_kind), parameter, public :: llvm_omp_target_shared_mem_alloc = 101
181        integer (kind=omp_allocator_handle_kind), parameter, public :: llvm_omp_target_device_mem_alloc = 102
182
183        integer (kind=omp_memspace_handle_kind), parameter, public :: omp_default_mem_space = 0
184        integer (kind=omp_memspace_handle_kind), parameter, public :: omp_large_cap_mem_space = 1
185        integer (kind=omp_memspace_handle_kind), parameter, public :: omp_const_mem_space = 2
186        integer (kind=omp_memspace_handle_kind), parameter, public :: omp_high_bw_mem_space = 3
187        integer (kind=omp_memspace_handle_kind), parameter, public :: omp_low_lat_mem_space = 4
188        integer (kind=omp_memspace_handle_kind), parameter, public :: llvm_omp_target_host_mem_space = 100
189        integer (kind=omp_memspace_handle_kind), parameter, public :: llvm_omp_target_shared_mem_space = 101
190        integer (kind=omp_memspace_handle_kind), parameter, public :: llvm_omp_target_device_mem_space = 102
191
192        integer (kind=omp_pause_resource_kind), parameter, public :: omp_pause_resume = 0
193        integer (kind=omp_pause_resource_kind), parameter, public :: omp_pause_soft = 1
194        integer (kind=omp_pause_resource_kind), parameter, public :: omp_pause_hard = 2
195
196        integer (kind=omp_interop_fr_kind), parameter, public :: omp_ifr_cuda = 1
197        integer (kind=omp_interop_fr_kind), parameter, public :: omp_ifr_cuda_driver = 2
198        integer (kind=omp_interop_fr_kind), parameter, public :: omp_ifr_opencl = 3
199        integer (kind=omp_interop_fr_kind), parameter, public :: omp_ifr_sycl = 4
200        integer (kind=omp_interop_fr_kind), parameter, public :: omp_ifr_hip = 5
201        integer (kind=omp_interop_fr_kind), parameter, public :: omp_ifr_level_zero = 6
202        integer (kind=omp_interop_fr_kind), parameter, public :: omp_ifr_last = 7
203
204        integer (kind=omp_interop_kind), parameter, public :: omp_interop_none = 0
205
206        interface
207
208!         ***
209!         *** omp_* entry points
210!         ***
211
212          subroutine omp_set_num_threads(num_threads) bind(c)
213            use omp_lib_kinds
214            integer (kind=omp_integer_kind), value :: num_threads
215          end subroutine omp_set_num_threads
216
217          subroutine omp_set_dynamic(dynamic_threads) bind(c)
218            use omp_lib_kinds
219            logical (kind=omp_logical_kind), value :: dynamic_threads
220          end subroutine omp_set_dynamic
221
222          subroutine omp_set_nested(nested) bind(c)
223            use omp_lib_kinds
224            logical (kind=omp_logical_kind), value :: nested
225          end subroutine omp_set_nested
226
227          function omp_get_num_threads() bind(c)
228            use omp_lib_kinds
229            integer (kind=omp_integer_kind) omp_get_num_threads
230          end function omp_get_num_threads
231
232          function omp_get_max_threads() bind(c)
233            use omp_lib_kinds
234            integer (kind=omp_integer_kind) omp_get_max_threads
235          end function omp_get_max_threads
236
237          function omp_get_thread_num() bind(c)
238            use omp_lib_kinds
239            integer (kind=omp_integer_kind) omp_get_thread_num
240          end function omp_get_thread_num
241
242          function omp_get_num_procs() bind(c)
243            use omp_lib_kinds
244            integer (kind=omp_integer_kind) omp_get_num_procs
245          end function omp_get_num_procs
246
247          function omp_in_parallel() bind(c)
248            use omp_lib_kinds
249            logical (kind=omp_logical_kind) omp_in_parallel
250          end function omp_in_parallel
251
252          function omp_in_final() bind(c)
253            use omp_lib_kinds
254            logical (kind=omp_logical_kind) omp_in_final
255          end function omp_in_final
256
257          function omp_get_dynamic() bind(c)
258            use omp_lib_kinds
259            logical (kind=omp_logical_kind) omp_get_dynamic
260          end function omp_get_dynamic
261
262          function omp_get_nested() bind(c)
263            use omp_lib_kinds
264            logical (kind=omp_logical_kind) omp_get_nested
265          end function omp_get_nested
266
267          function omp_get_thread_limit() bind(c)
268            use omp_lib_kinds
269            integer (kind=omp_integer_kind) omp_get_thread_limit
270          end function omp_get_thread_limit
271
272          subroutine omp_set_max_active_levels(max_levels) bind(c)
273            use omp_lib_kinds
274            integer (kind=omp_integer_kind), value :: max_levels
275          end subroutine omp_set_max_active_levels
276
277          function omp_get_max_active_levels() bind(c)
278            use omp_lib_kinds
279            integer (kind=omp_integer_kind) omp_get_max_active_levels
280          end function omp_get_max_active_levels
281
282          function omp_get_level() bind(c)
283            use omp_lib_kinds
284            integer (kind=omp_integer_kind) omp_get_level
285          end function omp_get_level
286
287          function omp_get_active_level() bind(c)
288            use omp_lib_kinds
289            integer (kind=omp_integer_kind) omp_get_active_level
290          end function omp_get_active_level
291
292          function omp_get_ancestor_thread_num(level) bind(c)
293            use omp_lib_kinds
294            integer (kind=omp_integer_kind) omp_get_ancestor_thread_num
295            integer (kind=omp_integer_kind), value :: level
296          end function omp_get_ancestor_thread_num
297
298          function omp_get_team_size(level) bind(c)
299            use omp_lib_kinds
300            integer (kind=omp_integer_kind) omp_get_team_size
301            integer (kind=omp_integer_kind), value :: level
302          end function omp_get_team_size
303
304          subroutine omp_set_schedule(kind, chunk_size) bind(c)
305            use omp_lib_kinds
306            integer (kind=omp_sched_kind), value :: kind
307            integer (kind=omp_integer_kind), value :: chunk_size
308          end subroutine omp_set_schedule
309
310          subroutine omp_get_schedule(kind, chunk_size) bind(c)
311            use omp_lib_kinds
312            integer (kind=omp_sched_kind) kind
313            integer (kind=omp_integer_kind) chunk_size
314          end subroutine omp_get_schedule
315
316          function omp_get_proc_bind() bind(c)
317            use omp_lib_kinds
318            integer (kind=omp_proc_bind_kind) omp_get_proc_bind
319          end function omp_get_proc_bind
320
321          function omp_get_num_places() bind(c)
322            use omp_lib_kinds
323            integer (kind=omp_integer_kind) omp_get_num_places
324          end function omp_get_num_places
325
326          function omp_get_place_num_procs(place_num) bind(c)
327            use omp_lib_kinds
328            integer (kind=omp_integer_kind), value :: place_num
329            integer (kind=omp_integer_kind) omp_get_place_num_procs
330          end function omp_get_place_num_procs
331
332          subroutine omp_get_place_proc_ids(place_num, ids) bind(c)
333            use omp_lib_kinds
334            integer (kind=omp_integer_kind), value :: place_num
335            integer (kind=omp_integer_kind) ids(*)
336          end subroutine omp_get_place_proc_ids
337
338          function omp_get_place_num() bind(c)
339            use omp_lib_kinds
340            integer (kind=omp_integer_kind) omp_get_place_num
341          end function omp_get_place_num
342
343          function omp_get_partition_num_places() bind(c)
344            use omp_lib_kinds
345            integer (kind=omp_integer_kind) omp_get_partition_num_places
346          end function omp_get_partition_num_places
347
348          subroutine omp_get_partition_place_nums(place_nums) bind(c)
349            use omp_lib_kinds
350            integer (kind=omp_integer_kind) place_nums(*)
351          end subroutine omp_get_partition_place_nums
352
353          function omp_get_wtime() bind(c)
354            use omp_lib_kinds
355            real (kind=kmp_double_kind) omp_get_wtime
356          end function omp_get_wtime
357
358          function omp_get_wtick() bind(c)
359            use omp_lib_kinds
360            real (kind=kmp_double_kind) omp_get_wtick
361          end function omp_get_wtick
362
363          function omp_get_default_device() bind(c)
364            use omp_lib_kinds
365            integer (kind=omp_integer_kind) omp_get_default_device
366          end function omp_get_default_device
367
368          subroutine omp_set_default_device(device_num) bind(c)
369            use omp_lib_kinds
370            integer (kind=omp_integer_kind), value :: device_num
371          end subroutine omp_set_default_device
372
373          function omp_get_num_devices() bind(c)
374            use omp_lib_kinds
375            integer (kind=omp_integer_kind) omp_get_num_devices
376          end function omp_get_num_devices
377
378          function omp_get_num_teams() bind(c)
379            use omp_lib_kinds
380            integer (kind=omp_integer_kind) omp_get_num_teams
381          end function omp_get_num_teams
382
383          function omp_get_team_num() bind(c)
384            use omp_lib_kinds
385            integer (kind=omp_integer_kind) omp_get_team_num
386          end function omp_get_team_num
387
388          function omp_get_cancellation() bind(c)
389            use omp_lib_kinds
390            integer (kind=omp_integer_kind) omp_get_cancellation
391          end function omp_get_cancellation
392
393          function omp_is_initial_device() bind(c)
394            use omp_lib_kinds
395            logical (kind=omp_logical_kind) omp_is_initial_device
396          end function omp_is_initial_device
397
398          function omp_get_initial_device() bind(c)
399            use omp_lib_kinds
400            integer (kind=omp_integer_kind) omp_get_initial_device
401          end function omp_get_initial_device
402
403          function omp_get_device_num() bind(c)
404            use omp_lib_kinds
405            integer (kind=omp_integer_kind) omp_get_device_num
406          end function omp_get_device_num
407
408          function omp_pause_resource(kind, device_num) bind(c)
409            use omp_lib_kinds
410            integer (kind=omp_pause_resource_kind), value :: kind
411            integer (kind=omp_integer_kind), value :: device_num
412            integer (kind=omp_integer_kind) omp_pause_resource
413          end function omp_pause_resource
414
415          function omp_pause_resource_all(kind) bind(c)
416            use omp_lib_kinds
417            integer (kind=omp_pause_resource_kind), value :: kind
418            integer (kind=omp_integer_kind) omp_pause_resource_all
419          end function omp_pause_resource_all
420
421          function omp_get_supported_active_levels() bind(c)
422            use omp_lib_kinds
423            integer (kind=omp_integer_kind) omp_get_supported_active_levels
424          end function omp_get_supported_active_levels
425
426          subroutine omp_fulfill_event(event) bind(c)
427            use omp_lib_kinds
428            integer (kind=omp_event_handle_kind), value :: event
429          end subroutine omp_fulfill_event
430
431          subroutine omp_init_lock(svar) bind(c)
432#ifdef __INTEL_COMPILER
433!DIR$ IF(__INTEL_COMPILER.GE.1400)
434!DIR$ attributes known_intrinsic :: omp_init_lock
435!DIR$ ENDIF
436#endif
437            use omp_lib_kinds
438            integer (kind=omp_lock_kind) svar
439          end subroutine omp_init_lock
440
441          subroutine omp_destroy_lock(svar) bind(c)
442#ifdef __INTEL_COMPILER
443!DIR$ IF(__INTEL_COMPILER.GE.1400)
444!DIR$ attributes known_intrinsic :: omp_destroy_lock
445!DIR$ ENDIF
446#endif
447            use omp_lib_kinds
448            integer (kind=omp_lock_kind) svar
449          end subroutine omp_destroy_lock
450
451          subroutine omp_set_lock(svar) bind(c)
452#ifdef __INTEL_COMPILER
453!DIR$ IF(__INTEL_COMPILER.GE.1400)
454!DIR$ attributes known_intrinsic :: omp_set_lock
455!DIR$ ENDIF
456#endif
457            use omp_lib_kinds
458            integer (kind=omp_lock_kind) svar
459          end subroutine omp_set_lock
460
461          subroutine omp_unset_lock(svar) bind(c)
462#ifdef __INTEL_COMPILER
463!DIR$ IF(__INTEL_COMPILER.GE.1400)
464!DIR$ attributes known_intrinsic :: omp_unset_lock
465!DIR$ ENDIF
466#endif
467            use omp_lib_kinds
468            integer (kind=omp_lock_kind) svar
469          end subroutine omp_unset_lock
470
471          function omp_test_lock(svar) bind(c)
472#ifdef __INTEL_COMPILER
473!DIR$ IF(__INTEL_COMPILER.GE.1400)
474!DIR$ attributes known_intrinsic :: omp_test_lock
475!DIR$ ENDIF
476#endif
477            use omp_lib_kinds
478            logical (kind=omp_logical_kind) omp_test_lock
479            integer (kind=omp_lock_kind) svar
480          end function omp_test_lock
481
482          subroutine omp_init_nest_lock(nvar) bind(c)
483#ifdef __INTEL_COMPILER
484!DIR$ IF(__INTEL_COMPILER.GE.1400)
485!DIR$ attributes known_intrinsic :: omp_init_nest_lock
486!DIR$ ENDIF
487#endif
488            use omp_lib_kinds
489            integer (kind=omp_nest_lock_kind) nvar
490          end subroutine omp_init_nest_lock
491
492          subroutine omp_destroy_nest_lock(nvar) bind(c)
493#ifdef __INTEL_COMPILER
494!DIR$ IF(__INTEL_COMPILER.GE.1400)
495!DIR$ attributes known_intrinsic :: omp_destroy_nest_lock
496!DIR$ ENDIF
497#endif
498            use omp_lib_kinds
499            integer (kind=omp_nest_lock_kind) nvar
500          end subroutine omp_destroy_nest_lock
501
502          subroutine omp_set_nest_lock(nvar) bind(c)
503#ifdef __INTEL_COMPILER
504!DIR$ IF(__INTEL_COMPILER.GE.1400)
505!DIR$ attributes known_intrinsic :: omp_set_nest_lock
506!DIR$ ENDIF
507#endif
508            use omp_lib_kinds
509            integer (kind=omp_nest_lock_kind) nvar
510          end subroutine omp_set_nest_lock
511
512          subroutine omp_unset_nest_lock(nvar) bind(c)
513#ifdef __INTEL_COMPILER
514!DIR$ IF(__INTEL_COMPILER.GE.1400)
515!DIR$ attributes known_intrinsic :: omp_unset_nest_lock
516!DIR$ ENDIF
517#endif
518            use omp_lib_kinds
519            integer (kind=omp_nest_lock_kind) nvar
520          end subroutine omp_unset_nest_lock
521
522          function omp_test_nest_lock(nvar) bind(c)
523#ifdef __INTEL_COMPILER
524!DIR$ IF(__INTEL_COMPILER.GE.1400)
525!DIR$ attributes known_intrinsic :: omp_test_nest_lock
526!DIR$ ENDIF
527#endif
528            use omp_lib_kinds
529            integer (kind=omp_integer_kind) omp_test_nest_lock
530            integer (kind=omp_nest_lock_kind) nvar
531          end function omp_test_nest_lock
532
533          function omp_get_max_task_priority() bind(c)
534            use omp_lib_kinds
535            integer (kind=omp_integer_kind) omp_get_max_task_priority
536          end function omp_get_max_task_priority
537
538          subroutine omp_init_lock_with_hint(svar, hint) bind(c)
539            use omp_lib_kinds
540            integer (kind=omp_lock_kind) svar
541            integer (kind=omp_lock_hint_kind), value :: hint
542          end subroutine omp_init_lock_with_hint
543
544          subroutine omp_init_nest_lock_with_hint(nvar, hint) bind(c)
545            use omp_lib_kinds
546            integer (kind=omp_nest_lock_kind) nvar
547            integer (kind=omp_lock_hint_kind), value :: hint
548          end subroutine omp_init_nest_lock_with_hint
549
550          function omp_control_tool(command, modifier, arg) bind(c)
551            use omp_lib_kinds
552            integer (kind=omp_integer_kind) omp_control_tool
553            integer (kind=omp_control_tool_kind), value :: command
554            integer (kind=omp_control_tool_kind), value :: modifier
555            integer (kind=kmp_pointer_kind), optional :: arg
556          end function omp_control_tool
557
558          function omp_init_allocator(memspace, ntraits, traits)
559            use omp_lib_kinds
560            integer (kind=omp_allocator_handle_kind) omp_init_allocator
561            integer (kind=omp_memspace_handle_kind) :: memspace
562            integer (kind=omp_integer_kind) :: ntraits
563            type(omp_alloctrait), intent(in) :: traits(*)
564          end function omp_init_allocator
565
566          subroutine omp_destroy_allocator(allocator) bind(c)
567            use omp_lib_kinds
568            integer (kind=omp_allocator_handle_kind), value :: allocator
569          end subroutine omp_destroy_allocator
570
571          subroutine omp_set_default_allocator(allocator) bind(c)
572            use omp_lib_kinds
573            integer (kind=omp_allocator_handle_kind), value :: allocator
574          end subroutine omp_set_default_allocator
575
576          function omp_get_default_allocator() bind(c)
577            use omp_lib_kinds
578            integer (kind=omp_allocator_handle_kind) omp_get_default_allocator
579          end function omp_get_default_allocator
580
581          subroutine omp_set_affinity_format(format)
582            character (len=*) :: format
583          end subroutine omp_set_affinity_format
584
585          function omp_get_affinity_format(buffer)
586            use omp_lib_kinds
587            character (len=*) :: buffer
588            integer (kind=kmp_size_t_kind) :: omp_get_affinity_format
589          end function omp_get_affinity_format
590
591          subroutine omp_display_affinity(format)
592            character (len=*) :: format
593          end subroutine omp_display_affinity
594
595          function omp_capture_affinity(buffer, format)
596            use omp_lib_kinds
597            character (len=*) :: format
598            character (len=*) :: buffer
599            integer (kind=kmp_size_t_kind) :: omp_capture_affinity
600          end function omp_capture_affinity
601
602          subroutine omp_set_num_teams(num_teams) bind(c)
603            use omp_lib_kinds
604            integer (kind=omp_integer_kind), value :: num_teams
605          end subroutine omp_set_num_teams
606
607          function omp_get_max_teams() bind(c)
608            use omp_lib_kinds
609            integer (kind=omp_integer_kind) omp_get_max_teams
610          end function omp_get_max_teams
611
612          subroutine omp_set_teams_thread_limit(thread_limit) bind(c)
613            use omp_lib_kinds
614            integer (kind=omp_integer_kind), value :: thread_limit
615          end subroutine omp_set_teams_thread_limit
616
617          function omp_get_teams_thread_limit() bind(c)
618            use omp_lib_kinds
619            integer (kind=omp_integer_kind) omp_get_teams_thread_limit
620          end function omp_get_teams_thread_limit
621
622          subroutine omp_display_env(verbose) bind(c)
623            use omp_lib_kinds
624            logical (kind=omp_logical_kind), value :: verbose
625          end subroutine omp_display_env
626
627          function omp_target_alloc(size, device_num) bind(c)
628            use, intrinsic :: iso_c_binding, only: c_ptr, c_size_t, c_int
629            type(c_ptr) omp_target_alloc
630            integer(c_size_t), value :: size
631            integer(c_int), value :: device_num
632          end function omp_target_alloc
633
634          subroutine omp_target_free(device_ptr, device_num) bind(c)
635            use, intrinsic :: iso_c_binding, only: c_ptr, c_int
636            type(c_ptr), value :: device_ptr
637            integer(c_int), value :: device_num
638          end subroutine omp_target_free
639
640          function omp_target_is_present(ptr, device_num) bind(c)
641            use, intrinsic :: iso_c_binding, only: c_ptr, c_int
642            integer(c_int) omp_target_is_present
643            type(c_ptr), value :: ptr
644            integer(c_int), value :: device_num
645          end function omp_target_is_present
646
647          function omp_target_memcpy(dst, src, length, dst_offset, src_offset, &
648              dst_device_num, src_device_num) bind(c)
649            use, intrinsic :: iso_c_binding, only: c_ptr, c_size_t, c_int
650            integer(c_int) omp_target_memcpy
651            type(c_ptr), value :: dst, src
652            integer(c_size_t), value :: length, dst_offset, src_offset
653            integer(c_int), value :: dst_device_num, src_device_num
654          end function omp_target_memcpy
655
656          function omp_target_memcpy_rect(dst, src, element_size, num_dims,    &
657              volume, dst_offsets, src_offsets, dst_dimensions,                &
658              src_dimensions, dst_device_num, src_device_num) bind(c)
659            use, intrinsic :: iso_c_binding, only: c_ptr, c_size_t, c_int
660            integer(c_int) omp_target_memcpy_rect
661            type(c_ptr), value :: dst, src
662            integer(c_size_t), value :: element_size
663            integer(c_int), value :: num_dims, dst_device_num, src_device_num
664            integer(c_size_t), intent(in) :: volume(*), dst_offsets(*),        &
665                src_offsets(*), dst_dimensions(*), src_dimensions(*)
666          end function omp_target_memcpy_rect
667
668          function omp_target_memcpy_async(dst, src, length, dst_offset,       &
669              src_offset, dst_device_num, src_device_num, depobj_count,        &
670              depobj_list) bind(c)
671            use omp_lib_kinds
672            use, intrinsic :: iso_c_binding, only: c_ptr, c_size_t, c_int
673            integer(c_int) omp_target_memcpy_async
674            type(c_ptr), value :: dst, src
675            integer(c_size_t), value :: length, dst_offset, src_offset
676            integer(c_int), value :: dst_device_num, src_device_num,           &
677                depobj_count
678            integer(omp_depend_kind), optional :: depobj_list(*)
679          end function omp_target_memcpy_async
680
681          function omp_target_memcpy_rect_async(dst, src, element_size,        &
682              num_dims, volume, dst_offsets, src_offsets, dst_dimensions,      &
683              src_dimensions, dst_device_num, src_device_num, depobj_count,    &
684              depobj_list) bind(c)
685            use omp_lib_kinds
686            use, intrinsic :: iso_c_binding, only: c_ptr, c_size_t, c_int
687            integer(c_int) omp_target_memcpy_rect_async
688            type(c_ptr), value :: dst, src
689            integer(c_size_t), value :: element_size
690            integer(c_int), value :: num_dims, dst_device_num, src_device_num, &
691                depobj_count
692            integer(c_size_t), intent(in) :: volume(*), dst_offsets(*),        &
693                src_offsets(*), dst_dimensions(*), src_dimensions(*)
694            integer (omp_depend_kind), optional :: depobj_list(*)
695          end function omp_target_memcpy_rect_async
696
697          function omp_target_memset(ptr, val, count, device_num) bind(c)
698            use, intrinsic :: iso_c_binding, only : c_ptr, c_int, c_size_t
699            type(c_ptr) :: omp_target_memset
700            type(c_ptr), value :: ptr
701            integer(c_int), value :: val
702            integer(c_size_t), value :: count
703            integer(c_int), value :: device_num
704          end function
705
706          function omp_target_memset_async(ptr, val, count, device_num, &
707                                           depobj_count, depobj_list) bind(c)
708            use omp_lib_kinds
709            use, intrinsic :: iso_c_binding, only : c_ptr, c_int, c_size_t
710            type(c_ptr) :: omp_target_memset_async
711            type(c_ptr), value :: ptr
712            integer(c_int), value :: val
713            integer(c_size_t), value :: count
714            integer(c_int), value :: device_num
715            integer(c_int), value :: depobj_count
716            integer(omp_depend_kind), optional :: depobj_list(*)
717          end function
718
719          function omp_target_associate_ptr(host_ptr, device_ptr, size,        &
720              device_offset, device_num) bind(c)
721            use, intrinsic :: iso_c_binding, only: c_ptr, c_size_t, c_int
722            integer(c_int) omp_target_associate_ptr
723            type(c_ptr), value :: host_ptr, device_ptr
724            integer(c_size_t), value :: size, device_offset
725            integer(c_int), value :: device_num
726          end function omp_target_associate_ptr
727
728          function omp_get_mapped_ptr(ptr, device_num) bind(c)
729            use, intrinsic :: iso_c_binding, only: c_ptr, c_int
730            type(c_ptr) omp_get_mapped_ptr
731            type(c_ptr), value :: ptr
732            integer(c_int), value :: device_num
733          end function omp_get_mapped_ptr
734
735          function omp_target_disassociate_ptr(ptr, device_num) bind(c)
736            use, intrinsic :: iso_c_binding, only: c_ptr, c_int
737            integer(c_int) omp_target_disassociate_ptr
738            type(c_ptr), value :: ptr
739            integer(c_int), value :: device_num
740          end function omp_target_disassociate_ptr
741
742          function omp_target_is_accessible(ptr, size, device_num) bind(c)
743            use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t, c_int
744            integer(c_int) omp_target_is_accessible
745            type(c_ptr), value :: ptr
746            integer(c_size_t), value :: size
747            integer(c_int), value :: device_num
748          end function omp_target_is_accessible
749
750          function omp_alloc(size, allocator) bind(c)
751            use omp_lib_kinds
752            use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t
753            type(c_ptr) omp_alloc
754            integer(c_size_t), value :: size
755            integer(omp_allocator_handle_kind), value :: allocator
756          end function omp_alloc
757
758          function omp_aligned_alloc(alignment, size, allocator) bind(c)
759            use omp_lib_kinds
760            use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t
761            type(c_ptr) omp_aligned_alloc
762            integer(c_size_t), value :: alignment, size
763            integer(omp_allocator_handle_kind), value :: allocator
764          end function omp_aligned_alloc
765
766          function omp_calloc(nmemb, size, allocator) bind(c)
767            use omp_lib_kinds
768            use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t
769            type(c_ptr) omp_calloc
770            integer(c_size_t), value :: nmemb, size
771            integer(omp_allocator_handle_kind), value :: allocator
772          end function omp_calloc
773
774          function omp_aligned_calloc(alignment, nmemb, size, allocator) bind(c)
775            use omp_lib_kinds
776            use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t
777            type(c_ptr) omp_aligned_calloc
778            integer(c_size_t), value :: alignment, nmemb, size
779            integer(omp_allocator_handle_kind), value :: allocator
780          end function omp_aligned_calloc
781
782          function omp_realloc(ptr, size, allocator, free_allocator) bind(c)
783            use omp_lib_kinds
784            use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t
785            type(c_ptr) omp_realloc
786            type(c_ptr), value :: ptr
787            integer(c_size_t), value :: size
788            integer(omp_allocator_handle_kind), value :: allocator
789            integer(omp_allocator_handle_kind), value :: free_allocator
790          end function omp_realloc
791
792          subroutine omp_free(ptr, allocator) bind(c)
793            use omp_lib_kinds
794            use, intrinsic :: iso_c_binding, only : c_ptr
795            type(c_ptr), value :: ptr
796            integer(omp_allocator_handle_kind), value :: allocator
797          end subroutine omp_free
798
799          function omp_in_explicit_task() bind(c)
800            use omp_lib_kinds
801            logical (kind=omp_logical_kind) omp_in_explicit_task
802          end function omp_in_explicit_task
803
804!         ***
805!         *** kmp_* entry points
806!         ***
807
808          subroutine kmp_set_stacksize(size) bind(c)
809            use omp_lib_kinds
810            integer (kind=omp_integer_kind), value :: size
811          end subroutine kmp_set_stacksize
812
813          subroutine kmp_set_stacksize_s(size) bind(c)
814            use omp_lib_kinds
815            integer (kind=kmp_size_t_kind), value :: size
816          end subroutine kmp_set_stacksize_s
817
818          subroutine kmp_set_blocktime(msec) bind(c)
819            use omp_lib_kinds
820            integer (kind=omp_integer_kind), value :: msec
821          end subroutine kmp_set_blocktime
822
823          subroutine kmp_set_library_serial() bind(c)
824          end subroutine kmp_set_library_serial
825
826          subroutine kmp_set_library_turnaround() bind(c)
827          end subroutine kmp_set_library_turnaround
828
829          subroutine kmp_set_library_throughput() bind(c)
830          end subroutine kmp_set_library_throughput
831
832          subroutine kmp_set_library(libnum) bind(c)
833            use omp_lib_kinds
834            integer (kind=omp_integer_kind), value :: libnum
835          end subroutine kmp_set_library
836
837          subroutine kmp_set_defaults(string) bind(c)
838            use, intrinsic :: iso_c_binding
839            character (kind=c_char) :: string(*)
840          end subroutine kmp_set_defaults
841
842          function kmp_get_stacksize() bind(c)
843            use omp_lib_kinds
844            integer (kind=omp_integer_kind) kmp_get_stacksize
845          end function kmp_get_stacksize
846
847          function kmp_get_stacksize_s() bind(c)
848            use omp_lib_kinds
849            integer (kind=kmp_size_t_kind) kmp_get_stacksize_s
850          end function kmp_get_stacksize_s
851
852          function kmp_get_blocktime() bind(c)
853            use omp_lib_kinds
854            integer (kind=omp_integer_kind) kmp_get_blocktime
855          end function kmp_get_blocktime
856
857          function kmp_get_library() bind(c)
858            use omp_lib_kinds
859            integer (kind=omp_integer_kind) kmp_get_library
860          end function kmp_get_library
861
862          subroutine kmp_set_disp_num_buffers(num) bind(c)
863            use omp_lib_kinds
864            integer (kind=omp_integer_kind), value :: num
865          end subroutine kmp_set_disp_num_buffers
866
867          function kmp_set_affinity(mask) bind(c)
868            use omp_lib_kinds
869            integer (kind=omp_integer_kind) kmp_set_affinity
870            integer (kind=kmp_affinity_mask_kind) mask
871          end function kmp_set_affinity
872
873          function kmp_get_affinity(mask) bind(c)
874            use omp_lib_kinds
875            integer (kind=omp_integer_kind) kmp_get_affinity
876            integer (kind=kmp_affinity_mask_kind) mask
877          end function kmp_get_affinity
878
879          function kmp_get_affinity_max_proc() bind(c)
880            use omp_lib_kinds
881            integer (kind=omp_integer_kind) kmp_get_affinity_max_proc
882          end function kmp_get_affinity_max_proc
883
884          subroutine kmp_create_affinity_mask(mask) bind(c)
885            use omp_lib_kinds
886            integer (kind=kmp_affinity_mask_kind) mask
887          end subroutine kmp_create_affinity_mask
888
889          subroutine kmp_destroy_affinity_mask(mask) bind(c)
890            use omp_lib_kinds
891            integer (kind=kmp_affinity_mask_kind) mask
892          end subroutine kmp_destroy_affinity_mask
893
894          function kmp_set_affinity_mask_proc(proc, mask) bind(c)
895            use omp_lib_kinds
896            integer (kind=omp_integer_kind) kmp_set_affinity_mask_proc
897            integer (kind=omp_integer_kind), value :: proc
898            integer (kind=kmp_affinity_mask_kind) mask
899          end function kmp_set_affinity_mask_proc
900
901          function kmp_unset_affinity_mask_proc(proc, mask) bind(c)
902            use omp_lib_kinds
903            integer (kind=omp_integer_kind) kmp_unset_affinity_mask_proc
904            integer (kind=omp_integer_kind), value :: proc
905            integer (kind=kmp_affinity_mask_kind) mask
906          end function kmp_unset_affinity_mask_proc
907
908          function kmp_get_affinity_mask_proc(proc, mask) bind(c)
909            use omp_lib_kinds
910            integer (kind=omp_integer_kind) kmp_get_affinity_mask_proc
911            integer (kind=omp_integer_kind), value :: proc
912            integer (kind=kmp_affinity_mask_kind) mask
913          end function kmp_get_affinity_mask_proc
914
915          function kmp_malloc(size) bind(c)
916            use omp_lib_kinds
917            integer (kind=kmp_pointer_kind) kmp_malloc
918            integer (kind=kmp_size_t_kind), value :: size
919          end function kmp_malloc
920
921          function kmp_aligned_malloc(size, alignment) bind(c)
922            use omp_lib_kinds
923            integer (kind=kmp_pointer_kind) kmp_aligned_malloc
924            integer (kind=kmp_size_t_kind), value :: size
925            integer (kind=kmp_size_t_kind), value :: alignment
926          end function kmp_aligned_malloc
927
928          function kmp_calloc(nelem, elsize) bind(c)
929            use omp_lib_kinds
930            integer (kind=kmp_pointer_kind) kmp_calloc
931            integer (kind=kmp_size_t_kind), value :: nelem
932            integer (kind=kmp_size_t_kind), value :: elsize
933          end function kmp_calloc
934
935          function kmp_realloc(ptr, size) bind(c)
936            use omp_lib_kinds
937            integer (kind=kmp_pointer_kind) kmp_realloc
938            integer (kind=kmp_pointer_kind), value :: ptr
939            integer (kind=kmp_size_t_kind), value :: size
940          end function kmp_realloc
941
942          subroutine kmp_free(ptr) bind(c)
943            use omp_lib_kinds
944            integer (kind=kmp_pointer_kind), value :: ptr
945          end subroutine kmp_free
946
947          subroutine kmp_set_warnings_on() bind(c)
948          end subroutine kmp_set_warnings_on
949
950          subroutine kmp_set_warnings_off() bind(c)
951          end subroutine kmp_set_warnings_off
952
953          function kmp_get_cancellation_status(cancelkind) bind(c)
954            use omp_lib_kinds
955            integer (kind=kmp_cancel_kind), value :: cancelkind
956            logical (kind=omp_logical_kind) kmp_get_cancellation_status
957          end function kmp_get_cancellation_status
958
959        end interface
960
961        ! make the above routine definitions public
962        public :: omp_set_num_threads
963        public :: omp_set_dynamic
964        public :: omp_set_nested
965        public :: omp_get_num_threads
966        public :: omp_get_max_threads
967        public :: omp_get_thread_num
968        public :: omp_get_num_procs
969        public :: omp_in_parallel
970        public :: omp_in_final
971        public :: omp_get_dynamic
972        public :: omp_get_nested
973        public :: omp_get_thread_limit
974        public :: omp_set_max_active_levels
975        public :: omp_get_max_active_levels
976        public :: omp_get_level
977        public :: omp_get_active_level
978        public :: omp_get_ancestor_thread_num
979        public :: omp_get_team_size
980        public :: omp_set_schedule
981        public :: omp_get_schedule
982        public :: omp_get_proc_bind
983        public :: omp_get_num_places
984        public :: omp_get_place_num_procs
985        public :: omp_get_place_proc_ids
986        public :: omp_get_place_num
987        public :: omp_get_partition_num_places
988        public :: omp_get_partition_place_nums
989        public :: omp_get_wtime
990        public :: omp_get_wtick
991        public :: omp_get_default_device
992        public :: omp_set_default_device
993        public :: omp_get_num_devices
994        public :: omp_get_num_teams
995        public :: omp_get_team_num
996        public :: omp_get_cancellation
997        public :: omp_is_initial_device
998        public :: omp_get_initial_device
999        public :: omp_get_device_num
1000        public :: omp_pause_resource
1001        public :: omp_pause_resource_all
1002        public :: omp_get_supported_active_levels
1003        public :: omp_fulfill_event
1004        public :: omp_init_lock
1005        public :: omp_destroy_lock
1006        public :: omp_set_lock
1007        public :: omp_unset_lock
1008        public :: omp_test_lock
1009        public :: omp_init_nest_lock
1010        public :: omp_destroy_nest_lock
1011        public :: omp_set_nest_lock
1012        public :: omp_unset_nest_lock
1013        public :: omp_test_nest_lock
1014        public :: omp_get_max_task_priority
1015        public :: omp_init_lock_with_hint
1016        public :: omp_init_nest_lock_with_hint
1017        public :: omp_control_tool
1018        public :: omp_init_allocator
1019        public :: omp_destroy_allocator
1020        public :: omp_set_default_allocator
1021        public :: omp_get_default_allocator
1022        public :: omp_set_affinity_format
1023        public :: omp_get_affinity_format
1024        public :: omp_display_affinity
1025        public :: omp_capture_affinity
1026        public :: omp_set_num_teams
1027        public :: omp_get_max_teams
1028        public :: omp_set_teams_thread_limit
1029        public :: omp_get_teams_thread_limit
1030        public :: omp_display_env
1031        public :: omp_target_alloc
1032        public :: omp_target_free
1033        public :: omp_target_is_present
1034        public :: omp_target_memcpy
1035        public :: omp_target_memcpy_rect
1036        public :: omp_target_memcpy_async
1037        public :: omp_target_memcpy_rect_async
1038        public :: omp_target_memset
1039        public :: omp_target_memset_async
1040        public :: omp_target_associate_ptr
1041        public :: omp_get_mapped_ptr
1042        public :: omp_target_disassociate_ptr
1043        public :: omp_target_is_accessible
1044        public :: omp_alloc
1045        public :: omp_aligned_alloc
1046        public :: omp_calloc
1047        public :: omp_aligned_calloc
1048        public :: omp_realloc
1049        public :: omp_free
1050        public :: omp_in_explicit_task
1051        public :: kmp_set_stacksize
1052        public :: kmp_set_stacksize_s
1053        public :: kmp_set_blocktime
1054        public :: kmp_set_library_serial
1055        public :: kmp_set_library_turnaround
1056        public :: kmp_set_library_throughput
1057        public :: kmp_set_library
1058        public :: kmp_set_defaults
1059        public :: kmp_get_stacksize
1060        public :: kmp_get_stacksize_s
1061        public :: kmp_get_blocktime
1062        public :: kmp_get_library
1063        public :: kmp_set_disp_num_buffers
1064        public :: kmp_set_affinity
1065        public :: kmp_get_affinity
1066        public :: kmp_get_affinity_max_proc
1067        public :: kmp_create_affinity_mask
1068        public :: kmp_destroy_affinity_mask
1069        public :: kmp_set_affinity_mask_proc
1070        public :: kmp_unset_affinity_mask_proc
1071        public :: kmp_get_affinity_mask_proc
1072        public :: kmp_malloc
1073        public :: kmp_aligned_malloc
1074        public :: kmp_calloc
1075        public :: kmp_realloc
1076        public :: kmp_free
1077        public :: kmp_set_warnings_on
1078        public :: kmp_set_warnings_off
1079        public :: kmp_get_cancellation_status
1080
1081      end module omp_lib
1082