omp_lib.h.in 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418
  1. ! Copyright (C) 2005-2022 Free Software Foundation, Inc.
  2. ! Contributed by Jakub Jelinek <jakub@redhat.com>.
  3. ! This file is part of the GNU Offloading and Multi Processing Library
  4. ! (libgomp).
  5. ! Libgomp is free software; you can redistribute it and/or modify it
  6. ! under the terms of the GNU General Public License as published by
  7. ! the Free Software Foundation; either version 3, or (at your option)
  8. ! any later version.
  9. ! Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY
  10. ! WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
  11. ! FOR A PARTICULAR PURPOSE. See the GNU General Public License for
  12. ! more details.
  13. ! Under Section 7 of GPL version 3, you are granted additional
  14. ! permissions described in the GCC Runtime Library Exception, version
  15. ! 3.1, as published by the Free Software Foundation.
  16. ! You should have received a copy of the GNU General Public License and
  17. ! a copy of the GCC Runtime Library Exception along with this program;
  18. ! see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
  19. ! <http://www.gnu.org/licenses/>.
  20. integer omp_lock_kind, omp_nest_lock_kind, openmp_version
  21. parameter (omp_lock_kind = @OMP_LOCK_KIND@)
  22. parameter (omp_nest_lock_kind = @OMP_NEST_LOCK_KIND@)
  23. integer omp_depend_kind
  24. parameter (omp_depend_kind = @OMP_DEPEND_KIND@)
  25. integer omp_sched_kind
  26. parameter (omp_sched_kind = 4)
  27. integer (omp_sched_kind) omp_sched_static, omp_sched_dynamic
  28. integer (omp_sched_kind) omp_sched_guided, omp_sched_auto
  29. parameter (omp_sched_static = 1)
  30. parameter (omp_sched_dynamic = 2)
  31. parameter (omp_sched_guided = 3)
  32. parameter (omp_sched_auto = 4)
  33. integer omp_proc_bind_kind
  34. parameter (omp_proc_bind_kind = 4)
  35. integer (omp_proc_bind_kind) omp_proc_bind_false
  36. integer (omp_proc_bind_kind) omp_proc_bind_true
  37. integer (omp_proc_bind_kind) omp_proc_bind_primary
  38. integer (omp_proc_bind_kind) omp_proc_bind_master
  39. integer (omp_proc_bind_kind) omp_proc_bind_close
  40. integer (omp_proc_bind_kind) omp_proc_bind_spread
  41. parameter (omp_proc_bind_false = 0)
  42. parameter (omp_proc_bind_true = 1)
  43. parameter (omp_proc_bind_primary = 2)
  44. parameter (omp_proc_bind_master = 2)
  45. parameter (omp_proc_bind_close = 3)
  46. parameter (omp_proc_bind_spread = 4)
  47. integer omp_sync_hint_kind
  48. integer omp_lock_hint_kind
  49. parameter (omp_sync_hint_kind = 4)
  50. parameter (omp_lock_hint_kind = omp_sync_hint_kind)
  51. integer (omp_sync_hint_kind) omp_sync_hint_none
  52. integer (omp_lock_hint_kind) omp_lock_hint_none
  53. integer (omp_sync_hint_kind) omp_sync_hint_uncontended
  54. integer (omp_lock_hint_kind) omp_lock_hint_uncontended
  55. integer (omp_sync_hint_kind) omp_sync_hint_contended
  56. integer (omp_sync_hint_kind) omp_lock_hint_contended
  57. integer (omp_lock_hint_kind) omp_sync_hint_nonspeculative
  58. integer (omp_lock_hint_kind) omp_lock_hint_nonspeculative
  59. integer (omp_sync_hint_kind) omp_sync_hint_speculative
  60. integer (omp_lock_hint_kind) omp_lock_hint_speculative
  61. parameter (omp_sync_hint_none = 0)
  62. parameter (omp_lock_hint_none = 0)
  63. parameter (omp_sync_hint_uncontended = 1)
  64. parameter (omp_lock_hint_uncontended = 1)
  65. parameter (omp_sync_hint_contended = 2)
  66. parameter (omp_lock_hint_contended = 2)
  67. parameter (omp_sync_hint_nonspeculative = 4)
  68. parameter (omp_lock_hint_nonspeculative = 4)
  69. parameter (omp_sync_hint_speculative = 8)
  70. parameter (omp_lock_hint_speculative = 8)
  71. parameter (openmp_version = 201511)
  72. integer omp_pause_resource_kind
  73. parameter (omp_pause_resource_kind = 4)
  74. integer (omp_pause_resource_kind) omp_pause_soft
  75. integer (omp_pause_resource_kind) omp_pause_hard
  76. parameter (omp_pause_soft = 1)
  77. parameter (omp_pause_hard = 2)
  78. integer omp_allocator_handle_kind, omp_alloctrait_key_kind
  79. integer omp_alloctrait_val_kind, omp_memspace_handle_kind
  80. integer omp_event_handle_kind
  81. parameter (omp_allocator_handle_kind = @INTPTR_T_KIND@)
  82. parameter (omp_alloctrait_key_kind = 4)
  83. parameter (omp_alloctrait_val_kind = @INTPTR_T_KIND@)
  84. parameter (omp_memspace_handle_kind = @INTPTR_T_KIND@)
  85. parameter (omp_event_handle_kind = @INTPTR_T_KIND@)
  86. integer (omp_alloctrait_key_kind) omp_atk_sync_hint
  87. integer (omp_alloctrait_key_kind) omp_atk_alignment
  88. integer (omp_alloctrait_key_kind) omp_atk_access
  89. integer (omp_alloctrait_key_kind) omp_atk_pool_size
  90. integer (omp_alloctrait_key_kind) omp_atk_fallback
  91. integer (omp_alloctrait_key_kind) omp_atk_fb_data
  92. integer (omp_alloctrait_key_kind) omp_atk_pinned
  93. integer (omp_alloctrait_key_kind) omp_atk_partition
  94. parameter (omp_atk_sync_hint = 1)
  95. parameter (omp_atk_alignment = 2)
  96. parameter (omp_atk_access = 3)
  97. parameter (omp_atk_pool_size = 4)
  98. parameter (omp_atk_fallback = 5)
  99. parameter (omp_atk_fb_data = 6)
  100. parameter (omp_atk_pinned = 7)
  101. parameter (omp_atk_partition = 8)
  102. integer (omp_alloctrait_val_kind) omp_atv_false
  103. integer (omp_alloctrait_val_kind) omp_atv_true
  104. integer (omp_alloctrait_val_kind) omp_atv_default
  105. integer (omp_alloctrait_val_kind) omp_atv_contended
  106. integer (omp_alloctrait_val_kind) omp_atv_uncontended
  107. integer (omp_alloctrait_val_kind) omp_atv_serialized
  108. integer (omp_alloctrait_val_kind) omp_atv_sequential
  109. integer (omp_alloctrait_val_kind) omp_atv_private
  110. integer (omp_alloctrait_val_kind) omp_atv_all
  111. integer (omp_alloctrait_val_kind) omp_atv_thread
  112. integer (omp_alloctrait_val_kind) omp_atv_pteam
  113. integer (omp_alloctrait_val_kind) omp_atv_cgroup
  114. integer (omp_alloctrait_val_kind) omp_atv_default_mem_fb
  115. integer (omp_alloctrait_val_kind) omp_atv_null_fb
  116. integer (omp_alloctrait_val_kind) omp_atv_abort_fb
  117. integer (omp_alloctrait_val_kind) omp_atv_allocator_fb
  118. integer (omp_alloctrait_val_kind) omp_atv_environment
  119. integer (omp_alloctrait_val_kind) omp_atv_nearest
  120. integer (omp_alloctrait_val_kind) omp_atv_blocked
  121. integer (omp_alloctrait_val_kind) omp_atv_interleaved
  122. parameter (omp_atv_default = -1)
  123. parameter (omp_atv_false = 0)
  124. parameter (omp_atv_true = 1)
  125. parameter (omp_atv_contended = 3)
  126. parameter (omp_atv_uncontended = 4)
  127. parameter (omp_atv_serialized = 5)
  128. parameter (omp_atv_sequential = omp_atv_serialized)
  129. parameter (omp_atv_private = 6)
  130. parameter (omp_atv_all = 7)
  131. parameter (omp_atv_thread = 8)
  132. parameter (omp_atv_pteam = 9)
  133. parameter (omp_atv_cgroup = 10)
  134. parameter (omp_atv_default_mem_fb = 11)
  135. parameter (omp_atv_null_fb = 12)
  136. parameter (omp_atv_abort_fb = 13)
  137. parameter (omp_atv_allocator_fb = 14)
  138. parameter (omp_atv_environment = 15)
  139. parameter (omp_atv_nearest = 16)
  140. parameter (omp_atv_blocked = 17)
  141. parameter (omp_atv_interleaved = 18)
  142. integer (omp_allocator_handle_kind) omp_null_allocator
  143. integer (omp_allocator_handle_kind) omp_default_mem_alloc
  144. integer (omp_allocator_handle_kind) omp_large_cap_mem_alloc
  145. integer (omp_allocator_handle_kind) omp_const_mem_alloc
  146. integer (omp_allocator_handle_kind) omp_high_bw_mem_alloc
  147. integer (omp_allocator_handle_kind) omp_low_lat_mem_alloc
  148. integer (omp_allocator_handle_kind) omp_cgroup_mem_alloc
  149. integer (omp_allocator_handle_kind) omp_pteam_mem_alloc
  150. integer (omp_allocator_handle_kind) omp_thread_mem_alloc
  151. parameter (omp_null_allocator = 0)
  152. parameter (omp_default_mem_alloc = 1)
  153. parameter (omp_large_cap_mem_alloc = 2)
  154. parameter (omp_const_mem_alloc = 3)
  155. parameter (omp_high_bw_mem_alloc = 4)
  156. parameter (omp_low_lat_mem_alloc = 5)
  157. parameter (omp_cgroup_mem_alloc = 6)
  158. parameter (omp_pteam_mem_alloc = 7)
  159. parameter (omp_thread_mem_alloc = 8)
  160. integer (omp_memspace_handle_kind) omp_default_mem_space
  161. integer (omp_memspace_handle_kind) omp_large_cap_mem_space
  162. integer (omp_memspace_handle_kind) omp_const_mem_space
  163. integer (omp_memspace_handle_kind) omp_high_bw_mem_space
  164. integer (omp_memspace_handle_kind) omp_low_lat_mem_space
  165. parameter (omp_default_mem_space = 0)
  166. parameter (omp_large_cap_mem_space = 1)
  167. parameter (omp_const_mem_space = 2)
  168. parameter (omp_high_bw_mem_space = 3)
  169. parameter (omp_low_lat_mem_space = 4)
  170. type omp_alloctrait
  171. integer (omp_alloctrait_key_kind) key
  172. integer (omp_alloctrait_val_kind) value
  173. end type omp_alloctrait
  174. external omp_init_lock, omp_init_nest_lock
  175. external omp_init_lock_with_hint
  176. external omp_init_nest_lock_with_hint
  177. external omp_destroy_lock, omp_destroy_nest_lock
  178. external omp_set_lock, omp_set_nest_lock
  179. external omp_unset_lock, omp_unset_nest_lock
  180. external omp_set_dynamic, omp_set_nested
  181. external omp_set_num_threads
  182. external omp_get_dynamic, omp_get_nested
  183. logical(4) omp_get_dynamic, omp_get_nested
  184. external omp_test_lock, omp_in_parallel
  185. logical(4) omp_test_lock, omp_in_parallel
  186. external omp_get_max_threads, omp_get_num_procs
  187. integer(4) omp_get_max_threads, omp_get_num_procs
  188. external omp_get_num_threads, omp_get_thread_num
  189. integer(4) omp_get_num_threads, omp_get_thread_num
  190. external omp_test_nest_lock
  191. integer(4) omp_test_nest_lock
  192. external omp_get_wtick, omp_get_wtime
  193. double precision omp_get_wtick, omp_get_wtime
  194. external omp_set_schedule, omp_get_schedule
  195. external omp_get_thread_limit, omp_set_max_active_levels
  196. external omp_get_max_active_levels, omp_get_level
  197. external omp_get_ancestor_thread_num, omp_get_team_size
  198. external omp_get_active_level
  199. external omp_get_supported_active_levels
  200. integer(4) omp_get_thread_limit, omp_get_max_active_levels
  201. integer(4) omp_get_level, omp_get_ancestor_thread_num
  202. integer(4) omp_get_team_size, omp_get_active_level
  203. integer(4) omp_get_supported_active_levels
  204. external omp_in_final
  205. logical(4) omp_in_final
  206. external omp_get_cancellation
  207. logical(4) omp_get_cancellation
  208. external omp_get_proc_bind
  209. integer(omp_proc_bind_kind) omp_get_proc_bind
  210. integer(4) omp_get_num_places
  211. external omp_get_num_places
  212. integer(4) omp_get_place_num_procs
  213. external omp_get_place_num_procs
  214. external omp_get_place_proc_ids
  215. integer(4) omp_get_place_num
  216. external omp_get_place_num
  217. integer(4) omp_get_partition_num_places
  218. external omp_get_partition_num_places
  219. external omp_get_partition_place_nums
  220. external omp_set_default_device, omp_get_default_device
  221. external omp_get_num_devices, omp_get_num_teams
  222. external omp_get_team_num
  223. integer(4) omp_get_default_device, omp_get_num_devices
  224. integer(4) omp_get_num_teams, omp_get_team_num
  225. external omp_is_initial_device
  226. logical(4) omp_is_initial_device
  227. external omp_get_initial_device
  228. integer(4) omp_get_initial_device
  229. external omp_get_device_num
  230. integer(4) omp_get_device_num
  231. external omp_get_max_task_priority
  232. integer(4) omp_get_max_task_priority
  233. external omp_set_num_teams, omp_set_teams_thread_limit
  234. external omp_get_max_teams, omp_get_teams_thread_limit
  235. integer(4) omp_get_max_teams, omp_get_teams_thread_limit
  236. external omp_fulfill_event
  237. external omp_set_affinity_format, omp_get_affinity_format
  238. external omp_display_affinity, omp_capture_affinity
  239. integer(4) omp_get_affinity_format
  240. integer(4) omp_capture_affinity
  241. external omp_pause_resource, omp_pause_resource_all
  242. integer(4) omp_pause_resource
  243. integer(4) omp_pause_resource_all
  244. external omp_init_allocator
  245. integer (omp_allocator_handle_kind) omp_init_allocator
  246. external omp_destroy_allocator
  247. external omp_set_default_allocator
  248. external omp_get_default_allocator
  249. integer (omp_allocator_handle_kind) omp_get_default_allocator
  250. external omp_display_env
  251. interface
  252. function omp_alloc (size, allocator) bind(c)
  253. use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t
  254. use, intrinsic :: omp_lib_kinds
  255. type(c_ptr) :: omp_alloc
  256. integer(c_size_t), value :: size
  257. integer(omp_allocator_handle_kind), value :: allocator
  258. end function omp_alloc
  259. end interface
  260. interface
  261. function omp_aligned_alloc (alignment, size, allocator) bind(c)
  262. use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t
  263. use, intrinsic :: omp_lib_kinds
  264. type(c_ptr) :: omp_aligned_alloc
  265. integer(c_size_t), value :: alignment, size
  266. integer(omp_allocator_handle_kind), value :: allocator
  267. end function omp_aligned_alloc
  268. end interface
  269. interface
  270. subroutine omp_free(ptr, allocator) bind(c)
  271. use, intrinsic :: iso_c_binding, only : c_ptr
  272. use, intrinsic :: omp_lib_kinds
  273. type(c_ptr), value :: ptr
  274. integer(omp_allocator_handle_kind), value :: allocator
  275. end subroutine omp_free
  276. end interface
  277. interface
  278. function omp_calloc (nmemb, size, allocator) bind(c)
  279. use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t
  280. use, intrinsic :: omp_lib_kinds
  281. type(c_ptr) :: omp_calloc
  282. integer(c_size_t), value :: nmemb, size
  283. integer(omp_allocator_handle_kind), value :: allocator
  284. end function omp_calloc
  285. end interface
  286. interface
  287. function omp_aligned_calloc (alignment, nmemb, size, allocator) &
  288. & bind(c)
  289. use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t
  290. use, intrinsic :: omp_lib_kinds
  291. type(c_ptr) :: omp_aligned_calloc
  292. integer(c_size_t), value :: alignment, nmemb, size
  293. integer(omp_allocator_handle_kind), value :: allocator
  294. end function omp_aligned_calloc
  295. end interface
  296. interface
  297. function omp_realloc (ptr, size, allocator, free_allocator) &
  298. & bind(c)
  299. use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t
  300. use, intrinsic :: omp_lib_kinds
  301. type(c_ptr) :: omp_realloc
  302. type(c_ptr), value :: ptr
  303. integer(c_size_t), value :: size
  304. integer(omp_allocator_handle_kind), value :: allocator
  305. integer(omp_allocator_handle_kind), value :: free_allocator
  306. end function omp_realloc
  307. end interface
  308. interface
  309. function omp_target_alloc (size, device_num) bind(c)
  310. use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t, c_int
  311. type(c_ptr) :: omp_target_alloc
  312. integer(c_size_t), value :: size
  313. integer(c_int), value :: device_num
  314. end function omp_target_alloc
  315. end interface
  316. interface
  317. subroutine omp_target_free (device_ptr, device_num) bind(c)
  318. use, intrinsic :: iso_c_binding, only : c_ptr, c_int
  319. type(c_ptr), value :: device_ptr
  320. integer(c_int), value :: device_num
  321. end subroutine omp_target_free
  322. end interface
  323. interface
  324. function omp_target_is_present (ptr, device_num) bind(c)
  325. use, intrinsic :: iso_c_binding, only : c_ptr, c_int
  326. integer(c_int) :: omp_target_is_present
  327. type(c_ptr), value :: ptr
  328. integer(c_int), value :: device_num
  329. end function omp_target_is_present
  330. end interface
  331. interface
  332. function omp_target_memcpy (dst, src, length, dst_offset, &
  333. & src_offset, dst_device_num, &
  334. & src_device_num) bind(c)
  335. use, intrinsic :: iso_c_binding, only : c_ptr, c_int, c_size_t
  336. integer(c_int) :: omp_target_memcpy
  337. type(c_ptr), value :: dst, src
  338. integer(c_size_t), value :: length, dst_offset, src_offset
  339. integer(c_int), value :: dst_device_num, src_device_num
  340. end function omp_target_memcpy
  341. end interface
  342. interface
  343. function omp_target_memcpy_rect (dst,src,element_size, num_dims, &
  344. & volume, dst_offsets, &
  345. & src_offsets, dst_dimensions, &
  346. & src_dimensions, dst_device_num, &
  347. & src_device_num) bind(c)
  348. use, intrinsic :: iso_c_binding, only : c_ptr, c_int, c_size_t
  349. integer(c_int) :: omp_target_memcpy_rect
  350. type(c_ptr), value :: dst, src
  351. integer(c_size_t), value :: element_size
  352. integer(c_int), value :: num_dims
  353. integer(c_int), value :: dst_device_num, src_device_num
  354. integer(c_size_t), intent(in) :: volume(*), dst_offsets(*)
  355. integer(c_size_t), intent(in) :: src_offsets(*)
  356. integer(c_size_t), intent(in) :: dst_dimensions(*)
  357. integer(c_size_t), intent(in) :: src_dimensions(*)
  358. end function omp_target_memcpy_rect
  359. end interface
  360. interface
  361. function omp_target_associate_ptr (host_ptr, device_ptr, size, &
  362. & device_offset, device_num) &
  363. & bind(c)
  364. use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t, c_int
  365. integer(c_int) :: omp_target_associate_ptr
  366. type(c_ptr), value :: host_ptr, device_ptr
  367. integer(c_size_t), value :: size, device_offset
  368. integer(c_int), value :: device_num
  369. end function omp_target_associate_ptr
  370. end interface
  371. interface
  372. function omp_target_disassociate_ptr (ptr, device_num) bind(c)
  373. use, intrinsic :: iso_c_binding, only : c_ptr, c_int
  374. integer(c_int) :: omp_target_disassociate_ptr
  375. type(c_ptr), value :: ptr
  376. integer(c_int), value :: device_num
  377. end function omp_target_disassociate_ptr
  378. end interface