1! include/40/omp_lib.f90.var
2
3!
4!//===----------------------------------------------------------------------===//
5!//
6!//                     The LLVM Compiler Infrastructure
7!//
8!// This file is dual licensed under the MIT and the University of Illinois Open
9!// Source Licenses. See LICENSE.txt for details.
10!//
11!//===----------------------------------------------------------------------===//
12!
13
14      module omp_lib_kinds
15
16        use, intrinsic :: iso_c_binding
17
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
31      end module omp_lib_kinds
32
33      module omp_lib
34
35        use omp_lib_kinds
36
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@' )
43
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
48
49
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
55
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
60
61        interface
62
63!         ***
64!         *** omp_* entry points
65!         ***
66
67          subroutine omp_set_num_threads(num_threads) bind(c)
68            use omp_lib_kinds
69            integer (kind=omp_integer_kind), value :: num_threads
70          end subroutine omp_set_num_threads
71
72          subroutine omp_set_dynamic(dynamic_threads) bind(c)
73            use omp_lib_kinds
74            logical (kind=omp_logical_kind), value :: dynamic_threads
75          end subroutine omp_set_dynamic
76
77          subroutine omp_set_nested(nested) bind(c)
78            use omp_lib_kinds
79            logical (kind=omp_logical_kind), value :: nested
80          end subroutine omp_set_nested
81
82          function omp_get_num_threads() bind(c)
83            use omp_lib_kinds
84            integer (kind=omp_integer_kind) omp_get_num_threads
85          end function omp_get_num_threads
86
87          function omp_get_max_threads() bind(c)
88            use omp_lib_kinds
89            integer (kind=omp_integer_kind) omp_get_max_threads
90          end function omp_get_max_threads
91
92          function omp_get_thread_num() bind(c)
93            use omp_lib_kinds
94            integer (kind=omp_integer_kind) omp_get_thread_num
95          end function omp_get_thread_num
96
97          function omp_get_num_procs() bind(c)
98            use omp_lib_kinds
99            integer (kind=omp_integer_kind) omp_get_num_procs
100          end function omp_get_num_procs
101
102          function omp_in_parallel() bind(c)
103            use omp_lib_kinds
104            logical (kind=omp_logical_kind) omp_in_parallel
105          end function omp_in_parallel
106
107          function omp_in_final() bind(c)
108            use omp_lib_kinds
109            logical (kind=omp_logical_kind) omp_in_final
110          end function omp_in_final
111
112          function omp_get_dynamic() bind(c)
113            use omp_lib_kinds
114            logical (kind=omp_logical_kind) omp_get_dynamic
115          end function omp_get_dynamic
116
117          function omp_get_nested() bind(c)
118            use omp_lib_kinds
119            logical (kind=omp_logical_kind) omp_get_nested
120          end function omp_get_nested
121
122          function omp_get_thread_limit() bind(c)
123            use omp_lib_kinds
124            integer (kind=omp_integer_kind) omp_get_thread_limit
125          end function omp_get_thread_limit
126
127          subroutine omp_set_max_active_levels(max_levels) bind(c)
128            use omp_lib_kinds
129            integer (kind=omp_integer_kind), value :: max_levels
130          end subroutine omp_set_max_active_levels
131
132          function omp_get_max_active_levels() bind(c)
133            use omp_lib_kinds
134            integer (kind=omp_integer_kind) omp_get_max_active_levels
135          end function omp_get_max_active_levels
136
137          function omp_get_level() bind(c)
138            use omp_lib_kinds
139            integer (kind=omp_integer_kind) omp_get_level
140          end function omp_get_level
141
142          function omp_get_active_level() bind(c)
143            use omp_lib_kinds
144            integer (kind=omp_integer_kind) omp_get_active_level
145          end function omp_get_active_level
146
147          function omp_get_ancestor_thread_num(level) bind(c)
148            use omp_lib_kinds
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
152
153          function omp_get_team_size(level) bind(c)
154            use omp_lib_kinds
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
158
159          subroutine omp_set_schedule(kind, chunk_size) bind(c)
160            use omp_lib_kinds
161            integer (kind=omp_sched_kind), value :: kind
162            integer (kind=omp_integer_kind), value :: chunk_size
163          end subroutine omp_set_schedule
164
165          subroutine omp_get_schedule(kind, chunk_size) bind(c)
166            use omp_lib_kinds
167            integer (kind=omp_sched_kind) kind
168            integer (kind=omp_integer_kind) chunk_size
169          end subroutine omp_get_schedule
170
171          function omp_get_proc_bind() bind(c)
172            use omp_lib_kinds
173            integer (kind=omp_proc_bind_kind) omp_get_proc_bind
174          end function omp_get_proc_bind
175
176          function omp_get_wtime() bind(c)
177            use omp_lib_kinds
178            real (kind=kmp_double_kind) omp_get_wtime
179          end function omp_get_wtime
180
181          function omp_get_wtick() bind(c)
182            use omp_lib_kinds
183            real (kind=kmp_double_kind) omp_get_wtick
184          end function omp_get_wtick
185
186          function omp_get_default_device() bind(c)
187            use omp_lib_kinds
188            integer (kind=omp_integer_kind) omp_get_default_device
189          end function omp_get_default_device
190
191          subroutine omp_set_default_device(device_num) bind(c)
192            use omp_lib_kinds
193            integer (kind=omp_integer_kind), value :: device_num
194          end subroutine omp_set_default_device
195
196          function omp_get_num_devices() bind(c)
197            use omp_lib_kinds
198            integer (kind=omp_integer_kind) omp_get_num_devices
199          end function omp_get_num_devices
200
201          function omp_get_num_teams() bind(c)
202            use omp_lib_kinds
203            integer (kind=omp_integer_kind) omp_get_num_teams
204          end function omp_get_num_teams
205
206          function omp_get_team_num() bind(c)
207            use omp_lib_kinds
208            integer (kind=omp_integer_kind) omp_get_team_num
209          end function omp_get_team_num
210
211          function omp_get_cancellation() bind(c)
212            use omp_lib_kinds
213            integer (kind=omp_integer_kind) omp_get_cancellation
214          end function omp_get_cancellation
215
216          function omp_is_initial_device() bind(c)
217            use omp_lib_kinds
218            logical (kind=omp_logical_kind) omp_is_initial_device
219          end function omp_is_initial_device
220
221          subroutine omp_init_lock(svar) bind(c)
222!DIR$ IF(__INTEL_COMPILER.GE.1400)
223!DIR$ attributes known_intrinsic :: omp_init_lock
224!DIR$ ENDIF
225            use omp_lib_kinds
226            integer (kind=omp_lock_kind) svar
227          end subroutine omp_init_lock
228
229          subroutine omp_destroy_lock(svar) bind(c)
230!DIR$ IF(__INTEL_COMPILER.GE.1400)
231!DIR$ attributes known_intrinsic :: omp_destroy_lock
232!DIR$ ENDIF
233            use omp_lib_kinds
234            integer (kind=omp_lock_kind) svar
235          end subroutine omp_destroy_lock
236
237          subroutine omp_set_lock(svar) bind(c)
238!DIR$ IF(__INTEL_COMPILER.GE.1400)
239!DIR$ attributes known_intrinsic :: omp_set_lock
240!DIR$ ENDIF
241            use omp_lib_kinds
242            integer (kind=omp_lock_kind) svar
243          end subroutine omp_set_lock
244
245          subroutine omp_unset_lock(svar) bind(c)
246!DIR$ IF(__INTEL_COMPILER.GE.1400)
247!DIR$ attributes known_intrinsic :: omp_unset_lock
248!DIR$ ENDIF
249            use omp_lib_kinds
250            integer (kind=omp_lock_kind) svar
251          end subroutine omp_unset_lock
252
253          function omp_test_lock(svar) bind(c)
254!DIR$ IF(__INTEL_COMPILER.GE.1400)
255!DIR$ attributes known_intrinsic :: omp_test_lock
256!DIR$ ENDIF
257            use omp_lib_kinds
258            logical (kind=omp_logical_kind) omp_test_lock
259            integer (kind=omp_lock_kind) svar
260          end function omp_test_lock
261
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
265!DIR$ ENDIF
266            use omp_lib_kinds
267            integer (kind=omp_nest_lock_kind) nvar
268          end subroutine omp_init_nest_lock
269
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
273!DIR$ ENDIF
274            use omp_lib_kinds
275            integer (kind=omp_nest_lock_kind) nvar
276          end subroutine omp_destroy_nest_lock
277
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
281!DIR$ ENDIF
282            use omp_lib_kinds
283            integer (kind=omp_nest_lock_kind) nvar
284          end subroutine omp_set_nest_lock
285
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
289!DIR$ ENDIF
290            use omp_lib_kinds
291            integer (kind=omp_nest_lock_kind) nvar
292          end subroutine omp_unset_nest_lock
293
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
297!DIR$ ENDIF
298            use omp_lib_kinds
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
302
303!         ***
304!         *** kmp_* entry points
305!         ***
306
307          subroutine kmp_set_stacksize(size) bind(c)
308            use omp_lib_kinds
309            integer (kind=omp_integer_kind), value :: size
310          end subroutine kmp_set_stacksize
311
312          subroutine kmp_set_stacksize_s(size) bind(c)
313            use omp_lib_kinds
314            integer (kind=kmp_size_t_kind), value :: size
315          end subroutine kmp_set_stacksize_s
316
317          subroutine kmp_set_blocktime(msec) bind(c)
318            use omp_lib_kinds
319            integer (kind=omp_integer_kind), value :: msec
320          end subroutine kmp_set_blocktime
321
322          subroutine kmp_set_library_serial() bind(c)
323          end subroutine kmp_set_library_serial
324
325          subroutine kmp_set_library_turnaround() bind(c)
326          end subroutine kmp_set_library_turnaround
327
328          subroutine kmp_set_library_throughput() bind(c)
329          end subroutine kmp_set_library_throughput
330
331          subroutine kmp_set_library(libnum) bind(c)
332            use omp_lib_kinds
333            integer (kind=omp_integer_kind), value :: libnum
334          end subroutine kmp_set_library
335
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
340
341          function kmp_get_stacksize() bind(c)
342            use omp_lib_kinds
343            integer (kind=omp_integer_kind) kmp_get_stacksize
344          end function kmp_get_stacksize
345
346          function kmp_get_stacksize_s() bind(c)
347            use omp_lib_kinds
348            integer (kind=kmp_size_t_kind) kmp_get_stacksize_s
349          end function kmp_get_stacksize_s
350
351          function kmp_get_blocktime() bind(c)
352            use omp_lib_kinds
353            integer (kind=omp_integer_kind) kmp_get_blocktime
354          end function kmp_get_blocktime
355
356          function kmp_get_library() bind(c)
357            use omp_lib_kinds
358            integer (kind=omp_integer_kind) kmp_get_library
359          end function kmp_get_library
360
361          function kmp_set_affinity(mask) bind(c)
362            use omp_lib_kinds
363            integer (kind=omp_integer_kind) kmp_set_affinity
364            integer (kind=kmp_affinity_mask_kind) mask
365          end function kmp_set_affinity
366
367          function kmp_get_affinity(mask) bind(c)
368            use omp_lib_kinds
369            integer (kind=omp_integer_kind) kmp_get_affinity
370            integer (kind=kmp_affinity_mask_kind) mask
371          end function kmp_get_affinity
372
373          function kmp_get_affinity_max_proc() bind(c)
374            use omp_lib_kinds
375            integer (kind=omp_integer_kind) kmp_get_affinity_max_proc
376          end function kmp_get_affinity_max_proc
377
378          subroutine kmp_create_affinity_mask(mask) bind(c)
379            use omp_lib_kinds
380            integer (kind=kmp_affinity_mask_kind) mask
381          end subroutine kmp_create_affinity_mask
382
383          subroutine kmp_destroy_affinity_mask(mask) bind(c)
384            use omp_lib_kinds
385            integer (kind=kmp_affinity_mask_kind) mask
386          end subroutine kmp_destroy_affinity_mask
387
388          function kmp_set_affinity_mask_proc(proc, mask) bind(c)
389            use omp_lib_kinds
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
394
395          function kmp_unset_affinity_mask_proc(proc, mask) bind(c)
396            use omp_lib_kinds
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
401
402          function kmp_get_affinity_mask_proc(proc, mask) bind(c)
403            use omp_lib_kinds
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
408
409          function kmp_malloc(size) bind(c)
410            use omp_lib_kinds
411            integer (kind=kmp_pointer_kind) kmp_malloc
412            integer (kind=kmp_size_t_kind), value :: size
413          end function kmp_malloc
414
415          function kmp_aligned_malloc(size, alignment) bind(c)
416            use omp_lib_kinds
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
421
422          function kmp_calloc(nelem, elsize) bind(c)
423            use omp_lib_kinds
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
428
429          function kmp_realloc(ptr, size) bind(c)
430            use omp_lib_kinds
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
435
436          subroutine kmp_free(ptr) bind(c)
437            use omp_lib_kinds
438            integer (kind=kmp_pointer_kind), value :: ptr
439          end subroutine kmp_free
440
441          subroutine kmp_set_warnings_on() bind(c)
442          end subroutine kmp_set_warnings_on
443
444          subroutine kmp_set_warnings_off() bind(c)
445          end subroutine kmp_set_warnings_off
446
447          function kmp_get_cancellation_status(cancelkind) bind(c)
448            use omp_lib_kinds
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
452
453        end interface
454
455      end module omp_lib
456