1 ! include/40/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
31 end module omp_lib_kinds
37 integer (kind=omp_integer_kind), parameter :: openmp_version = @LIBOMP_OMP_YEAR_MONTH@
38 integer (kind=omp_integer_kind), parameter :: kmp_version_major = @LIBOMP_VERSION_MAJOR@
39 integer (kind=omp_integer_kind), parameter :: kmp_version_minor = @LIBOMP_VERSION_MINOR@
40 integer (kind=omp_integer_kind), parameter :: kmp_version_build = @LIBOMP_VERSION_BUILD@
41 character(*) kmp_build_date
42 parameter( kmp_build_date = '@LIBOMP_BUILD_DATE@' )
44 integer(kind=omp_sched_kind), parameter :: omp_sched_static = 1
45 integer(kind=omp_sched_kind), parameter :: omp_sched_dynamic = 2
46 integer(kind=omp_sched_kind), parameter :: omp_sched_guided = 3
47 integer(kind=omp_sched_kind), parameter :: omp_sched_auto = 4
50 integer (kind=omp_proc_bind_kind), parameter :: omp_proc_bind_false = 0
51 integer (kind=omp_proc_bind_kind), parameter :: omp_proc_bind_true = 1
52 integer (kind=omp_proc_bind_kind), parameter :: omp_proc_bind_master = 2
53 integer (kind=omp_proc_bind_kind), parameter :: omp_proc_bind_close = 3
54 integer (kind=omp_proc_bind_kind), parameter :: omp_proc_bind_spread = 4
56 integer (kind=kmp_cancel_kind), parameter :: kmp_cancel_parallel = 1
57 integer (kind=kmp_cancel_kind), parameter :: kmp_cancel_loop = 2
58 integer (kind=kmp_cancel_kind), parameter :: kmp_cancel_sections = 3
59 integer (kind=kmp_cancel_kind), parameter :: kmp_cancel_taskgroup = 4
64 ! *** omp_* entry points
67 subroutine omp_set_num_threads(num_threads) bind(c)
69 integer (kind=omp_integer_kind), value :: num_threads
70 end subroutine omp_set_num_threads
72 subroutine omp_set_dynamic(dynamic_threads) bind(c)
74 logical (kind=omp_logical_kind), value :: dynamic_threads
75 end subroutine omp_set_dynamic
77 subroutine omp_set_nested(nested) bind(c)
79 logical (kind=omp_logical_kind), value :: nested
80 end subroutine omp_set_nested
82 function omp_get_num_threads() bind(c)
84 integer (kind=omp_integer_kind) omp_get_num_threads
85 end function omp_get_num_threads
87 function omp_get_max_threads() bind(c)
89 integer (kind=omp_integer_kind) omp_get_max_threads
90 end function omp_get_max_threads
92 function omp_get_thread_num() bind(c)
94 integer (kind=omp_integer_kind) omp_get_thread_num
95 end function omp_get_thread_num
97 function omp_get_num_procs() bind(c)
99 integer (kind=omp_integer_kind) omp_get_num_procs
100 end function omp_get_num_procs
102 function omp_in_parallel() bind(c)
104 logical (kind=omp_logical_kind) omp_in_parallel
105 end function omp_in_parallel
107 function omp_in_final() bind(c)
109 logical (kind=omp_logical_kind) omp_in_final
110 end function omp_in_final
112 function omp_get_dynamic() bind(c)
114 logical (kind=omp_logical_kind) omp_get_dynamic
115 end function omp_get_dynamic
117 function omp_get_nested() bind(c)
119 logical (kind=omp_logical_kind) omp_get_nested
120 end function omp_get_nested
122 function omp_get_thread_limit() bind(c)
124 integer (kind=omp_integer_kind) omp_get_thread_limit
125 end function omp_get_thread_limit
127 subroutine omp_set_max_active_levels(max_levels) bind(c)
129 integer (kind=omp_integer_kind), value :: max_levels
130 end subroutine omp_set_max_active_levels
132 function omp_get_max_active_levels() bind(c)
134 integer (kind=omp_integer_kind) omp_get_max_active_levels
135 end function omp_get_max_active_levels
137 function omp_get_level() bind(c)
139 integer (kind=omp_integer_kind) omp_get_level
140 end function omp_get_level
142 function omp_get_active_level() bind(c)
144 integer (kind=omp_integer_kind) omp_get_active_level
145 end function omp_get_active_level
147 function omp_get_ancestor_thread_num(level) bind(c)
149 integer (kind=omp_integer_kind) omp_get_ancestor_thread_num
150 integer (kind=omp_integer_kind), value :: level
151 end function omp_get_ancestor_thread_num
153 function omp_get_team_size(level) bind(c)
155 integer (kind=omp_integer_kind) omp_get_team_size
156 integer (kind=omp_integer_kind), value :: level
157 end function omp_get_team_size
159 subroutine omp_set_schedule(kind, chunk_size) bind(c)
161 integer (kind=omp_sched_kind), value :: kind
162 integer (kind=omp_integer_kind), value :: chunk_size
163 end subroutine omp_set_schedule
165 subroutine omp_get_schedule(kind, chunk_size) bind(c)
167 integer (kind=omp_sched_kind) kind
168 integer (kind=omp_integer_kind) chunk_size
169 end subroutine omp_get_schedule
171 function omp_get_proc_bind() bind(c)
173 integer (kind=omp_proc_bind_kind) omp_get_proc_bind
174 end function omp_get_proc_bind
176 function omp_get_wtime() bind(c)
178 real (kind=kmp_double_kind) omp_get_wtime
179 end function omp_get_wtime
181 function omp_get_wtick() bind(c)
183 real (kind=kmp_double_kind) omp_get_wtick
184 end function omp_get_wtick
186 function omp_get_default_device() bind(c)
188 integer (kind=omp_integer_kind) omp_get_default_device
189 end function omp_get_default_device
191 subroutine omp_set_default_device(device_num) bind(c)
193 integer (kind=omp_integer_kind), value :: device_num
194 end subroutine omp_set_default_device
196 function omp_get_num_devices() bind(c)
198 integer (kind=omp_integer_kind) omp_get_num_devices
199 end function omp_get_num_devices
201 function omp_get_num_teams() bind(c)
203 integer (kind=omp_integer_kind) omp_get_num_teams
204 end function omp_get_num_teams
206 function omp_get_team_num() bind(c)
208 integer (kind=omp_integer_kind) omp_get_team_num
209 end function omp_get_team_num
211 function omp_get_cancellation() bind(c)
213 integer (kind=omp_integer_kind) omp_get_cancellation
214 end function omp_get_cancellation
216 function omp_is_initial_device() bind(c)
218 logical (kind=omp_logical_kind) omp_is_initial_device
219 end function omp_is_initial_device
221 subroutine omp_init_lock(svar) bind(c)
222 !DIR$ IF(__INTEL_COMPILER.GE.1400)
223 !DIR$ attributes known_intrinsic :: omp_init_lock
226 integer (kind=omp_lock_kind) svar
227 end subroutine omp_init_lock
229 subroutine omp_destroy_lock(svar) bind(c)
230 !DIR$ IF(__INTEL_COMPILER.GE.1400)
231 !DIR$ attributes known_intrinsic :: omp_destroy_lock
234 integer (kind=omp_lock_kind) svar
235 end subroutine omp_destroy_lock
237 subroutine omp_set_lock(svar) bind(c)
238 !DIR$ IF(__INTEL_COMPILER.GE.1400)
239 !DIR$ attributes known_intrinsic :: omp_set_lock
242 integer (kind=omp_lock_kind) svar
243 end subroutine omp_set_lock
245 subroutine omp_unset_lock(svar) bind(c)
246 !DIR$ IF(__INTEL_COMPILER.GE.1400)
247 !DIR$ attributes known_intrinsic :: omp_unset_lock
250 integer (kind=omp_lock_kind) svar
251 end subroutine omp_unset_lock
253 function omp_test_lock(svar) bind(c)
254 !DIR$ IF(__INTEL_COMPILER.GE.1400)
255 !DIR$ attributes known_intrinsic :: omp_test_lock
258 logical (kind=omp_logical_kind) omp_test_lock
259 integer (kind=omp_lock_kind) svar
260 end function omp_test_lock
262 subroutine omp_init_nest_lock(nvar) bind(c)
263 !DIR$ IF(__INTEL_COMPILER.GE.1400)
264 !DIR$ attributes known_intrinsic :: omp_init_nest_lock
267 integer (kind=omp_nest_lock_kind) nvar
268 end subroutine omp_init_nest_lock
270 subroutine omp_destroy_nest_lock(nvar) bind(c)
271 !DIR$ IF(__INTEL_COMPILER.GE.1400)
272 !DIR$ attributes known_intrinsic :: omp_destroy_nest_lock
275 integer (kind=omp_nest_lock_kind) nvar
276 end subroutine omp_destroy_nest_lock
278 subroutine omp_set_nest_lock(nvar) bind(c)
279 !DIR$ IF(__INTEL_COMPILER.GE.1400)
280 !DIR$ attributes known_intrinsic :: omp_set_nest_lock
283 integer (kind=omp_nest_lock_kind) nvar
284 end subroutine omp_set_nest_lock
286 subroutine omp_unset_nest_lock(nvar) bind(c)
287 !DIR$ IF(__INTEL_COMPILER.GE.1400)
288 !DIR$ attributes known_intrinsic :: omp_unset_nest_lock
291 integer (kind=omp_nest_lock_kind) nvar
292 end subroutine omp_unset_nest_lock
294 function omp_test_nest_lock(nvar) bind(c)
295 !DIR$ IF(__INTEL_COMPILER.GE.1400)
296 !DIR$ attributes known_intrinsic :: omp_test_nest_lock
299 integer (kind=omp_integer_kind) omp_test_nest_lock
300 integer (kind=omp_nest_lock_kind) nvar
301 end function omp_test_nest_lock
304 ! *** kmp_* entry points
307 subroutine kmp_set_stacksize(size) bind(c)
309 integer (kind=omp_integer_kind), value :: size
310 end subroutine kmp_set_stacksize
312 subroutine kmp_set_stacksize_s(size) bind(c)
314 integer (kind=kmp_size_t_kind), value :: size
315 end subroutine kmp_set_stacksize_s
317 subroutine kmp_set_blocktime(msec) bind(c)
319 integer (kind=omp_integer_kind), value :: msec
320 end subroutine kmp_set_blocktime
322 subroutine kmp_set_library_serial() bind(c)
323 end subroutine kmp_set_library_serial
325 subroutine kmp_set_library_turnaround() bind(c)
326 end subroutine kmp_set_library_turnaround
328 subroutine kmp_set_library_throughput() bind(c)
329 end subroutine kmp_set_library_throughput
331 subroutine kmp_set_library(libnum) bind(c)
333 integer (kind=omp_integer_kind), value :: libnum
334 end subroutine kmp_set_library
336 subroutine kmp_set_defaults(string) bind(c)
337 use, intrinsic :: iso_c_binding
338 character (kind=c_char) :: string(*)
339 end subroutine kmp_set_defaults
341 function kmp_get_stacksize() bind(c)
343 integer (kind=omp_integer_kind) kmp_get_stacksize
344 end function kmp_get_stacksize
346 function kmp_get_stacksize_s() bind(c)
348 integer (kind=kmp_size_t_kind) kmp_get_stacksize_s
349 end function kmp_get_stacksize_s
351 function kmp_get_blocktime() bind(c)
353 integer (kind=omp_integer_kind) kmp_get_blocktime
354 end function kmp_get_blocktime
356 function kmp_get_library() bind(c)
358 integer (kind=omp_integer_kind) kmp_get_library
359 end function kmp_get_library
361 function kmp_set_affinity(mask) bind(c)
363 integer (kind=omp_integer_kind) kmp_set_affinity
364 integer (kind=kmp_affinity_mask_kind) mask
365 end function kmp_set_affinity
367 function kmp_get_affinity(mask) bind(c)
369 integer (kind=omp_integer_kind) kmp_get_affinity
370 integer (kind=kmp_affinity_mask_kind) mask
371 end function kmp_get_affinity
373 function kmp_get_affinity_max_proc() bind(c)
375 integer (kind=omp_integer_kind) kmp_get_affinity_max_proc
376 end function kmp_get_affinity_max_proc
378 subroutine kmp_create_affinity_mask(mask) bind(c)
380 integer (kind=kmp_affinity_mask_kind) mask
381 end subroutine kmp_create_affinity_mask
383 subroutine kmp_destroy_affinity_mask(mask) bind(c)
385 integer (kind=kmp_affinity_mask_kind) mask
386 end subroutine kmp_destroy_affinity_mask
388 function kmp_set_affinity_mask_proc(proc, mask) bind(c)
390 integer (kind=omp_integer_kind) kmp_set_affinity_mask_proc
391 integer (kind=omp_integer_kind), value :: proc
392 integer (kind=kmp_affinity_mask_kind) mask
393 end function kmp_set_affinity_mask_proc
395 function kmp_unset_affinity_mask_proc(proc, mask) bind(c)
397 integer (kind=omp_integer_kind) kmp_unset_affinity_mask_proc
398 integer (kind=omp_integer_kind), value :: proc
399 integer (kind=kmp_affinity_mask_kind) mask
400 end function kmp_unset_affinity_mask_proc
402 function kmp_get_affinity_mask_proc(proc, mask) bind(c)
404 integer (kind=omp_integer_kind) kmp_get_affinity_mask_proc
405 integer (kind=omp_integer_kind), value :: proc
406 integer (kind=kmp_affinity_mask_kind) mask
407 end function kmp_get_affinity_mask_proc
409 function kmp_malloc(size) bind(c)
411 integer (kind=kmp_pointer_kind) kmp_malloc
412 integer (kind=kmp_size_t_kind), value :: size
413 end function kmp_malloc
415 function kmp_aligned_malloc(size, alignment) bind(c)
417 integer (kind=kmp_pointer_kind) kmp_aligned_malloc
418 integer (kind=kmp_size_t_kind), value :: size
419 integer (kind=kmp_size_t_kind), value :: alignment
420 end function kmp_aligned_malloc
422 function kmp_calloc(nelem, elsize) bind(c)
424 integer (kind=kmp_pointer_kind) kmp_calloc
425 integer (kind=kmp_size_t_kind), value :: nelem
426 integer (kind=kmp_size_t_kind), value :: elsize
427 end function kmp_calloc
429 function kmp_realloc(ptr, size) bind(c)
431 integer (kind=kmp_pointer_kind) kmp_realloc
432 integer (kind=kmp_pointer_kind), value :: ptr
433 integer (kind=kmp_size_t_kind), value :: size
434 end function kmp_realloc
436 subroutine kmp_free(ptr) bind(c)
438 integer (kind=kmp_pointer_kind), value :: ptr
439 end subroutine kmp_free
441 subroutine kmp_set_warnings_on() bind(c)
442 end subroutine kmp_set_warnings_on
444 subroutine kmp_set_warnings_off() bind(c)
445 end subroutine kmp_set_warnings_off
447 function kmp_get_cancellation_status(cancelkind) bind(c)
449 integer (kind=kmp_cancel_kind), value :: cancelkind
450 logical (kind=omp_logical_kind) kmp_get_cancellation_status
451 end function kmp_get_cancellation_status