aboutsummaryrefslogtreecommitdiff
path: root/libgomp/omp_lib.h.in
blob: 5fd2274f84498dfb66e199892af1d1cd04a29151 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
!  Copyright (C) 2005-2023 Free Software Foundation, Inc.
!  Contributed by Jakub Jelinek <jakub@redhat.com>.

!  This file is part of the GNU Offloading and Multi Processing Library
!  (libgomp).

!  Libgomp is free software; you can redistribute it and/or modify it
!  under the terms of the GNU General Public License as published by
!  the Free Software Foundation; either version 3, or (at your option)
!  any later version.

!  Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY
!  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
!  FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
!  more details.

!  Under Section 7 of GPL version 3, you are granted additional
!  permissions described in the GCC Runtime Library Exception, version
!  3.1, as published by the Free Software Foundation.

!  You should have received a copy of the GNU General Public License and
!  a copy of the GCC Runtime Library Exception along with this program;
!  see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
!  <http://www.gnu.org/licenses/>.

      integer omp_lock_kind, omp_nest_lock_kind, openmp_version
      parameter (omp_lock_kind = @OMP_LOCK_KIND@)
      parameter (omp_nest_lock_kind = @OMP_NEST_LOCK_KIND@)
      integer omp_depend_kind
      parameter (omp_depend_kind = @OMP_DEPEND_KIND@)
      integer omp_sched_kind
      parameter (omp_sched_kind = 4)
      integer (omp_sched_kind) omp_sched_static, omp_sched_dynamic
      integer (omp_sched_kind) omp_sched_guided, omp_sched_auto
      parameter (omp_sched_static = 1)
      parameter (omp_sched_dynamic = 2)
      parameter (omp_sched_guided = 3)
      parameter (omp_sched_auto = 4)
      integer omp_proc_bind_kind
      parameter (omp_proc_bind_kind = 4)
      integer (omp_proc_bind_kind) omp_proc_bind_false
      integer (omp_proc_bind_kind) omp_proc_bind_true
      integer (omp_proc_bind_kind) omp_proc_bind_primary
      integer (omp_proc_bind_kind) omp_proc_bind_master
      integer (omp_proc_bind_kind) omp_proc_bind_close
      integer (omp_proc_bind_kind) omp_proc_bind_spread
      parameter (omp_proc_bind_false = 0)
      parameter (omp_proc_bind_true = 1)
      parameter (omp_proc_bind_primary = 2)
      parameter (omp_proc_bind_master = 2)
      parameter (omp_proc_bind_close = 3)
      parameter (omp_proc_bind_spread = 4)
      integer omp_sync_hint_kind
      integer omp_lock_hint_kind
      parameter (omp_sync_hint_kind = 4)
      parameter (omp_lock_hint_kind = omp_sync_hint_kind)
      integer (omp_sync_hint_kind) omp_sync_hint_none
      integer (omp_lock_hint_kind) omp_lock_hint_none
      integer (omp_sync_hint_kind) omp_sync_hint_uncontended
      integer (omp_lock_hint_kind) omp_lock_hint_uncontended
      integer (omp_sync_hint_kind) omp_sync_hint_contended
      integer (omp_sync_hint_kind) omp_lock_hint_contended
      integer (omp_lock_hint_kind) omp_sync_hint_nonspeculative
      integer (omp_lock_hint_kind) omp_lock_hint_nonspeculative
      integer (omp_sync_hint_kind) omp_sync_hint_speculative
      integer (omp_lock_hint_kind) omp_lock_hint_speculative
      parameter (omp_sync_hint_none = 0)
      parameter (omp_lock_hint_none = 0)
      parameter (omp_sync_hint_uncontended = 1)
      parameter (omp_lock_hint_uncontended = 1)
      parameter (omp_sync_hint_contended = 2)
      parameter (omp_lock_hint_contended = 2)
      parameter (omp_sync_hint_nonspeculative = 4)
      parameter (omp_lock_hint_nonspeculative = 4)
      parameter (omp_sync_hint_speculative = 8)
      parameter (omp_lock_hint_speculative = 8)
      parameter (openmp_version = 201511)
      integer omp_pause_resource_kind
      parameter (omp_pause_resource_kind = 4)
      integer (omp_pause_resource_kind) omp_pause_soft
      integer (omp_pause_resource_kind) omp_pause_hard
      parameter (omp_pause_soft = 1)
      parameter (omp_pause_hard = 2)

      integer omp_allocator_handle_kind, omp_alloctrait_key_kind
      integer omp_alloctrait_val_kind, omp_memspace_handle_kind
      integer omp_event_handle_kind
      parameter (omp_allocator_handle_kind = @INTPTR_T_KIND@)
      parameter (omp_alloctrait_key_kind = 4)
      parameter (omp_alloctrait_val_kind = @INTPTR_T_KIND@)
      parameter (omp_memspace_handle_kind = @INTPTR_T_KIND@)
      parameter (omp_event_handle_kind = @INTPTR_T_KIND@)
      integer (omp_alloctrait_key_kind) omp_atk_sync_hint
      integer (omp_alloctrait_key_kind) omp_atk_alignment
      integer (omp_alloctrait_key_kind) omp_atk_access
      integer (omp_alloctrait_key_kind) omp_atk_pool_size
      integer (omp_alloctrait_key_kind) omp_atk_fallback
      integer (omp_alloctrait_key_kind) omp_atk_fb_data
      integer (omp_alloctrait_key_kind) omp_atk_pinned
      integer (omp_alloctrait_key_kind) omp_atk_partition
      parameter (omp_atk_sync_hint = 1)
      parameter (omp_atk_alignment = 2)
      parameter (omp_atk_access = 3)
      parameter (omp_atk_pool_size = 4)
      parameter (omp_atk_fallback = 5)
      parameter (omp_atk_fb_data = 6)
      parameter (omp_atk_pinned = 7)
      parameter (omp_atk_partition = 8)
      integer (omp_alloctrait_val_kind) omp_atv_false
      integer (omp_alloctrait_val_kind) omp_atv_true
      integer (omp_alloctrait_val_kind) omp_atv_default
      integer (omp_alloctrait_val_kind) omp_atv_contended
      integer (omp_alloctrait_val_kind) omp_atv_uncontended
      integer (omp_alloctrait_val_kind) omp_atv_serialized
      integer (omp_alloctrait_val_kind) omp_atv_sequential
      integer (omp_alloctrait_val_kind) omp_atv_private
      integer (omp_alloctrait_val_kind) omp_atv_all
      integer (omp_alloctrait_val_kind) omp_atv_thread
      integer (omp_alloctrait_val_kind) omp_atv_pteam
      integer (omp_alloctrait_val_kind) omp_atv_cgroup
      integer (omp_alloctrait_val_kind) omp_atv_default_mem_fb
      integer (omp_alloctrait_val_kind) omp_atv_null_fb
      integer (omp_alloctrait_val_kind) omp_atv_abort_fb
      integer (omp_alloctrait_val_kind) omp_atv_allocator_fb
      integer (omp_alloctrait_val_kind) omp_atv_environment
      integer (omp_alloctrait_val_kind) omp_atv_nearest
      integer (omp_alloctrait_val_kind) omp_atv_blocked
      integer (omp_alloctrait_val_kind) omp_atv_interleaved
      parameter (omp_atv_default = -1)
      parameter (omp_atv_false = 0)
      parameter (omp_atv_true = 1)
      parameter (omp_atv_contended = 3)
      parameter (omp_atv_uncontended = 4)
      parameter (omp_atv_serialized = 5)
      parameter (omp_atv_sequential = omp_atv_serialized)
      parameter (omp_atv_private = 6)
      parameter (omp_atv_all = 7)
      parameter (omp_atv_thread = 8)
      parameter (omp_atv_pteam = 9)
      parameter (omp_atv_cgroup = 10)
      parameter (omp_atv_default_mem_fb = 11)
      parameter (omp_atv_null_fb = 12)
      parameter (omp_atv_abort_fb = 13)
      parameter (omp_atv_allocator_fb = 14)
      parameter (omp_atv_environment = 15)
      parameter (omp_atv_nearest = 16)
      parameter (omp_atv_blocked = 17)
      parameter (omp_atv_interleaved = 18)
      integer (omp_allocator_handle_kind) omp_null_allocator
      integer (omp_allocator_handle_kind) omp_default_mem_alloc
      integer (omp_allocator_handle_kind) omp_large_cap_mem_alloc
      integer (omp_allocator_handle_kind) omp_const_mem_alloc
      integer (omp_allocator_handle_kind) omp_high_bw_mem_alloc
      integer (omp_allocator_handle_kind) omp_low_lat_mem_alloc
      integer (omp_allocator_handle_kind) omp_cgroup_mem_alloc
      integer (omp_allocator_handle_kind) omp_pteam_mem_alloc
      integer (omp_allocator_handle_kind) omp_thread_mem_alloc
      parameter (omp_null_allocator = 0)
      parameter (omp_default_mem_alloc = 1)
      parameter (omp_large_cap_mem_alloc = 2)
      parameter (omp_const_mem_alloc = 3)
      parameter (omp_high_bw_mem_alloc = 4)
      parameter (omp_low_lat_mem_alloc = 5)
      parameter (omp_cgroup_mem_alloc = 6)
      parameter (omp_pteam_mem_alloc = 7)
      parameter (omp_thread_mem_alloc = 8)
      integer (omp_memspace_handle_kind) omp_default_mem_space
      integer (omp_memspace_handle_kind) omp_large_cap_mem_space
      integer (omp_memspace_handle_kind) omp_const_mem_space
      integer (omp_memspace_handle_kind) omp_high_bw_mem_space
      integer (omp_memspace_handle_kind) omp_low_lat_mem_space
      parameter (omp_default_mem_space = 0)
      parameter (omp_large_cap_mem_space = 1)
      parameter (omp_const_mem_space = 2)
      parameter (omp_high_bw_mem_space = 3)
      parameter (omp_low_lat_mem_space = 4)
      integer omp_initial_device, omp_invalid_device
      parameter (omp_initial_device = -1)
      parameter (omp_invalid_device = -4)

      type omp_alloctrait
        integer (omp_alloctrait_key_kind) key
        integer (omp_alloctrait_val_kind) value
      end type omp_alloctrait

      external omp_init_lock, omp_init_nest_lock
      external omp_init_lock_with_hint
      external omp_init_nest_lock_with_hint
      external omp_destroy_lock, omp_destroy_nest_lock
      external omp_set_lock, omp_set_nest_lock
      external omp_unset_lock, omp_unset_nest_lock
      external omp_set_dynamic, omp_set_nested
      external omp_set_num_threads

      external omp_get_dynamic, omp_get_nested
      logical(4) omp_get_dynamic, omp_get_nested
      external omp_test_lock, omp_in_parallel
      logical(4) omp_test_lock, omp_in_parallel

      external omp_get_max_threads, omp_get_num_procs
      integer(4) omp_get_max_threads, omp_get_num_procs
      external omp_get_num_threads, omp_get_thread_num
      integer(4) omp_get_num_threads, omp_get_thread_num
      external omp_test_nest_lock
      integer(4) omp_test_nest_lock

      external omp_get_wtick, omp_get_wtime
      double precision omp_get_wtick, omp_get_wtime

      external omp_set_schedule, omp_get_schedule
      external omp_get_thread_limit, omp_set_max_active_levels
      external omp_get_max_active_levels, omp_get_level
      external omp_get_ancestor_thread_num, omp_get_team_size
      external omp_get_active_level
      external omp_get_supported_active_levels
      integer(4) omp_get_thread_limit, omp_get_max_active_levels
      integer(4) omp_get_level, omp_get_ancestor_thread_num
      integer(4) omp_get_team_size, omp_get_active_level
      integer(4) omp_get_supported_active_levels

      external omp_in_final
      logical(4) omp_in_final
      external omp_in_explicit_task
      logical(4) omp_in_explicit_task

      external omp_get_cancellation
      logical(4) omp_get_cancellation

      external omp_get_proc_bind
      integer(omp_proc_bind_kind) omp_get_proc_bind

      integer(4) omp_get_num_places
      external omp_get_num_places
      integer(4) omp_get_place_num_procs
      external omp_get_place_num_procs
      external omp_get_place_proc_ids
      integer(4) omp_get_place_num
      external omp_get_place_num
      integer(4) omp_get_partition_num_places
      external omp_get_partition_num_places
      external omp_get_partition_place_nums

      external omp_set_default_device, omp_get_default_device
      external omp_get_num_devices, omp_get_num_teams
      external omp_get_team_num
      integer(4) omp_get_default_device, omp_get_num_devices
      integer(4) omp_get_num_teams, omp_get_team_num

      external omp_is_initial_device
      logical(4) omp_is_initial_device
      external omp_get_initial_device
      integer(4) omp_get_initial_device

      external omp_get_device_num
      integer(4) omp_get_device_num

      external omp_get_max_task_priority
      integer(4) omp_get_max_task_priority

      external omp_set_num_teams, omp_set_teams_thread_limit
      external omp_get_max_teams, omp_get_teams_thread_limit
      integer(4) omp_get_max_teams, omp_get_teams_thread_limit

      external omp_fulfill_event

      external omp_set_affinity_format, omp_get_affinity_format
      external omp_display_affinity, omp_capture_affinity
      integer(4) omp_get_affinity_format
      integer(4) omp_capture_affinity

      external omp_pause_resource, omp_pause_resource_all
      integer(4) omp_pause_resource
      integer(4) omp_pause_resource_all

      external omp_init_allocator
      integer (omp_allocator_handle_kind) omp_init_allocator
      external omp_destroy_allocator
      external omp_set_default_allocator
      external omp_get_default_allocator
      integer (omp_allocator_handle_kind) omp_get_default_allocator

      external omp_display_env

      interface
        function omp_alloc (size, allocator) bind(c)
          use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t
          use, intrinsic :: omp_lib_kinds
          type(c_ptr) :: omp_alloc
          integer(c_size_t), value :: size
          integer(omp_allocator_handle_kind), value :: allocator
        end function omp_alloc
      end interface

      interface
        function omp_aligned_alloc (alignment, size, allocator) bind(c)
          use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t
          use, intrinsic :: omp_lib_kinds
          type(c_ptr) :: omp_aligned_alloc
          integer(c_size_t), value :: alignment, size
          integer(omp_allocator_handle_kind), value :: allocator
        end function omp_aligned_alloc
      end interface

      interface
        subroutine omp_free(ptr, allocator) bind(c)
          use, intrinsic :: iso_c_binding, only : c_ptr
          use, intrinsic :: omp_lib_kinds
          type(c_ptr), value :: ptr
          integer(omp_allocator_handle_kind), value :: allocator
        end subroutine omp_free
      end interface

      interface
        function omp_calloc (nmemb, size, allocator) bind(c)
          use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t
          use, intrinsic :: omp_lib_kinds
          type(c_ptr) :: omp_calloc
          integer(c_size_t), value :: nmemb, size
          integer(omp_allocator_handle_kind), value :: allocator
        end function omp_calloc
      end interface

      interface
        function omp_aligned_calloc (alignment, nmemb, size, allocator)   &
     &      bind(c)
          use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t
          use, intrinsic :: omp_lib_kinds
          type(c_ptr) :: omp_aligned_calloc
          integer(c_size_t), value :: alignment, nmemb, size
          integer(omp_allocator_handle_kind), value :: allocator
        end function omp_aligned_calloc
      end interface

      interface
        function omp_realloc (ptr, size, allocator, free_allocator)      &
     &      bind(c)
          use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t
          use, intrinsic :: omp_lib_kinds
          type(c_ptr) :: omp_realloc
          type(c_ptr), value :: ptr
          integer(c_size_t), value :: size
          integer(omp_allocator_handle_kind), value :: allocator
          integer(omp_allocator_handle_kind), value :: free_allocator
        end function omp_realloc
      end interface

      interface
        function omp_target_alloc (size, device_num) bind(c)
          use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t, c_int
          type(c_ptr) :: omp_target_alloc
          integer(c_size_t), value :: size
          integer(c_int), value :: device_num
        end function omp_target_alloc
      end interface

      interface
        subroutine omp_target_free (device_ptr, device_num) bind(c)
          use, intrinsic :: iso_c_binding, only : c_ptr, c_int
          type(c_ptr), value :: device_ptr
          integer(c_int), value :: device_num
        end subroutine omp_target_free
      end interface

      interface
        function omp_target_is_present (ptr, device_num) bind(c)
          use, intrinsic :: iso_c_binding, only : c_ptr, c_int
          integer(c_int) :: omp_target_is_present
          type(c_ptr), value :: ptr
          integer(c_int), value :: device_num
        end function omp_target_is_present
      end interface

      interface
        function omp_target_memcpy (dst, src, length, dst_offset,          &
     &                              src_offset, dst_device_num,            &
     &                              src_device_num) bind(c)
          use, intrinsic :: iso_c_binding, only : c_ptr, c_int, c_size_t
          integer(c_int) :: omp_target_memcpy
          type(c_ptr), value :: dst, src
          integer(c_size_t), value :: length, dst_offset, src_offset
          integer(c_int), value :: dst_device_num, src_device_num
        end function omp_target_memcpy
      end interface

      interface
        function omp_target_memcpy_async (dst, src, length, dst_offset,    &
     &                              src_offset, dst_device_num,            &
     &                              src_device_num, depobj_count,          &
     &                              depobj_list) bind(c)
          use, intrinsic :: iso_c_binding, only : c_ptr, c_int, c_size_t
          import :: omp_depend_kind
          integer(c_int) :: omp_target_memcpy_async
          type(c_ptr), value :: dst, src
          integer(c_size_t), value :: length, dst_offset, src_offset
          integer(c_int), value :: dst_device_num, src_device_num
          integer(c_int), value :: depobj_count
          integer(omp_depend_kind), optional :: depobj_list(*)
        end function omp_target_memcpy_async
      end interface

      interface
        function omp_target_memcpy_rect (dst,src,element_size, num_dims,   &
     &                                   volume, dst_offsets,              &
     &                                   src_offsets, dst_dimensions,      &
     &                                   src_dimensions, dst_device_num,   &
     &                                   src_device_num) bind(c)
          use, intrinsic :: iso_c_binding, only : c_ptr, c_int, c_size_t
          integer(c_int) :: omp_target_memcpy_rect
          type(c_ptr), value :: dst, src
          integer(c_size_t), value :: element_size
          integer(c_int), value :: num_dims
          integer(c_int), value :: dst_device_num, src_device_num
          integer(c_size_t), intent(in) :: volume(*), dst_offsets(*)
          integer(c_size_t), intent(in) :: src_offsets(*)
          integer(c_size_t), intent(in) :: dst_dimensions(*)
          integer(c_size_t), intent(in) :: src_dimensions(*)
        end function omp_target_memcpy_rect
      end interface

      interface
        function omp_target_memcpy_rect_async (dst,src,element_size,        &
     &                                         num_dims, volume,            &
     &                                         dst_offsets, src_offsets,    &
     &                                         dst_dimensions,              &
     &                                         src_dimensions,              &
     &                                         dst_device_num,              &
     &                                         src_device_num,              &
     &                                         depobj_count,                &
     &                                         depobj_list) bind(c)
          use, intrinsic :: iso_c_binding, only : c_ptr, c_int, c_size_t
          import :: omp_depend_kind
          integer(c_int) :: omp_target_memcpy_rect_async
          type(c_ptr), value :: dst, src
          integer(c_size_t), value :: element_size
          integer(c_int), value :: num_dims, depobj_count
          integer(c_int), value :: dst_device_num, src_device_num
          integer(c_size_t), intent(in) :: volume(*), dst_offsets(*)
          integer(c_size_t), intent(in) :: src_offsets(*)
          integer(c_size_t), intent(in) :: dst_dimensions(*)
          integer(c_size_t), intent(in) :: src_dimensions(*)
          integer(omp_depend_kind), optional :: depobj_list(*)
        end function omp_target_memcpy_rect_async
      end interface

      interface
        function omp_target_associate_ptr (host_ptr, device_ptr, size,     &
     &                                     device_offset, device_num)      &
     &      bind(c)
          use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t, c_int
          integer(c_int) :: omp_target_associate_ptr
          type(c_ptr), value :: host_ptr, device_ptr
          integer(c_size_t), value :: size, device_offset
          integer(c_int), value :: device_num
        end function omp_target_associate_ptr
      end interface

      interface
        function omp_target_disassociate_ptr (ptr, device_num) bind(c)
          use, intrinsic :: iso_c_binding, only : c_ptr, c_int
          integer(c_int) :: omp_target_disassociate_ptr
          type(c_ptr), value :: ptr
          integer(c_int), value :: device_num
        end function omp_target_disassociate_ptr
      end interface

      interface
        function omp_get_mapped_ptr (ptr, device_num) bind(c)
          use, intrinsic :: iso_c_binding, only : c_ptr, c_int
          type(c_ptr) :: omp_get_mapped_ptr
          type(c_ptr), value :: ptr
          integer(c_int), value :: device_num
        end function omp_get_mapped_ptr
      end interface

      interface
        function omp_target_is_accessible (ptr, size, device_num)          &
     &      bind(c)
          use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t, c_int
          integer(c_int) :: omp_target_is_accessible
          type(c_ptr), value :: ptr
          integer(c_size_t), value :: size
          integer(c_int), value :: device_num
        end function omp_target_is_accessible
      end interface