1 ! include/50/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_sync_hint_kind = omp_integer_kind
31 integer, parameter :: omp_lock_hint_kind = omp_sync_hint_kind
32 integer, parameter :: omp_control_tool_kind = omp_integer_kind
33 integer, parameter :: omp_control_tool_result_kind = omp_integer_kind
34 integer, parameter :: omp_allocator_kind = c_intptr_t
36 end module omp_lib_kinds
42 integer (kind=omp_integer_kind), parameter :: openmp_version = @LIBOMP_OMP_YEAR_MONTH@
43 integer (kind=omp_integer_kind), parameter :: kmp_version_major = @LIBOMP_VERSION_MAJOR@
44 integer (kind=omp_integer_kind), parameter :: kmp_version_minor = @LIBOMP_VERSION_MINOR@
45 integer (kind=omp_integer_kind), parameter :: kmp_version_build = @LIBOMP_VERSION_BUILD@
46 character(*) kmp_build_date
47 parameter( kmp_build_date = '@LIBOMP_BUILD_DATE@' )
49 integer(kind=omp_sched_kind), parameter :: omp_sched_static = 1
50 integer(kind=omp_sched_kind), parameter :: omp_sched_dynamic = 2
51 integer(kind=omp_sched_kind), parameter :: omp_sched_guided = 3
52 integer(kind=omp_sched_kind), parameter :: omp_sched_auto = 4
55 integer (kind=omp_proc_bind_kind), parameter :: omp_proc_bind_false = 0
56 integer (kind=omp_proc_bind_kind), parameter :: omp_proc_bind_true = 1
57 integer (kind=omp_proc_bind_kind), parameter :: omp_proc_bind_master = 2
58 integer (kind=omp_proc_bind_kind), parameter :: omp_proc_bind_close = 3
59 integer (kind=omp_proc_bind_kind), parameter :: omp_proc_bind_spread = 4
61 integer (kind=kmp_cancel_kind), parameter :: kmp_cancel_parallel = 1
62 integer (kind=kmp_cancel_kind), parameter :: kmp_cancel_loop = 2
63 integer (kind=kmp_cancel_kind), parameter :: kmp_cancel_sections = 3
64 integer (kind=kmp_cancel_kind), parameter :: kmp_cancel_taskgroup = 4
66 integer (kind=omp_sync_hint_kind), parameter :: omp_sync_hint_none = 0
67 integer (kind=omp_sync_hint_kind), parameter :: omp_sync_hint_uncontended = 1
68 integer (kind=omp_sync_hint_kind), parameter :: omp_sync_hint_contended = 2
69 integer (kind=omp_sync_hint_kind), parameter :: omp_sync_hint_nonspeculative = 4
70 integer (kind=omp_sync_hint_kind), parameter :: omp_sync_hint_speculative = 8
71 integer (kind=omp_lock_hint_kind), parameter :: omp_lock_hint_none = omp_sync_hint_none
72 integer (kind=omp_lock_hint_kind), parameter :: omp_lock_hint_uncontended = omp_sync_hint_uncontended
73 integer (kind=omp_lock_hint_kind), parameter :: omp_lock_hint_contended = omp_sync_hint_contended
74 integer (kind=omp_lock_hint_kind), parameter :: omp_lock_hint_nonspeculative = omp_sync_hint_nonspeculative
75 integer (kind=omp_lock_hint_kind), parameter :: omp_lock_hint_speculative = omp_sync_hint_speculative
76 integer (kind=omp_lock_hint_kind), parameter :: kmp_lock_hint_hle = 65536
77 integer (kind=omp_lock_hint_kind), parameter :: kmp_lock_hint_rtm = 131072
78 integer (kind=omp_lock_hint_kind), parameter :: kmp_lock_hint_adaptive = 262144
80 integer (kind=omp_control_tool_kind), parameter :: omp_control_tool_start = 1
81 integer (kind=omp_control_tool_kind), parameter :: omp_control_tool_pause = 2
82 integer (kind=omp_control_tool_kind), parameter :: omp_control_tool_flush = 3
83 integer (kind=omp_control_tool_kind), parameter :: omp_control_tool_end = 4
85 integer (kind=omp_control_tool_result_kind), parameter :: omp_control_tool_notool = -2
86 integer (kind=omp_control_tool_result_kind), parameter :: omp_control_tool_nocallback = -1
87 integer (kind=omp_control_tool_result_kind), parameter :: omp_control_tool_success = 0
88 integer (kind=omp_control_tool_result_kind), parameter :: omp_control_tool_ignored = 1
90 integer (kind=omp_allocator_kind), parameter :: omp_null_allocator = 0
91 integer (kind=omp_allocator_kind), parameter :: omp_default_mem_alloc = 1
92 integer (kind=omp_allocator_kind), parameter :: omp_large_cap_mem_alloc = 2
93 integer (kind=omp_allocator_kind), parameter :: omp_const_mem_alloc = 3
94 integer (kind=omp_allocator_kind), parameter :: omp_high_bw_mem_alloc = 4
95 integer (kind=omp_allocator_kind), parameter :: omp_low_lat_mem_alloc = 5
96 integer (kind=omp_allocator_kind), parameter :: omp_cgroup_mem_alloc = 6
97 integer (kind=omp_allocator_kind), parameter :: omp_pteam_mem_alloc = 7
98 integer (kind=omp_allocator_kind), parameter :: omp_thread_mem_alloc = 8
103 ! *** omp_* entry points
106 subroutine omp_set_num_threads(num_threads) bind(c)
108 integer (kind=omp_integer_kind), value :: num_threads
109 end subroutine omp_set_num_threads
111 subroutine omp_set_dynamic(dynamic_threads) bind(c)
113 logical (kind=omp_logical_kind), value :: dynamic_threads
114 end subroutine omp_set_dynamic
116 subroutine omp_set_nested(nested) bind(c)
118 logical (kind=omp_logical_kind), value :: nested
119 end subroutine omp_set_nested
121 function omp_get_num_threads() bind(c)
123 integer (kind=omp_integer_kind) omp_get_num_threads
124 end function omp_get_num_threads
126 function omp_get_max_threads() bind(c)
128 integer (kind=omp_integer_kind) omp_get_max_threads
129 end function omp_get_max_threads
131 function omp_get_thread_num() bind(c)
133 integer (kind=omp_integer_kind) omp_get_thread_num
134 end function omp_get_thread_num
136 function omp_get_num_procs() bind(c)
138 integer (kind=omp_integer_kind) omp_get_num_procs
139 end function omp_get_num_procs
141 function omp_in_parallel() bind(c)
143 logical (kind=omp_logical_kind) omp_in_parallel
144 end function omp_in_parallel
146 function omp_in_final() bind(c)
148 logical (kind=omp_logical_kind) omp_in_final
149 end function omp_in_final
151 function omp_get_dynamic() bind(c)
153 logical (kind=omp_logical_kind) omp_get_dynamic
154 end function omp_get_dynamic
156 function omp_get_nested() bind(c)
158 logical (kind=omp_logical_kind) omp_get_nested
159 end function omp_get_nested
161 function omp_get_thread_limit() bind(c)
163 integer (kind=omp_integer_kind) omp_get_thread_limit
164 end function omp_get_thread_limit
166 subroutine omp_set_max_active_levels(max_levels) bind(c)
168 integer (kind=omp_integer_kind), value :: max_levels
169 end subroutine omp_set_max_active_levels
171 function omp_get_max_active_levels() bind(c)
173 integer (kind=omp_integer_kind) omp_get_max_active_levels
174 end function omp_get_max_active_levels
176 function omp_get_level() bind(c)
178 integer (kind=omp_integer_kind) omp_get_level
179 end function omp_get_level
181 function omp_get_active_level() bind(c)
183 integer (kind=omp_integer_kind) omp_get_active_level
184 end function omp_get_active_level
186 function omp_get_ancestor_thread_num(level) bind(c)
188 integer (kind=omp_integer_kind) omp_get_ancestor_thread_num
189 integer (kind=omp_integer_kind), value :: level
190 end function omp_get_ancestor_thread_num
192 function omp_get_team_size(level) bind(c)
194 integer (kind=omp_integer_kind) omp_get_team_size
195 integer (kind=omp_integer_kind), value :: level
196 end function omp_get_team_size
198 subroutine omp_set_schedule(kind, chunk_size) bind(c)
200 integer (kind=omp_sched_kind), value :: kind
201 integer (kind=omp_integer_kind), value :: chunk_size
202 end subroutine omp_set_schedule
204 subroutine omp_get_schedule(kind, chunk_size) bind(c)
206 integer (kind=omp_sched_kind) kind
207 integer (kind=omp_integer_kind) chunk_size
208 end subroutine omp_get_schedule
210 function omp_get_proc_bind() bind(c)
212 integer (kind=omp_proc_bind_kind) omp_get_proc_bind
213 end function omp_get_proc_bind
215 function omp_get_num_places() bind(c)
217 integer (kind=omp_integer_kind) omp_get_num_places
218 end function omp_get_num_places
220 function omp_get_place_num_procs(place_num) bind(c)
222 integer (kind=omp_integer_kind), value :: place_num
223 integer (kind=omp_integer_kind) omp_get_place_num_procs
224 end function omp_get_place_num_procs
226 subroutine omp_get_place_proc_ids(place_num, ids) bind(c)
228 integer (kind=omp_integer_kind), value :: place_num
229 integer (kind=omp_integer_kind) ids(*)
230 end subroutine omp_get_place_proc_ids
232 function omp_get_place_num() bind(c)
234 integer (kind=omp_integer_kind) omp_get_place_num
235 end function omp_get_place_num
237 function omp_get_partition_num_places() bind(c)
239 integer (kind=omp_integer_kind) omp_get_partition_num_places
240 end function omp_get_partition_num_places
242 subroutine omp_get_partition_place_nums(place_nums) bind(c)
244 integer (kind=omp_integer_kind) place_nums(*)
245 end subroutine omp_get_partition_place_nums
247 function omp_get_wtime() bind(c)
249 real (kind=kmp_double_kind) omp_get_wtime
250 end function omp_get_wtime
252 function omp_get_wtick() bind(c)
254 real (kind=kmp_double_kind) omp_get_wtick
255 end function omp_get_wtick
257 function omp_get_default_device() bind(c)
259 integer (kind=omp_integer_kind) omp_get_default_device
260 end function omp_get_default_device
262 subroutine omp_set_default_device(device_num) bind(c)
264 integer (kind=omp_integer_kind), value :: device_num
265 end subroutine omp_set_default_device
267 function omp_get_num_devices() bind(c)
269 integer (kind=omp_integer_kind) omp_get_num_devices
270 end function omp_get_num_devices
272 function omp_get_num_teams() bind(c)
274 integer (kind=omp_integer_kind) omp_get_num_teams
275 end function omp_get_num_teams
277 function omp_get_team_num() bind(c)
279 integer (kind=omp_integer_kind) omp_get_team_num
280 end function omp_get_team_num
282 function omp_get_cancellation() bind(c)
284 integer (kind=omp_integer_kind) omp_get_cancellation
285 end function omp_get_cancellation
287 function omp_is_initial_device() bind(c)
289 logical (kind=omp_logical_kind) omp_is_initial_device
290 end function omp_is_initial_device
292 function omp_get_initial_device() bind(c)
294 integer (kind=omp_integer_kind) omp_get_initial_device
295 end function omp_get_initial_device
297 function omp_get_device_num() bind(c)
299 integer (kind=omp_integer_kind) omp_get_device_num
300 end function omp_get_device_num
302 subroutine omp_init_lock(svar) bind(c)
303 !DIR$ IF(__INTEL_COMPILER.GE.1400)
304 !DIR$ attributes known_intrinsic :: omp_init_lock
307 integer (kind=omp_lock_kind) svar
308 end subroutine omp_init_lock
310 subroutine omp_destroy_lock(svar) bind(c)
311 !DIR$ IF(__INTEL_COMPILER.GE.1400)
312 !DIR$ attributes known_intrinsic :: omp_destroy_lock
315 integer (kind=omp_lock_kind) svar
316 end subroutine omp_destroy_lock
318 subroutine omp_set_lock(svar) bind(c)
319 !DIR$ IF(__INTEL_COMPILER.GE.1400)
320 !DIR$ attributes known_intrinsic :: omp_set_lock
323 integer (kind=omp_lock_kind) svar
324 end subroutine omp_set_lock
326 subroutine omp_unset_lock(svar) bind(c)
327 !DIR$ IF(__INTEL_COMPILER.GE.1400)
328 !DIR$ attributes known_intrinsic :: omp_unset_lock
331 integer (kind=omp_lock_kind) svar
332 end subroutine omp_unset_lock
334 function omp_test_lock(svar) bind(c)
335 !DIR$ IF(__INTEL_COMPILER.GE.1400)
336 !DIR$ attributes known_intrinsic :: omp_test_lock
339 logical (kind=omp_logical_kind) omp_test_lock
340 integer (kind=omp_lock_kind) svar
341 end function omp_test_lock
343 subroutine omp_init_nest_lock(nvar) bind(c)
344 !DIR$ IF(__INTEL_COMPILER.GE.1400)
345 !DIR$ attributes known_intrinsic :: omp_init_nest_lock
348 integer (kind=omp_nest_lock_kind) nvar
349 end subroutine omp_init_nest_lock
351 subroutine omp_destroy_nest_lock(nvar) bind(c)
352 !DIR$ IF(__INTEL_COMPILER.GE.1400)
353 !DIR$ attributes known_intrinsic :: omp_destroy_nest_lock
356 integer (kind=omp_nest_lock_kind) nvar
357 end subroutine omp_destroy_nest_lock
359 subroutine omp_set_nest_lock(nvar) bind(c)
360 !DIR$ IF(__INTEL_COMPILER.GE.1400)
361 !DIR$ attributes known_intrinsic :: omp_set_nest_lock
364 integer (kind=omp_nest_lock_kind) nvar
365 end subroutine omp_set_nest_lock
367 subroutine omp_unset_nest_lock(nvar) bind(c)
368 !DIR$ IF(__INTEL_COMPILER.GE.1400)
369 !DIR$ attributes known_intrinsic :: omp_unset_nest_lock
372 integer (kind=omp_nest_lock_kind) nvar
373 end subroutine omp_unset_nest_lock
375 function omp_test_nest_lock(nvar) bind(c)
376 !DIR$ IF(__INTEL_COMPILER.GE.1400)
377 !DIR$ attributes known_intrinsic :: omp_test_nest_lock
380 integer (kind=omp_integer_kind) omp_test_nest_lock
381 integer (kind=omp_nest_lock_kind) nvar
382 end function omp_test_nest_lock
384 function omp_get_max_task_priority() bind(c)
386 integer (kind=omp_integer_kind) omp_get_max_task_priority
387 end function omp_get_max_task_priority
389 subroutine omp_set_default_allocator(svar) bind(c)
391 integer (kind=omp_allocator_kind), value :: svar
392 end subroutine omp_set_default_allocator
394 function omp_get_default_allocator() bind(c)
396 integer (kind=omp_allocator_kind) omp_get_default_allocator
397 end function omp_get_default_allocator
399 subroutine omp_set_affinity_format(format)
400 character (len=*) :: format
401 end subroutine omp_set_affinity_format
403 function omp_get_affinity_format(buffer)
405 character (len=*) :: buffer
406 integer (kind=kmp_size_t_kind) :: omp_get_affinity_format
407 end function omp_get_affinity_format
409 subroutine omp_display_affinity(format)
410 character (len=*) :: format
411 end subroutine omp_display_affinity
413 function omp_capture_affinity(buffer, format)
415 character (len=*) :: format
416 character (len=*) :: buffer
417 integer (kind=kmp_size_t_kind) :: omp_capture_affinity
418 end function omp_capture_affinity
421 ! *** kmp_* entry points
424 subroutine kmp_set_stacksize(size) bind(c)
426 integer (kind=omp_integer_kind), value :: size
427 end subroutine kmp_set_stacksize
429 subroutine kmp_set_stacksize_s(size) bind(c)
431 integer (kind=kmp_size_t_kind), value :: size
432 end subroutine kmp_set_stacksize_s
434 subroutine kmp_set_blocktime(msec) bind(c)
436 integer (kind=omp_integer_kind), value :: msec
437 end subroutine kmp_set_blocktime
439 subroutine kmp_set_library_serial() bind(c)
440 end subroutine kmp_set_library_serial
442 subroutine kmp_set_library_turnaround() bind(c)
443 end subroutine kmp_set_library_turnaround
445 subroutine kmp_set_library_throughput() bind(c)
446 end subroutine kmp_set_library_throughput
448 subroutine kmp_set_library(libnum) bind(c)
450 integer (kind=omp_integer_kind), value :: libnum
451 end subroutine kmp_set_library
453 subroutine kmp_set_defaults(string) bind(c)
454 use, intrinsic :: iso_c_binding
455 character (kind=c_char) :: string(*)
456 end subroutine kmp_set_defaults
458 function kmp_get_stacksize() bind(c)
460 integer (kind=omp_integer_kind) kmp_get_stacksize
461 end function kmp_get_stacksize
463 function kmp_get_stacksize_s() bind(c)
465 integer (kind=kmp_size_t_kind) kmp_get_stacksize_s
466 end function kmp_get_stacksize_s
468 function kmp_get_blocktime() bind(c)
470 integer (kind=omp_integer_kind) kmp_get_blocktime
471 end function kmp_get_blocktime
473 function kmp_get_library() bind(c)
475 integer (kind=omp_integer_kind) kmp_get_library
476 end function kmp_get_library
478 subroutine kmp_set_disp_num_buffers(num) bind(c)
480 integer (kind=omp_integer_kind), value :: num
481 end subroutine kmp_set_disp_num_buffers
483 function kmp_set_affinity(mask) bind(c)
485 integer (kind=omp_integer_kind) kmp_set_affinity
486 integer (kind=kmp_affinity_mask_kind) mask
487 end function kmp_set_affinity
489 function kmp_get_affinity(mask) bind(c)
491 integer (kind=omp_integer_kind) kmp_get_affinity
492 integer (kind=kmp_affinity_mask_kind) mask
493 end function kmp_get_affinity
495 function kmp_get_affinity_max_proc() bind(c)
497 integer (kind=omp_integer_kind) kmp_get_affinity_max_proc
498 end function kmp_get_affinity_max_proc
500 subroutine kmp_create_affinity_mask(mask) bind(c)
502 integer (kind=kmp_affinity_mask_kind) mask
503 end subroutine kmp_create_affinity_mask
505 subroutine kmp_destroy_affinity_mask(mask) bind(c)
507 integer (kind=kmp_affinity_mask_kind) mask
508 end subroutine kmp_destroy_affinity_mask
510 function kmp_set_affinity_mask_proc(proc, mask) bind(c)
512 integer (kind=omp_integer_kind) kmp_set_affinity_mask_proc
513 integer (kind=omp_integer_kind), value :: proc
514 integer (kind=kmp_affinity_mask_kind) mask
515 end function kmp_set_affinity_mask_proc
517 function kmp_unset_affinity_mask_proc(proc, mask) bind(c)
519 integer (kind=omp_integer_kind) kmp_unset_affinity_mask_proc
520 integer (kind=omp_integer_kind), value :: proc
521 integer (kind=kmp_affinity_mask_kind) mask
522 end function kmp_unset_affinity_mask_proc
524 function kmp_get_affinity_mask_proc(proc, mask) bind(c)
526 integer (kind=omp_integer_kind) kmp_get_affinity_mask_proc
527 integer (kind=omp_integer_kind), value :: proc
528 integer (kind=kmp_affinity_mask_kind) mask
529 end function kmp_get_affinity_mask_proc
531 function kmp_malloc(size) bind(c)
533 integer (kind=kmp_pointer_kind) kmp_malloc
534 integer (kind=kmp_size_t_kind), value :: size
535 end function kmp_malloc
537 function kmp_aligned_malloc(size, alignment) bind(c)
539 integer (kind=kmp_pointer_kind) kmp_aligned_malloc
540 integer (kind=kmp_size_t_kind), value :: size
541 integer (kind=kmp_size_t_kind), value :: alignment
542 end function kmp_aligned_malloc
544 function kmp_calloc(nelem, elsize) bind(c)
546 integer (kind=kmp_pointer_kind) kmp_calloc
547 integer (kind=kmp_size_t_kind), value :: nelem
548 integer (kind=kmp_size_t_kind), value :: elsize
549 end function kmp_calloc
551 function kmp_realloc(ptr, size) bind(c)
553 integer (kind=kmp_pointer_kind) kmp_realloc
554 integer (kind=kmp_pointer_kind), value :: ptr
555 integer (kind=kmp_size_t_kind), value :: size
556 end function kmp_realloc
558 subroutine kmp_free(ptr) bind(c)
560 integer (kind=kmp_pointer_kind), value :: ptr
561 end subroutine kmp_free
563 subroutine kmp_set_warnings_on() bind(c)
564 end subroutine kmp_set_warnings_on
566 subroutine kmp_set_warnings_off() bind(c)
567 end subroutine kmp_set_warnings_off
569 function kmp_get_cancellation_status(cancelkind) bind(c)
571 integer (kind=kmp_cancel_kind), value :: cancelkind
572 logical (kind=omp_logical_kind) kmp_get_cancellation_status
573 end function kmp_get_cancellation_status
575 subroutine omp_init_lock_with_hint(svar, hint) bind(c)
577 integer (kind=omp_lock_kind) svar
578 integer (kind=omp_lock_hint_kind), value :: hint
579 end subroutine omp_init_lock_with_hint
581 subroutine omp_init_nest_lock_with_hint(nvar, hint) bind(c)
583 integer (kind=omp_nest_lock_kind) nvar
584 integer (kind=omp_lock_hint_kind), value :: hint
585 end subroutine omp_init_nest_lock_with_hint
587 function omp_control_tool(command, modifier, arg) bind(c)
589 integer (kind=omp_integer_kind) omp_control_tool
590 integer (kind=omp_control_tool_kind), value :: command
591 integer (kind=omp_control_tool_kind), value :: modifier
592 integer (kind=kmp_pointer_kind), optional :: arg
593 end function omp_control_tool