1 ! include/45/omp_lib.f90.var
4 !//===----------------------------------------------------------------------===//
6 !// The LLVM Compiler Infrastructure
8 !// This file is dual licensed under the MIT and the University of Illinois Open
9 !// Source Licenses. See LICENSE.txt for details.
11 !//===----------------------------------------------------------------------===//
16 use, intrinsic :: iso_c_binding
18 integer, parameter :: omp_integer_kind = c_int
19 integer, parameter :: omp_logical_kind = 4
20 integer, parameter :: omp_real_kind = c_float
21 integer, parameter :: kmp_double_kind = c_double
22 integer, parameter :: omp_lock_kind = c_intptr_t
23 integer, parameter :: omp_nest_lock_kind = c_intptr_t
24 integer, parameter :: omp_sched_kind = omp_integer_kind
25 integer, parameter :: omp_proc_bind_kind = omp_integer_kind
26 integer, parameter :: kmp_pointer_kind = c_intptr_t
27 integer, parameter :: kmp_size_t_kind = c_size_t
28 integer, parameter :: kmp_affinity_mask_kind = c_intptr_t
29 integer, parameter :: kmp_cancel_kind = omp_integer_kind
30 integer, parameter :: omp_lock_hint_kind = omp_integer_kind
32 end module omp_lib_kinds
38 integer (kind=omp_integer_kind), parameter :: openmp_version = @LIBOMP_OMP_YEAR_MONTH@
39 integer (kind=omp_integer_kind), parameter :: kmp_version_major = @LIBOMP_VERSION_MAJOR@
40 integer (kind=omp_integer_kind), parameter :: kmp_version_minor = @LIBOMP_VERSION_MINOR@
41 integer (kind=omp_integer_kind), parameter :: kmp_version_build = @LIBOMP_VERSION_BUILD@
42 character(*) kmp_build_date
43 parameter( kmp_build_date = '@LIBOMP_BUILD_DATE@' )
45 integer(kind=omp_sched_kind), parameter :: omp_sched_static = 1
46 integer(kind=omp_sched_kind), parameter :: omp_sched_dynamic = 2
47 integer(kind=omp_sched_kind), parameter :: omp_sched_guided = 3
48 integer(kind=omp_sched_kind), parameter :: omp_sched_auto = 4
51 integer (kind=omp_proc_bind_kind), parameter :: omp_proc_bind_false = 0
52 integer (kind=omp_proc_bind_kind), parameter :: omp_proc_bind_true = 1
53 integer (kind=omp_proc_bind_kind), parameter :: omp_proc_bind_master = 2
54 integer (kind=omp_proc_bind_kind), parameter :: omp_proc_bind_close = 3
55 integer (kind=omp_proc_bind_kind), parameter :: omp_proc_bind_spread = 4
57 integer (kind=kmp_cancel_kind), parameter :: kmp_cancel_parallel = 1
58 integer (kind=kmp_cancel_kind), parameter :: kmp_cancel_loop = 2
59 integer (kind=kmp_cancel_kind), parameter :: kmp_cancel_sections = 3
60 integer (kind=kmp_cancel_kind), parameter :: kmp_cancel_taskgroup = 4
62 integer (kind=omp_lock_hint_kind), parameter :: omp_lock_hint_none = 0
63 integer (kind=omp_lock_hint_kind), parameter :: omp_lock_hint_uncontended = 1
64 integer (kind=omp_lock_hint_kind), parameter :: omp_lock_hint_contended = 2
65 integer (kind=omp_lock_hint_kind), parameter :: omp_lock_hint_nonspeculative = 4
66 integer (kind=omp_lock_hint_kind), parameter :: omp_lock_hint_speculative = 8
67 integer (kind=omp_lock_hint_kind), parameter :: kmp_lock_hint_hle = 65536
68 integer (kind=omp_lock_hint_kind), parameter :: kmp_lock_hint_rtm = 131072
69 integer (kind=omp_lock_hint_kind), parameter :: kmp_lock_hint_adaptive = 262144
74 ! *** omp_* entry points
77 subroutine omp_set_num_threads(num_threads) bind(c)
79 integer (kind=omp_integer_kind), value :: num_threads
80 end subroutine omp_set_num_threads
82 subroutine omp_set_dynamic(dynamic_threads) bind(c)
84 logical (kind=omp_logical_kind), value :: dynamic_threads
85 end subroutine omp_set_dynamic
87 subroutine omp_set_nested(nested) bind(c)
89 logical (kind=omp_logical_kind), value :: nested
90 end subroutine omp_set_nested
92 function omp_get_num_threads() bind(c)
94 integer (kind=omp_integer_kind) omp_get_num_threads
95 end function omp_get_num_threads
97 function omp_get_max_threads() bind(c)
99 integer (kind=omp_integer_kind) omp_get_max_threads
100 end function omp_get_max_threads
102 function omp_get_thread_num() bind(c)
104 integer (kind=omp_integer_kind) omp_get_thread_num
105 end function omp_get_thread_num
107 function omp_get_num_procs() bind(c)
109 integer (kind=omp_integer_kind) omp_get_num_procs
110 end function omp_get_num_procs
112 function omp_in_parallel() bind(c)
114 logical (kind=omp_logical_kind) omp_in_parallel
115 end function omp_in_parallel
117 function omp_in_final() bind(c)
119 logical (kind=omp_logical_kind) omp_in_final
120 end function omp_in_final
122 function omp_get_dynamic() bind(c)
124 logical (kind=omp_logical_kind) omp_get_dynamic
125 end function omp_get_dynamic
127 function omp_get_nested() bind(c)
129 logical (kind=omp_logical_kind) omp_get_nested
130 end function omp_get_nested
132 function omp_get_thread_limit() bind(c)
134 integer (kind=omp_integer_kind) omp_get_thread_limit
135 end function omp_get_thread_limit
137 subroutine omp_set_max_active_levels(max_levels) bind(c)
139 integer (kind=omp_integer_kind), value :: max_levels
140 end subroutine omp_set_max_active_levels
142 function omp_get_max_active_levels() bind(c)
144 integer (kind=omp_integer_kind) omp_get_max_active_levels
145 end function omp_get_max_active_levels
147 function omp_get_level() bind(c)
149 integer (kind=omp_integer_kind) omp_get_level
150 end function omp_get_level
152 function omp_get_active_level() bind(c)
154 integer (kind=omp_integer_kind) omp_get_active_level
155 end function omp_get_active_level
157 function omp_get_ancestor_thread_num(level) bind(c)
159 integer (kind=omp_integer_kind) omp_get_ancestor_thread_num
160 integer (kind=omp_integer_kind), value :: level
161 end function omp_get_ancestor_thread_num
163 function omp_get_team_size(level) bind(c)
165 integer (kind=omp_integer_kind) omp_get_team_size
166 integer (kind=omp_integer_kind), value :: level
167 end function omp_get_team_size
169 subroutine omp_set_schedule(kind, chunk_size) bind(c)
171 integer (kind=omp_sched_kind), value :: kind
172 integer (kind=omp_integer_kind), value :: chunk_size
173 end subroutine omp_set_schedule
175 subroutine omp_get_schedule(kind, chunk_size) bind(c)
177 integer (kind=omp_sched_kind) kind
178 integer (kind=omp_integer_kind) chunk_size
179 end subroutine omp_get_schedule
181 function omp_get_proc_bind() bind(c)
183 integer (kind=omp_proc_bind_kind) omp_get_proc_bind
184 end function omp_get_proc_bind
186 function omp_get_num_places() bind(c)
188 integer (kind=omp_integer_kind) omp_get_num_places
189 end function omp_get_num_places
191 function omp_get_place_num_procs(place_num) bind(c)
193 integer (kind=omp_integer_kind), value :: place_num
194 integer (kind=omp_integer_kind) omp_get_place_num_procs
195 end function omp_get_place_num_procs
197 subroutine omp_get_place_proc_ids(place_num, ids) bind(c)
199 integer (kind=omp_integer_kind), value :: place_num
200 integer (kind=omp_integer_kind) ids(*)
201 end subroutine omp_get_place_proc_ids
203 function omp_get_place_num() bind(c)
205 integer (kind=omp_integer_kind) omp_get_place_num
206 end function omp_get_place_num
208 function omp_get_partition_num_places() bind(c)
210 integer (kind=omp_integer_kind) omp_get_partition_num_places
211 end function omp_get_partition_num_places
213 subroutine omp_get_partition_place_nums(place_nums) bind(c)
215 integer (kind=omp_integer_kind) place_nums(*)
216 end subroutine omp_get_partition_place_nums
218 function omp_get_wtime() bind(c)
220 real (kind=kmp_double_kind) omp_get_wtime
221 end function omp_get_wtime
223 function omp_get_wtick() bind(c)
225 real (kind=kmp_double_kind) omp_get_wtick
226 end function omp_get_wtick
228 function omp_get_default_device() bind(c)
230 integer (kind=omp_integer_kind) omp_get_default_device
231 end function omp_get_default_device
233 subroutine omp_set_default_device(device_num) bind(c)
235 integer (kind=omp_integer_kind), value :: device_num
236 end subroutine omp_set_default_device
238 function omp_get_num_devices() bind(c)
240 integer (kind=omp_integer_kind) omp_get_num_devices
241 end function omp_get_num_devices
243 function omp_get_num_teams() bind(c)
245 integer (kind=omp_integer_kind) omp_get_num_teams
246 end function omp_get_num_teams
248 function omp_get_team_num() bind(c)
250 integer (kind=omp_integer_kind) omp_get_team_num
251 end function omp_get_team_num
253 function omp_get_cancellation() bind(c)
255 integer (kind=omp_integer_kind) omp_get_cancellation
256 end function omp_get_cancellation
258 function omp_is_initial_device() bind(c)
260 logical (kind=omp_logical_kind) omp_is_initial_device
261 end function omp_is_initial_device
263 function omp_get_initial_device() bind(c)
265 integer (kind=omp_integer_kind) omp_get_initial_device
266 end function omp_get_initial_device
268 subroutine omp_init_lock(svar) bind(c)
269 !DIR$ IF(__INTEL_COMPILER.GE.1400)
270 !DIR$ attributes known_intrinsic :: omp_init_lock
273 integer (kind=omp_lock_kind) svar
274 end subroutine omp_init_lock
276 subroutine omp_destroy_lock(svar) bind(c)
277 !DIR$ IF(__INTEL_COMPILER.GE.1400)
278 !DIR$ attributes known_intrinsic :: omp_destroy_lock
281 integer (kind=omp_lock_kind) svar
282 end subroutine omp_destroy_lock
284 subroutine omp_set_lock(svar) bind(c)
285 !DIR$ IF(__INTEL_COMPILER.GE.1400)
286 !DIR$ attributes known_intrinsic :: omp_set_lock
289 integer (kind=omp_lock_kind) svar
290 end subroutine omp_set_lock
292 subroutine omp_unset_lock(svar) bind(c)
293 !DIR$ IF(__INTEL_COMPILER.GE.1400)
294 !DIR$ attributes known_intrinsic :: omp_unset_lock
297 integer (kind=omp_lock_kind) svar
298 end subroutine omp_unset_lock
300 function omp_test_lock(svar) bind(c)
301 !DIR$ IF(__INTEL_COMPILER.GE.1400)
302 !DIR$ attributes known_intrinsic :: omp_test_lock
305 logical (kind=omp_logical_kind) omp_test_lock
306 integer (kind=omp_lock_kind) svar
307 end function omp_test_lock
309 subroutine omp_init_nest_lock(nvar) bind(c)
310 !DIR$ IF(__INTEL_COMPILER.GE.1400)
311 !DIR$ attributes known_intrinsic :: omp_init_nest_lock
314 integer (kind=omp_nest_lock_kind) nvar
315 end subroutine omp_init_nest_lock
317 subroutine omp_destroy_nest_lock(nvar) bind(c)
318 !DIR$ IF(__INTEL_COMPILER.GE.1400)
319 !DIR$ attributes known_intrinsic :: omp_destroy_nest_lock
322 integer (kind=omp_nest_lock_kind) nvar
323 end subroutine omp_destroy_nest_lock
325 subroutine omp_set_nest_lock(nvar) bind(c)
326 !DIR$ IF(__INTEL_COMPILER.GE.1400)
327 !DIR$ attributes known_intrinsic :: omp_set_nest_lock
330 integer (kind=omp_nest_lock_kind) nvar
331 end subroutine omp_set_nest_lock
333 subroutine omp_unset_nest_lock(nvar) bind(c)
334 !DIR$ IF(__INTEL_COMPILER.GE.1400)
335 !DIR$ attributes known_intrinsic :: omp_unset_nest_lock
338 integer (kind=omp_nest_lock_kind) nvar
339 end subroutine omp_unset_nest_lock
341 function omp_test_nest_lock(nvar) bind(c)
342 !DIR$ IF(__INTEL_COMPILER.GE.1400)
343 !DIR$ attributes known_intrinsic :: omp_test_nest_lock
346 integer (kind=omp_integer_kind) omp_test_nest_lock
347 integer (kind=omp_nest_lock_kind) nvar
348 end function omp_test_nest_lock
350 function omp_get_max_task_priority() bind(c)
352 integer (kind=omp_integer_kind) omp_get_max_task_priority
353 end function omp_get_max_task_priority
356 ! *** kmp_* entry points
359 subroutine kmp_set_stacksize(size) bind(c)
361 integer (kind=omp_integer_kind), value :: size
362 end subroutine kmp_set_stacksize
364 subroutine kmp_set_stacksize_s(size) bind(c)
366 integer (kind=kmp_size_t_kind), value :: size
367 end subroutine kmp_set_stacksize_s
369 subroutine kmp_set_blocktime(msec) bind(c)
371 integer (kind=omp_integer_kind), value :: msec
372 end subroutine kmp_set_blocktime
374 subroutine kmp_set_library_serial() bind(c)
375 end subroutine kmp_set_library_serial
377 subroutine kmp_set_library_turnaround() bind(c)
378 end subroutine kmp_set_library_turnaround
380 subroutine kmp_set_library_throughput() bind(c)
381 end subroutine kmp_set_library_throughput
383 subroutine kmp_set_library(libnum) bind(c)
385 integer (kind=omp_integer_kind), value :: libnum
386 end subroutine kmp_set_library
388 subroutine kmp_set_defaults(string) bind(c)
389 use, intrinsic :: iso_c_binding
390 character (kind=c_char) :: string(*)
391 end subroutine kmp_set_defaults
393 function kmp_get_stacksize() bind(c)
395 integer (kind=omp_integer_kind) kmp_get_stacksize
396 end function kmp_get_stacksize
398 function kmp_get_stacksize_s() bind(c)
400 integer (kind=kmp_size_t_kind) kmp_get_stacksize_s
401 end function kmp_get_stacksize_s
403 function kmp_get_blocktime() bind(c)
405 integer (kind=omp_integer_kind) kmp_get_blocktime
406 end function kmp_get_blocktime
408 function kmp_get_library() bind(c)
410 integer (kind=omp_integer_kind) kmp_get_library
411 end function kmp_get_library
413 subroutine kmp_set_disp_num_buffers(num) bind(c)
415 integer (kind=omp_integer_kind), value :: num
416 end subroutine kmp_set_disp_num_buffers
418 function kmp_set_affinity(mask) bind(c)
420 integer (kind=omp_integer_kind) kmp_set_affinity
421 integer (kind=kmp_affinity_mask_kind) mask
422 end function kmp_set_affinity
424 function kmp_get_affinity(mask) bind(c)
426 integer (kind=omp_integer_kind) kmp_get_affinity
427 integer (kind=kmp_affinity_mask_kind) mask
428 end function kmp_get_affinity
430 function kmp_get_affinity_max_proc() bind(c)
432 integer (kind=omp_integer_kind) kmp_get_affinity_max_proc
433 end function kmp_get_affinity_max_proc
435 subroutine kmp_create_affinity_mask(mask) bind(c)
437 integer (kind=kmp_affinity_mask_kind) mask
438 end subroutine kmp_create_affinity_mask
440 subroutine kmp_destroy_affinity_mask(mask) bind(c)
442 integer (kind=kmp_affinity_mask_kind) mask
443 end subroutine kmp_destroy_affinity_mask
445 function kmp_set_affinity_mask_proc(proc, mask) bind(c)
447 integer (kind=omp_integer_kind) kmp_set_affinity_mask_proc
448 integer (kind=omp_integer_kind), value :: proc
449 integer (kind=kmp_affinity_mask_kind) mask
450 end function kmp_set_affinity_mask_proc
452 function kmp_unset_affinity_mask_proc(proc, mask) bind(c)
454 integer (kind=omp_integer_kind) kmp_unset_affinity_mask_proc
455 integer (kind=omp_integer_kind), value :: proc
456 integer (kind=kmp_affinity_mask_kind) mask
457 end function kmp_unset_affinity_mask_proc
459 function kmp_get_affinity_mask_proc(proc, mask) bind(c)
461 integer (kind=omp_integer_kind) kmp_get_affinity_mask_proc
462 integer (kind=omp_integer_kind), value :: proc
463 integer (kind=kmp_affinity_mask_kind) mask
464 end function kmp_get_affinity_mask_proc
466 function kmp_malloc(size) bind(c)
468 integer (kind=kmp_pointer_kind) kmp_malloc
469 integer (kind=kmp_size_t_kind), value :: size
470 end function kmp_malloc
472 function kmp_aligned_malloc(size, alignment) bind(c)
474 integer (kind=kmp_pointer_kind) kmp_aligned_malloc
475 integer (kind=kmp_size_t_kind), value :: size
476 integer (kind=kmp_size_t_kind), value :: alignment
477 end function kmp_aligned_malloc
479 function kmp_calloc(nelem, elsize) bind(c)
481 integer (kind=kmp_pointer_kind) kmp_calloc
482 integer (kind=kmp_size_t_kind), value :: nelem
483 integer (kind=kmp_size_t_kind), value :: elsize
484 end function kmp_calloc
486 function kmp_realloc(ptr, size) bind(c)
488 integer (kind=kmp_pointer_kind) kmp_realloc
489 integer (kind=kmp_pointer_kind), value :: ptr
490 integer (kind=kmp_size_t_kind), value :: size
491 end function kmp_realloc
493 subroutine kmp_free(ptr) bind(c)
495 integer (kind=kmp_pointer_kind), value :: ptr
496 end subroutine kmp_free
498 subroutine kmp_set_warnings_on() bind(c)
499 end subroutine kmp_set_warnings_on
501 subroutine kmp_set_warnings_off() bind(c)
502 end subroutine kmp_set_warnings_off
504 function kmp_get_cancellation_status(cancelkind) bind(c)
506 integer (kind=kmp_cancel_kind), value :: cancelkind
507 logical (kind=omp_logical_kind) kmp_get_cancellation_status
508 end function kmp_get_cancellation_status
510 subroutine omp_init_lock_with_hint(svar, hint) bind(c)
512 integer (kind=omp_lock_kind) svar
513 integer (kind=omp_lock_hint_kind), value :: hint
514 end subroutine omp_init_lock_with_hint
516 subroutine omp_init_nest_lock_with_hint(nvar, hint) bind(c)
518 integer (kind=omp_nest_lock_kind) nvar
519 integer (kind=omp_lock_hint_kind), value :: hint
520 end subroutine omp_init_nest_lock_with_hint