1 1.12 mrg ! Copyright (C) 2005-2022 Free Software Foundation, Inc. 2 1.1 mrg ! Contributed by Jakub Jelinek <jakub (a] redhat.com>. 3 1.1 mrg 4 1.5 mrg ! This file is part of the GNU Offloading and Multi Processing Library 5 1.5 mrg ! (libgomp). 6 1.1 mrg 7 1.1 mrg ! Libgomp is free software; you can redistribute it and/or modify it 8 1.1 mrg ! under the terms of the GNU General Public License as published by 9 1.1 mrg ! the Free Software Foundation; either version 3, or (at your option) 10 1.1 mrg ! any later version. 11 1.1 mrg 12 1.1 mrg ! Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY 13 1.1 mrg ! WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 14 1.1 mrg ! FOR A PARTICULAR PURPOSE. See the GNU General Public License for 15 1.1 mrg ! more details. 16 1.1 mrg 17 1.1 mrg ! Under Section 7 of GPL version 3, you are granted additional 18 1.1 mrg ! permissions described in the GCC Runtime Library Exception, version 19 1.1 mrg ! 3.1, as published by the Free Software Foundation. 20 1.1 mrg 21 1.1 mrg ! You should have received a copy of the GNU General Public License and 22 1.1 mrg ! a copy of the GCC Runtime Library Exception along with this program; 23 1.1 mrg ! see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 24 1.1 mrg ! <http://www.gnu.org/licenses/>. 25 1.1 mrg 26 1.1 mrg module omp_lib_kinds 27 1.12 mrg use iso_c_binding, only: c_int, c_intptr_t 28 1.1 mrg implicit none 29 1.12 mrg private :: c_int, c_intptr_t 30 1.1 mrg integer, parameter :: omp_lock_kind = @OMP_LOCK_KIND@ 31 1.1 mrg integer, parameter :: omp_nest_lock_kind = @OMP_NEST_LOCK_KIND@ 32 1.1 mrg integer, parameter :: omp_sched_kind = 4 33 1.5 mrg integer, parameter :: omp_proc_bind_kind = 4 34 1.12 mrg integer, parameter :: omp_sync_hint_kind = 4 35 1.12 mrg integer, parameter :: omp_lock_hint_kind = omp_sync_hint_kind 36 1.10 mrg integer, parameter :: omp_pause_resource_kind = 4 37 1.12 mrg integer, parameter :: omp_allocator_handle_kind = c_intptr_t 38 1.12 mrg integer, parameter :: omp_alloctrait_key_kind = c_int 39 1.12 mrg integer, parameter :: omp_alloctrait_val_kind = c_intptr_t 40 1.12 mrg integer, parameter :: omp_memspace_handle_kind = c_intptr_t 41 1.12 mrg integer, parameter :: omp_depend_kind = @OMP_DEPEND_KIND@ 42 1.12 mrg integer, parameter :: omp_event_handle_kind = c_intptr_t 43 1.5 mrg integer (omp_sched_kind), parameter :: omp_sched_static = 1 44 1.5 mrg integer (omp_sched_kind), parameter :: omp_sched_dynamic = 2 45 1.5 mrg integer (omp_sched_kind), parameter :: omp_sched_guided = 3 46 1.5 mrg integer (omp_sched_kind), parameter :: omp_sched_auto = 4 47 1.6 mrg integer (omp_proc_bind_kind), & 48 1.6 mrg parameter :: omp_proc_bind_false = 0 49 1.6 mrg integer (omp_proc_bind_kind), & 50 1.6 mrg parameter :: omp_proc_bind_true = 1 51 1.6 mrg integer (omp_proc_bind_kind), & 52 1.12 mrg parameter :: omp_proc_bind_primary = 2 53 1.12 mrg integer (omp_proc_bind_kind), & 54 1.6 mrg parameter :: omp_proc_bind_master = 2 55 1.6 mrg integer (omp_proc_bind_kind), & 56 1.6 mrg parameter :: omp_proc_bind_close = 3 57 1.6 mrg integer (omp_proc_bind_kind), & 58 1.6 mrg parameter :: omp_proc_bind_spread = 4 59 1.6 mrg integer (omp_lock_hint_kind), & 60 1.12 mrg parameter :: omp_sync_hint_none = 0 61 1.12 mrg integer (omp_lock_hint_kind), & 62 1.12 mrg parameter :: omp_lock_hint_none = omp_sync_hint_none 63 1.12 mrg integer (omp_lock_hint_kind), & 64 1.12 mrg parameter :: omp_sync_hint_uncontended = 1 65 1.12 mrg integer (omp_lock_hint_kind), & 66 1.12 mrg parameter :: omp_lock_hint_uncontended & 67 1.12 mrg = omp_sync_hint_uncontended 68 1.12 mrg integer (omp_lock_hint_kind), & 69 1.12 mrg parameter :: omp_sync_hint_contended = 2 70 1.12 mrg integer (omp_lock_hint_kind), & 71 1.12 mrg parameter :: omp_lock_hint_contended & 72 1.12 mrg = omp_sync_hint_contended 73 1.6 mrg integer (omp_lock_hint_kind), & 74 1.12 mrg parameter :: omp_sync_hint_nonspeculative = 4 75 1.6 mrg integer (omp_lock_hint_kind), & 76 1.12 mrg parameter :: omp_lock_hint_nonspeculative & 77 1.12 mrg = omp_sync_hint_nonspeculative 78 1.6 mrg integer (omp_lock_hint_kind), & 79 1.12 mrg parameter :: omp_sync_hint_speculative = 8 80 1.6 mrg integer (omp_lock_hint_kind), & 81 1.12 mrg parameter :: omp_lock_hint_speculative & 82 1.12 mrg = omp_sync_hint_speculative 83 1.10 mrg integer (kind=omp_pause_resource_kind), & 84 1.10 mrg parameter :: omp_pause_soft = 1 85 1.10 mrg integer (kind=omp_pause_resource_kind), & 86 1.10 mrg parameter :: omp_pause_hard = 2 87 1.12 mrg integer (kind=omp_alloctrait_key_kind), & 88 1.12 mrg parameter :: omp_atk_sync_hint = 1 89 1.12 mrg integer (kind=omp_alloctrait_key_kind), & 90 1.12 mrg parameter :: omp_atk_alignment = 2 91 1.12 mrg integer (kind=omp_alloctrait_key_kind), & 92 1.12 mrg parameter :: omp_atk_access = 3 93 1.12 mrg integer (kind=omp_alloctrait_key_kind), & 94 1.12 mrg parameter :: omp_atk_pool_size = 4 95 1.12 mrg integer (kind=omp_alloctrait_key_kind), & 96 1.12 mrg parameter :: omp_atk_fallback = 5 97 1.12 mrg integer (kind=omp_alloctrait_key_kind), & 98 1.12 mrg parameter :: omp_atk_fb_data = 6 99 1.12 mrg integer (kind=omp_alloctrait_key_kind), & 100 1.12 mrg parameter :: omp_atk_pinned = 7 101 1.12 mrg integer (kind=omp_alloctrait_key_kind), & 102 1.12 mrg parameter :: omp_atk_partition = 8 103 1.12 mrg integer (kind=omp_alloctrait_val_kind), & 104 1.12 mrg parameter :: omp_atv_default = -1 105 1.12 mrg integer (kind=omp_alloctrait_val_kind), & 106 1.12 mrg parameter :: omp_atv_false = 0 107 1.12 mrg integer (kind=omp_alloctrait_val_kind), & 108 1.12 mrg parameter :: omp_atv_true = 1 109 1.12 mrg integer (kind=omp_alloctrait_val_kind), & 110 1.12 mrg parameter :: omp_atv_contended = 3 111 1.12 mrg integer (kind=omp_alloctrait_val_kind), & 112 1.12 mrg parameter :: omp_atv_uncontended = 4 113 1.12 mrg integer (kind=omp_alloctrait_val_kind), & 114 1.12 mrg parameter :: omp_atv_serialized = 5 115 1.12 mrg integer (kind=omp_alloctrait_val_kind), & 116 1.12 mrg parameter :: omp_atv_sequential = omp_atv_serialized 117 1.12 mrg integer (kind=omp_alloctrait_val_kind), & 118 1.12 mrg parameter :: omp_atv_private = 6 119 1.12 mrg integer (kind=omp_alloctrait_val_kind), & 120 1.12 mrg parameter :: omp_atv_all = 7 121 1.12 mrg integer (kind=omp_alloctrait_val_kind), & 122 1.12 mrg parameter :: omp_atv_thread = 8 123 1.12 mrg integer (kind=omp_alloctrait_val_kind), & 124 1.12 mrg parameter :: omp_atv_pteam = 9 125 1.12 mrg integer (kind=omp_alloctrait_val_kind), & 126 1.12 mrg parameter :: omp_atv_cgroup = 10 127 1.12 mrg integer (kind=omp_alloctrait_val_kind), & 128 1.12 mrg parameter :: omp_atv_default_mem_fb = 11 129 1.12 mrg integer (kind=omp_alloctrait_val_kind), & 130 1.12 mrg parameter :: omp_atv_null_fb = 12 131 1.12 mrg integer (kind=omp_alloctrait_val_kind), & 132 1.12 mrg parameter :: omp_atv_abort_fb = 13 133 1.12 mrg integer (kind=omp_alloctrait_val_kind), & 134 1.12 mrg parameter :: omp_atv_allocator_fb = 14 135 1.12 mrg integer (kind=omp_alloctrait_val_kind), & 136 1.12 mrg parameter :: omp_atv_environment = 15 137 1.12 mrg integer (kind=omp_alloctrait_val_kind), & 138 1.12 mrg parameter :: omp_atv_nearest = 16 139 1.12 mrg integer (kind=omp_alloctrait_val_kind), & 140 1.12 mrg parameter :: omp_atv_blocked = 17 141 1.12 mrg integer (kind=omp_alloctrait_val_kind), & 142 1.12 mrg parameter :: omp_atv_interleaved = 18 143 1.12 mrg integer (kind=omp_allocator_handle_kind), & 144 1.12 mrg parameter :: omp_null_allocator = 0 145 1.12 mrg integer (kind=omp_allocator_handle_kind), & 146 1.12 mrg parameter :: omp_default_mem_alloc = 1 147 1.12 mrg integer (kind=omp_allocator_handle_kind), & 148 1.12 mrg parameter :: omp_large_cap_mem_alloc = 2 149 1.12 mrg integer (kind=omp_allocator_handle_kind), & 150 1.12 mrg parameter :: omp_const_mem_alloc = 3 151 1.12 mrg integer (kind=omp_allocator_handle_kind), & 152 1.12 mrg parameter :: omp_high_bw_mem_alloc = 4 153 1.12 mrg integer (kind=omp_allocator_handle_kind), & 154 1.12 mrg parameter :: omp_low_lat_mem_alloc = 5 155 1.12 mrg integer (kind=omp_allocator_handle_kind), & 156 1.12 mrg parameter :: omp_cgroup_mem_alloc = 6 157 1.12 mrg integer (kind=omp_allocator_handle_kind), & 158 1.12 mrg parameter :: omp_pteam_mem_alloc = 7 159 1.12 mrg integer (kind=omp_allocator_handle_kind), & 160 1.12 mrg parameter :: omp_thread_mem_alloc = 8 161 1.12 mrg integer (omp_memspace_handle_kind), & 162 1.12 mrg parameter :: omp_default_mem_space = 0 163 1.12 mrg integer (omp_memspace_handle_kind), & 164 1.12 mrg parameter :: omp_large_cap_mem_space = 1 165 1.12 mrg integer (omp_memspace_handle_kind), & 166 1.12 mrg parameter :: omp_const_mem_space = 2 167 1.12 mrg integer (omp_memspace_handle_kind), & 168 1.12 mrg parameter :: omp_high_bw_mem_space = 3 169 1.12 mrg integer (omp_memspace_handle_kind), & 170 1.12 mrg parameter :: omp_low_lat_mem_space = 4 171 1.12 mrg 172 1.12 mrg type omp_alloctrait 173 1.12 mrg integer (kind=omp_alloctrait_key_kind) key 174 1.12 mrg integer (kind=omp_alloctrait_val_kind) value 175 1.12 mrg end type omp_alloctrait 176 1.1 mrg end module 177 1.1 mrg 178 1.1 mrg module omp_lib 179 1.1 mrg use omp_lib_kinds 180 1.1 mrg implicit none 181 1.8 mrg integer, parameter :: openmp_version = 201511 182 1.1 mrg 183 1.1 mrg interface 184 1.5 mrg subroutine omp_init_lock (svar) 185 1.1 mrg use omp_lib_kinds 186 1.5 mrg integer (omp_lock_kind), intent (out) :: svar 187 1.1 mrg end subroutine omp_init_lock 188 1.1 mrg end interface 189 1.1 mrg 190 1.1 mrg interface 191 1.6 mrg subroutine omp_init_lock_with_hint (svar, hint) 192 1.6 mrg use omp_lib_kinds 193 1.6 mrg integer (omp_lock_kind), intent (out) :: svar 194 1.6 mrg integer (omp_lock_hint_kind), intent (in) :: hint 195 1.6 mrg end subroutine omp_init_lock_with_hint 196 1.6 mrg end interface 197 1.6 mrg 198 1.6 mrg interface 199 1.5 mrg subroutine omp_init_nest_lock (nvar) 200 1.1 mrg use omp_lib_kinds 201 1.5 mrg integer (omp_nest_lock_kind), intent (out) :: nvar 202 1.1 mrg end subroutine omp_init_nest_lock 203 1.1 mrg end interface 204 1.1 mrg 205 1.1 mrg interface 206 1.6 mrg subroutine omp_init_nest_lock_with_hint (nvar, hint) 207 1.6 mrg use omp_lib_kinds 208 1.6 mrg integer (omp_nest_lock_kind), intent (out) :: nvar 209 1.6 mrg integer (omp_lock_hint_kind), intent (in) :: hint 210 1.6 mrg end subroutine omp_init_nest_lock_with_hint 211 1.6 mrg end interface 212 1.6 mrg 213 1.6 mrg interface 214 1.5 mrg subroutine omp_destroy_lock (svar) 215 1.1 mrg use omp_lib_kinds 216 1.5 mrg integer (omp_lock_kind), intent (inout) :: svar 217 1.1 mrg end subroutine omp_destroy_lock 218 1.1 mrg end interface 219 1.1 mrg 220 1.1 mrg interface 221 1.5 mrg subroutine omp_destroy_nest_lock (nvar) 222 1.1 mrg use omp_lib_kinds 223 1.5 mrg integer (omp_nest_lock_kind), intent (inout) :: nvar 224 1.1 mrg end subroutine omp_destroy_nest_lock 225 1.1 mrg end interface 226 1.1 mrg 227 1.1 mrg interface 228 1.5 mrg subroutine omp_set_lock (svar) 229 1.1 mrg use omp_lib_kinds 230 1.5 mrg integer (omp_lock_kind), intent (inout) :: svar 231 1.1 mrg end subroutine omp_set_lock 232 1.1 mrg end interface 233 1.1 mrg 234 1.1 mrg interface 235 1.5 mrg subroutine omp_set_nest_lock (nvar) 236 1.1 mrg use omp_lib_kinds 237 1.5 mrg integer (omp_nest_lock_kind), intent (inout) :: nvar 238 1.1 mrg end subroutine omp_set_nest_lock 239 1.1 mrg end interface 240 1.1 mrg 241 1.1 mrg interface 242 1.5 mrg subroutine omp_unset_lock (svar) 243 1.1 mrg use omp_lib_kinds 244 1.5 mrg integer (omp_lock_kind), intent (inout) :: svar 245 1.1 mrg end subroutine omp_unset_lock 246 1.1 mrg end interface 247 1.1 mrg 248 1.1 mrg interface 249 1.5 mrg subroutine omp_unset_nest_lock (nvar) 250 1.1 mrg use omp_lib_kinds 251 1.5 mrg integer (omp_nest_lock_kind), intent (inout) :: nvar 252 1.1 mrg end subroutine omp_unset_nest_lock 253 1.1 mrg end interface 254 1.1 mrg 255 1.1 mrg interface omp_set_dynamic 256 1.5 mrg subroutine omp_set_dynamic (dynamic_threads) 257 1.5 mrg logical (4), intent (in) :: dynamic_threads 258 1.1 mrg end subroutine omp_set_dynamic 259 1.5 mrg subroutine omp_set_dynamic_8 (dynamic_threads) 260 1.5 mrg logical (8), intent (in) :: dynamic_threads 261 1.1 mrg end subroutine omp_set_dynamic_8 262 1.1 mrg end interface 263 1.1 mrg 264 1.1 mrg interface omp_set_nested 265 1.5 mrg subroutine omp_set_nested (nested) 266 1.5 mrg logical (4), intent (in) :: nested 267 1.1 mrg end subroutine omp_set_nested 268 1.5 mrg subroutine omp_set_nested_8 (nested) 269 1.5 mrg logical (8), intent (in) :: nested 270 1.1 mrg end subroutine omp_set_nested_8 271 1.1 mrg end interface 272 1.1 mrg 273 1.1 mrg interface omp_set_num_threads 274 1.5 mrg subroutine omp_set_num_threads (num_threads) 275 1.5 mrg integer (4), intent (in) :: num_threads 276 1.1 mrg end subroutine omp_set_num_threads 277 1.5 mrg subroutine omp_set_num_threads_8 (num_threads) 278 1.5 mrg integer (8), intent (in) :: num_threads 279 1.1 mrg end subroutine omp_set_num_threads_8 280 1.1 mrg end interface 281 1.1 mrg 282 1.1 mrg interface 283 1.1 mrg function omp_get_dynamic () 284 1.3 mrg logical (4) :: omp_get_dynamic 285 1.1 mrg end function omp_get_dynamic 286 1.1 mrg end interface 287 1.1 mrg 288 1.1 mrg interface 289 1.1 mrg function omp_get_nested () 290 1.3 mrg logical (4) :: omp_get_nested 291 1.1 mrg end function omp_get_nested 292 1.1 mrg end interface 293 1.1 mrg 294 1.1 mrg interface 295 1.1 mrg function omp_in_parallel () 296 1.3 mrg logical (4) :: omp_in_parallel 297 1.1 mrg end function omp_in_parallel 298 1.1 mrg end interface 299 1.1 mrg 300 1.1 mrg interface 301 1.5 mrg function omp_test_lock (svar) 302 1.1 mrg use omp_lib_kinds 303 1.3 mrg logical (4) :: omp_test_lock 304 1.5 mrg integer (omp_lock_kind), intent (inout) :: svar 305 1.1 mrg end function omp_test_lock 306 1.1 mrg end interface 307 1.1 mrg 308 1.1 mrg interface 309 1.1 mrg function omp_get_max_threads () 310 1.3 mrg integer (4) :: omp_get_max_threads 311 1.1 mrg end function omp_get_max_threads 312 1.1 mrg end interface 313 1.1 mrg 314 1.1 mrg interface 315 1.1 mrg function omp_get_num_procs () 316 1.3 mrg integer (4) :: omp_get_num_procs 317 1.1 mrg end function omp_get_num_procs 318 1.1 mrg end interface 319 1.1 mrg 320 1.1 mrg interface 321 1.1 mrg function omp_get_num_threads () 322 1.3 mrg integer (4) :: omp_get_num_threads 323 1.1 mrg end function omp_get_num_threads 324 1.1 mrg end interface 325 1.1 mrg 326 1.1 mrg interface 327 1.1 mrg function omp_get_thread_num () 328 1.3 mrg integer (4) :: omp_get_thread_num 329 1.1 mrg end function omp_get_thread_num 330 1.1 mrg end interface 331 1.1 mrg 332 1.1 mrg interface 333 1.5 mrg function omp_test_nest_lock (nvar) 334 1.1 mrg use omp_lib_kinds 335 1.3 mrg integer (4) :: omp_test_nest_lock 336 1.5 mrg integer (omp_nest_lock_kind), intent (inout) :: nvar 337 1.1 mrg end function omp_test_nest_lock 338 1.1 mrg end interface 339 1.1 mrg 340 1.1 mrg interface 341 1.1 mrg function omp_get_wtick () 342 1.1 mrg double precision :: omp_get_wtick 343 1.1 mrg end function omp_get_wtick 344 1.1 mrg end interface 345 1.1 mrg 346 1.1 mrg interface 347 1.1 mrg function omp_get_wtime () 348 1.1 mrg double precision :: omp_get_wtime 349 1.1 mrg end function omp_get_wtime 350 1.1 mrg end interface 351 1.1 mrg 352 1.1 mrg interface omp_set_schedule 353 1.6 mrg subroutine omp_set_schedule (kind, chunk_size) 354 1.1 mrg use omp_lib_kinds 355 1.1 mrg integer (omp_sched_kind), intent (in) :: kind 356 1.6 mrg integer (4), intent (in) :: chunk_size 357 1.1 mrg end subroutine omp_set_schedule 358 1.6 mrg subroutine omp_set_schedule_8 (kind, chunk_size) 359 1.1 mrg use omp_lib_kinds 360 1.1 mrg integer (omp_sched_kind), intent (in) :: kind 361 1.6 mrg integer (8), intent (in) :: chunk_size 362 1.1 mrg end subroutine omp_set_schedule_8 363 1.1 mrg end interface 364 1.1 mrg 365 1.1 mrg interface omp_get_schedule 366 1.6 mrg subroutine omp_get_schedule (kind, chunk_size) 367 1.1 mrg use omp_lib_kinds 368 1.1 mrg integer (omp_sched_kind), intent (out) :: kind 369 1.6 mrg integer (4), intent (out) :: chunk_size 370 1.1 mrg end subroutine omp_get_schedule 371 1.6 mrg subroutine omp_get_schedule_8 (kind, chunk_size) 372 1.1 mrg use omp_lib_kinds 373 1.1 mrg integer (omp_sched_kind), intent (out) :: kind 374 1.6 mrg integer (8), intent (out) :: chunk_size 375 1.1 mrg end subroutine omp_get_schedule_8 376 1.1 mrg end interface 377 1.1 mrg 378 1.1 mrg interface 379 1.1 mrg function omp_get_thread_limit () 380 1.3 mrg integer (4) :: omp_get_thread_limit 381 1.1 mrg end function omp_get_thread_limit 382 1.1 mrg end interface 383 1.1 mrg 384 1.1 mrg interface omp_set_max_active_levels 385 1.1 mrg subroutine omp_set_max_active_levels (max_levels) 386 1.1 mrg integer (4), intent (in) :: max_levels 387 1.1 mrg end subroutine omp_set_max_active_levels 388 1.1 mrg subroutine omp_set_max_active_levels_8 (max_levels) 389 1.1 mrg integer (8), intent (in) :: max_levels 390 1.1 mrg end subroutine omp_set_max_active_levels_8 391 1.1 mrg end interface 392 1.1 mrg 393 1.1 mrg interface 394 1.1 mrg function omp_get_max_active_levels () 395 1.3 mrg integer (4) :: omp_get_max_active_levels 396 1.1 mrg end function omp_get_max_active_levels 397 1.1 mrg end interface 398 1.1 mrg 399 1.1 mrg interface 400 1.12 mrg function omp_get_supported_active_levels () 401 1.12 mrg integer (4) :: omp_get_supported_active_levels 402 1.12 mrg end function omp_get_supported_active_levels 403 1.12 mrg end interface 404 1.12 mrg 405 1.12 mrg interface 406 1.1 mrg function omp_get_level () 407 1.3 mrg integer (4) :: omp_get_level 408 1.1 mrg end function omp_get_level 409 1.1 mrg end interface 410 1.1 mrg 411 1.1 mrg interface omp_get_ancestor_thread_num 412 1.1 mrg function omp_get_ancestor_thread_num (level) 413 1.1 mrg integer (4), intent (in) :: level 414 1.3 mrg integer (4) :: omp_get_ancestor_thread_num 415 1.1 mrg end function omp_get_ancestor_thread_num 416 1.1 mrg function omp_get_ancestor_thread_num_8 (level) 417 1.1 mrg integer (8), intent (in) :: level 418 1.3 mrg integer (4) :: omp_get_ancestor_thread_num_8 419 1.1 mrg end function omp_get_ancestor_thread_num_8 420 1.1 mrg end interface 421 1.1 mrg 422 1.1 mrg interface omp_get_team_size 423 1.1 mrg function omp_get_team_size (level) 424 1.1 mrg integer (4), intent (in) :: level 425 1.3 mrg integer (4) :: omp_get_team_size 426 1.1 mrg end function omp_get_team_size 427 1.1 mrg function omp_get_team_size_8 (level) 428 1.1 mrg integer (8), intent (in) :: level 429 1.3 mrg integer (4) :: omp_get_team_size_8 430 1.1 mrg end function omp_get_team_size_8 431 1.1 mrg end interface 432 1.1 mrg 433 1.1 mrg interface 434 1.1 mrg function omp_get_active_level () 435 1.3 mrg integer (4) :: omp_get_active_level 436 1.1 mrg end function omp_get_active_level 437 1.1 mrg end interface 438 1.1 mrg 439 1.3 mrg interface 440 1.3 mrg function omp_in_final () 441 1.3 mrg logical (4) :: omp_in_final 442 1.3 mrg end function omp_in_final 443 1.3 mrg end interface 444 1.3 mrg 445 1.5 mrg interface 446 1.5 mrg function omp_get_cancellation () 447 1.5 mrg logical (4) :: omp_get_cancellation 448 1.5 mrg end function omp_get_cancellation 449 1.5 mrg end interface 450 1.5 mrg 451 1.5 mrg interface 452 1.5 mrg function omp_get_proc_bind () 453 1.5 mrg use omp_lib_kinds 454 1.5 mrg integer (omp_proc_bind_kind) :: omp_get_proc_bind 455 1.5 mrg end function omp_get_proc_bind 456 1.5 mrg end interface 457 1.5 mrg 458 1.6 mrg interface 459 1.6 mrg function omp_get_num_places () 460 1.6 mrg integer (4) :: omp_get_num_places 461 1.6 mrg end function omp_get_num_places 462 1.6 mrg end interface 463 1.6 mrg 464 1.6 mrg interface omp_get_place_num_procs 465 1.6 mrg function omp_get_place_num_procs (place_num) 466 1.6 mrg integer (4), intent(in) :: place_num 467 1.6 mrg integer (4) :: omp_get_place_num_procs 468 1.6 mrg end function omp_get_place_num_procs 469 1.6 mrg 470 1.6 mrg function omp_get_place_num_procs_8 (place_num) 471 1.6 mrg integer (8), intent(in) :: place_num 472 1.6 mrg integer (4) :: omp_get_place_num_procs_8 473 1.6 mrg end function omp_get_place_num_procs_8 474 1.6 mrg end interface 475 1.6 mrg 476 1.6 mrg interface omp_get_place_proc_ids 477 1.6 mrg subroutine omp_get_place_proc_ids (place_num, ids) 478 1.6 mrg integer (4), intent(in) :: place_num 479 1.6 mrg integer (4), intent(out) :: ids(*) 480 1.6 mrg end subroutine omp_get_place_proc_ids 481 1.6 mrg 482 1.6 mrg subroutine omp_get_place_proc_ids_8 (place_num, ids) 483 1.6 mrg integer (8), intent(in) :: place_num 484 1.6 mrg integer (8), intent(out) :: ids(*) 485 1.6 mrg end subroutine omp_get_place_proc_ids_8 486 1.6 mrg end interface 487 1.6 mrg 488 1.6 mrg interface 489 1.6 mrg function omp_get_place_num () 490 1.6 mrg integer (4) :: omp_get_place_num 491 1.6 mrg end function omp_get_place_num 492 1.6 mrg end interface 493 1.6 mrg 494 1.6 mrg interface 495 1.6 mrg function omp_get_partition_num_places () 496 1.6 mrg integer (4) :: omp_get_partition_num_places 497 1.6 mrg end function omp_get_partition_num_places 498 1.6 mrg end interface 499 1.6 mrg 500 1.6 mrg interface omp_get_partition_place_nums 501 1.6 mrg subroutine omp_get_partition_place_nums (place_nums) 502 1.6 mrg integer (4), intent(out) :: place_nums(*) 503 1.6 mrg end subroutine omp_get_partition_place_nums 504 1.6 mrg 505 1.6 mrg subroutine omp_get_partition_place_nums_8 (place_nums) 506 1.6 mrg integer (8), intent(out) :: place_nums(*) 507 1.6 mrg end subroutine omp_get_partition_place_nums_8 508 1.6 mrg end interface 509 1.6 mrg 510 1.5 mrg interface omp_set_default_device 511 1.5 mrg subroutine omp_set_default_device (device_num) 512 1.5 mrg integer (4), intent (in) :: device_num 513 1.5 mrg end subroutine omp_set_default_device 514 1.5 mrg subroutine omp_set_default_device_8 (device_num) 515 1.5 mrg integer (8), intent (in) :: device_num 516 1.5 mrg end subroutine omp_set_default_device_8 517 1.5 mrg end interface 518 1.5 mrg 519 1.5 mrg interface 520 1.5 mrg function omp_get_default_device () 521 1.5 mrg integer (4) :: omp_get_default_device 522 1.5 mrg end function omp_get_default_device 523 1.5 mrg end interface 524 1.5 mrg 525 1.5 mrg interface 526 1.5 mrg function omp_get_num_devices () 527 1.5 mrg integer (4) :: omp_get_num_devices 528 1.5 mrg end function omp_get_num_devices 529 1.5 mrg end interface 530 1.5 mrg 531 1.5 mrg interface 532 1.5 mrg function omp_get_num_teams () 533 1.5 mrg integer (4) :: omp_get_num_teams 534 1.5 mrg end function omp_get_num_teams 535 1.5 mrg end interface 536 1.5 mrg 537 1.5 mrg interface 538 1.5 mrg function omp_get_team_num () 539 1.5 mrg integer (4) :: omp_get_team_num 540 1.5 mrg end function omp_get_team_num 541 1.5 mrg end interface 542 1.5 mrg 543 1.5 mrg interface 544 1.5 mrg function omp_is_initial_device () 545 1.5 mrg logical (4) :: omp_is_initial_device 546 1.5 mrg end function omp_is_initial_device 547 1.5 mrg end interface 548 1.5 mrg 549 1.6 mrg interface 550 1.6 mrg function omp_get_initial_device () 551 1.6 mrg integer (4) :: omp_get_initial_device 552 1.6 mrg end function omp_get_initial_device 553 1.6 mrg end interface 554 1.6 mrg 555 1.6 mrg interface 556 1.12 mrg function omp_get_device_num () 557 1.12 mrg integer (4) :: omp_get_device_num 558 1.12 mrg end function omp_get_device_num 559 1.12 mrg end interface 560 1.12 mrg 561 1.12 mrg interface 562 1.6 mrg function omp_get_max_task_priority () 563 1.6 mrg integer (4) :: omp_get_max_task_priority 564 1.6 mrg end function omp_get_max_task_priority 565 1.6 mrg end interface 566 1.6 mrg 567 1.12 mrg interface omp_set_num_teams 568 1.12 mrg subroutine omp_set_num_teams (num_teams) 569 1.12 mrg integer (4), intent (in) :: num_teams 570 1.12 mrg end subroutine omp_set_num_teams 571 1.12 mrg subroutine omp_set_num_teams_8 (num_teams) 572 1.12 mrg integer (8), intent (in) :: num_teams 573 1.12 mrg end subroutine omp_set_num_teams_8 574 1.12 mrg end interface 575 1.12 mrg 576 1.12 mrg interface 577 1.12 mrg function omp_get_max_teams () 578 1.12 mrg integer (4) :: omp_get_max_teams 579 1.12 mrg end function omp_get_max_teams 580 1.12 mrg end interface 581 1.12 mrg 582 1.12 mrg interface omp_set_teams_thread_limit 583 1.12 mrg subroutine omp_set_teams_thread_limit (thread_limit) 584 1.12 mrg integer (4), intent (in) :: thread_limit 585 1.12 mrg end subroutine omp_set_teams_thread_limit 586 1.12 mrg subroutine omp_set_teams_thread_limit_8 (thread_limit) 587 1.12 mrg integer (8), intent (in) :: thread_limit 588 1.12 mrg end subroutine omp_set_teams_thread_limit_8 589 1.12 mrg end interface 590 1.12 mrg 591 1.12 mrg interface 592 1.12 mrg function omp_get_teams_thread_limit () 593 1.12 mrg integer (4) :: omp_get_teams_thread_limit 594 1.12 mrg end function omp_get_teams_thread_limit 595 1.12 mrg end interface 596 1.12 mrg 597 1.12 mrg interface 598 1.12 mrg subroutine omp_fulfill_event (event) 599 1.12 mrg use omp_lib_kinds 600 1.12 mrg integer (kind=omp_event_handle_kind), & 601 1.12 mrg value, intent(in) :: event 602 1.12 mrg end subroutine omp_fulfill_event 603 1.12 mrg end interface 604 1.12 mrg 605 1.10 mrg interface 606 1.10 mrg subroutine omp_set_affinity_format (format) 607 1.10 mrg character(len=*), intent(in) :: format 608 1.10 mrg end subroutine omp_set_affinity_format 609 1.10 mrg end interface 610 1.10 mrg 611 1.10 mrg interface 612 1.10 mrg function omp_get_affinity_format (buffer) 613 1.10 mrg integer (4) :: omp_get_affinity_format 614 1.10 mrg character(len=*), intent(out) :: buffer 615 1.10 mrg end function omp_get_affinity_format 616 1.10 mrg end interface 617 1.10 mrg 618 1.10 mrg interface 619 1.10 mrg subroutine omp_display_affinity (format) 620 1.10 mrg character(len=*), intent(in) :: format 621 1.10 mrg end subroutine omp_display_affinity 622 1.10 mrg end interface 623 1.10 mrg 624 1.10 mrg interface 625 1.10 mrg function omp_capture_affinity (buffer, format) 626 1.10 mrg integer (4) :: omp_capture_affinity 627 1.10 mrg character(len=*), intent(out) :: buffer 628 1.10 mrg character(len=*), intent(in) :: format 629 1.10 mrg end function omp_capture_affinity 630 1.10 mrg end interface 631 1.10 mrg 632 1.10 mrg interface 633 1.10 mrg function omp_pause_resource (kind, device_num) 634 1.10 mrg use omp_lib_kinds 635 1.10 mrg integer (4) :: omp_pause_resource 636 1.10 mrg integer (kind=omp_pause_resource_kind), & 637 1.10 mrg intent(in) :: kind 638 1.10 mrg integer (4) :: device_num 639 1.10 mrg end function 640 1.10 mrg end interface 641 1.10 mrg 642 1.10 mrg interface 643 1.10 mrg function omp_pause_resource_all (kind) 644 1.10 mrg use omp_lib_kinds 645 1.10 mrg integer (4) :: omp_pause_resource_all 646 1.10 mrg integer (kind=omp_pause_resource_kind), & 647 1.10 mrg intent(in) :: kind 648 1.10 mrg end function 649 1.10 mrg end interface 650 1.10 mrg 651 1.12 mrg interface omp_init_allocator 652 1.12 mrg function omp_init_allocator (memspace, ntraits, traits) 653 1.12 mrg use omp_lib_kinds 654 1.12 mrg integer (kind=omp_allocator_handle_kind) omp_init_allocator 655 1.12 mrg integer (kind=omp_memspace_handle_kind), & 656 1.12 mrg intent(in) :: memspace 657 1.12 mrg integer (4), intent(in) :: ntraits 658 1.12 mrg type (omp_alloctrait), intent(in) :: traits(*) 659 1.12 mrg end function 660 1.12 mrg function omp_init_allocator_8 (memspace, ntraits, traits) 661 1.12 mrg use omp_lib_kinds 662 1.12 mrg integer (kind=omp_allocator_handle_kind) omp_init_allocator_8 663 1.12 mrg integer (kind=omp_memspace_handle_kind), & 664 1.12 mrg intent(in) :: memspace 665 1.12 mrg integer (8), intent(in) :: ntraits 666 1.12 mrg type (omp_alloctrait), intent(in) :: traits(*) 667 1.12 mrg end function 668 1.12 mrg end interface 669 1.12 mrg 670 1.12 mrg interface 671 1.12 mrg subroutine omp_destroy_allocator (allocator) 672 1.12 mrg use omp_lib_kinds 673 1.12 mrg integer (kind=omp_allocator_handle_kind), & 674 1.12 mrg intent(in) :: allocator 675 1.12 mrg end subroutine 676 1.12 mrg end interface 677 1.12 mrg 678 1.12 mrg interface 679 1.12 mrg subroutine omp_set_default_allocator (allocator) 680 1.12 mrg use omp_lib_kinds 681 1.12 mrg integer (kind=omp_allocator_handle_kind), & 682 1.12 mrg intent(in) :: allocator 683 1.12 mrg end subroutine 684 1.12 mrg end interface 685 1.12 mrg 686 1.12 mrg interface 687 1.12 mrg function omp_get_default_allocator () 688 1.12 mrg use omp_lib_kinds 689 1.12 mrg integer (kind=omp_allocator_handle_kind) & 690 1.12 mrg omp_get_default_allocator 691 1.12 mrg end function 692 1.12 mrg end interface 693 1.12 mrg 694 1.12 mrg interface omp_display_env 695 1.12 mrg subroutine omp_display_env (verbose) 696 1.12 mrg logical (4),intent (in) :: verbose 697 1.12 mrg end subroutine omp_display_env 698 1.12 mrg subroutine omp_display_env_8 (verbose) 699 1.12 mrg logical (8),intent (in) :: verbose 700 1.12 mrg end subroutine omp_display_env_8 701 1.12 mrg end interface 702 1.12 mrg 703 1.12 mrg interface 704 1.12 mrg function omp_alloc (size, allocator) bind(c) 705 1.12 mrg use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t 706 1.12 mrg import :: omp_allocator_handle_kind 707 1.12 mrg type(c_ptr) :: omp_alloc 708 1.12 mrg integer(c_size_t), value :: size 709 1.12 mrg integer(omp_allocator_handle_kind), value :: allocator 710 1.12 mrg end function omp_alloc 711 1.12 mrg end interface 712 1.12 mrg 713 1.12 mrg interface 714 1.12 mrg function omp_aligned_alloc (alignment, size, allocator) bind(c) 715 1.12 mrg use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t 716 1.12 mrg import :: omp_allocator_handle_kind 717 1.12 mrg type(c_ptr) :: omp_aligned_alloc 718 1.12 mrg integer(c_size_t), value :: alignment, size 719 1.12 mrg integer(omp_allocator_handle_kind), value :: allocator 720 1.12 mrg end function omp_aligned_alloc 721 1.12 mrg end interface 722 1.12 mrg 723 1.12 mrg interface 724 1.12 mrg subroutine omp_free(ptr, allocator) bind(c) 725 1.12 mrg use, intrinsic :: iso_c_binding, only : c_ptr 726 1.12 mrg import :: omp_allocator_handle_kind 727 1.12 mrg type(c_ptr), value :: ptr 728 1.12 mrg integer(omp_allocator_handle_kind), value :: allocator 729 1.12 mrg end subroutine omp_free 730 1.12 mrg end interface 731 1.12 mrg 732 1.12 mrg interface 733 1.12 mrg function omp_calloc (nmemb, size, allocator) bind(c) 734 1.12 mrg use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t 735 1.12 mrg import :: omp_allocator_handle_kind 736 1.12 mrg type(c_ptr) :: omp_calloc 737 1.12 mrg integer(c_size_t), value :: nmemb, size 738 1.12 mrg integer(omp_allocator_handle_kind), value :: allocator 739 1.12 mrg end function omp_calloc 740 1.12 mrg end interface 741 1.12 mrg 742 1.12 mrg interface 743 1.12 mrg function omp_aligned_calloc (alignment, nmemb, size, allocator) bind(c) 744 1.12 mrg use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t 745 1.12 mrg import :: omp_allocator_handle_kind 746 1.12 mrg type(c_ptr) :: omp_aligned_calloc 747 1.12 mrg integer(c_size_t), value :: alignment, nmemb, size 748 1.12 mrg integer(omp_allocator_handle_kind), value :: allocator 749 1.12 mrg end function omp_aligned_calloc 750 1.12 mrg end interface 751 1.12 mrg 752 1.12 mrg interface 753 1.12 mrg function omp_realloc (ptr, size, allocator, free_allocator) bind(c) 754 1.12 mrg use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t 755 1.12 mrg import :: omp_allocator_handle_kind 756 1.12 mrg type(c_ptr) :: omp_realloc 757 1.12 mrg type(c_ptr), value :: ptr 758 1.12 mrg integer(c_size_t), value :: size 759 1.12 mrg integer(omp_allocator_handle_kind), value :: allocator, free_allocator 760 1.12 mrg end function omp_realloc 761 1.12 mrg end interface 762 1.12 mrg 763 1.12 mrg interface 764 1.12 mrg function omp_target_alloc (size, device_num) bind(c) 765 1.12 mrg use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t, c_int 766 1.12 mrg type(c_ptr) :: omp_target_alloc 767 1.12 mrg integer(c_size_t), value :: size 768 1.12 mrg integer(c_int), value :: device_num 769 1.12 mrg end function omp_target_alloc 770 1.12 mrg end interface 771 1.12 mrg 772 1.12 mrg interface 773 1.12 mrg subroutine omp_target_free (device_ptr, device_num) bind(c) 774 1.12 mrg use, intrinsic :: iso_c_binding, only : c_ptr, c_int 775 1.12 mrg type(c_ptr), value :: device_ptr 776 1.12 mrg integer(c_int), value :: device_num 777 1.12 mrg end subroutine omp_target_free 778 1.12 mrg end interface 779 1.12 mrg 780 1.12 mrg interface 781 1.12 mrg function omp_target_is_present (ptr, device_num) bind(c) 782 1.12 mrg use, intrinsic :: iso_c_binding, only : c_ptr, c_int 783 1.12 mrg integer(c_int) :: omp_target_is_present 784 1.12 mrg type(c_ptr), value :: ptr 785 1.12 mrg integer(c_int), value :: device_num 786 1.12 mrg end function omp_target_is_present 787 1.12 mrg end interface 788 1.12 mrg 789 1.12 mrg interface 790 1.12 mrg function omp_target_memcpy (dst, src, length, dst_offset, & 791 1.12 mrg src_offset, dst_device_num, & 792 1.12 mrg src_device_num) bind(c) 793 1.12 mrg use, intrinsic :: iso_c_binding, only : c_ptr, c_int, c_size_t 794 1.12 mrg integer(c_int) :: omp_target_memcpy 795 1.12 mrg type(c_ptr), value :: dst, src 796 1.12 mrg integer(c_size_t), value :: length, dst_offset, src_offset 797 1.12 mrg integer(c_int), value :: dst_device_num, src_device_num 798 1.12 mrg end function omp_target_memcpy 799 1.12 mrg end interface 800 1.12 mrg 801 1.12 mrg interface 802 1.12 mrg function omp_target_memcpy_rect (dst,src,element_size, num_dims, & 803 1.12 mrg volume, dst_offsets, src_offsets, & 804 1.12 mrg dst_dimensions, src_dimensions, & 805 1.12 mrg dst_device_num, src_device_num) & 806 1.12 mrg bind(c) 807 1.12 mrg use, intrinsic :: iso_c_binding, only : c_ptr, c_int, c_size_t 808 1.12 mrg integer(c_int) :: omp_target_memcpy_rect 809 1.12 mrg type(c_ptr), value :: dst, src 810 1.12 mrg integer(c_size_t), value :: element_size 811 1.12 mrg integer(c_int), value :: num_dims, dst_device_num, src_device_num 812 1.12 mrg integer(c_size_t), intent(in) :: volume(*), dst_offsets(*), & 813 1.12 mrg src_offsets(*), dst_dimensions(*), & 814 1.12 mrg src_dimensions(*) 815 1.12 mrg end function omp_target_memcpy_rect 816 1.12 mrg end interface 817 1.12 mrg 818 1.12 mrg interface 819 1.12 mrg function omp_target_associate_ptr (host_ptr, device_ptr, size, & 820 1.12 mrg device_offset, device_num) bind(c) 821 1.12 mrg use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t, c_int 822 1.12 mrg integer(c_int) :: omp_target_associate_ptr 823 1.12 mrg type(c_ptr), value :: host_ptr, device_ptr 824 1.12 mrg integer(c_size_t), value :: size, device_offset 825 1.12 mrg integer(c_int), value :: device_num 826 1.12 mrg end function omp_target_associate_ptr 827 1.12 mrg end interface 828 1.12 mrg 829 1.12 mrg interface 830 1.12 mrg function omp_target_disassociate_ptr (ptr, device_num) bind(c) 831 1.12 mrg use, intrinsic :: iso_c_binding, only : c_ptr, c_int 832 1.12 mrg integer(c_int) :: omp_target_disassociate_ptr 833 1.12 mrg type(c_ptr), value :: ptr 834 1.12 mrg integer(c_int), value :: device_num 835 1.12 mrg end function omp_target_disassociate_ptr 836 1.12 mrg end interface 837 1.12 mrg 838 1.12 mrg #if _OPENMP >= 201811 839 1.12 mrg !GCC$ ATTRIBUTES DEPRECATED :: omp_get_nested, omp_set_nested 840 1.12 mrg #endif 841 1.12 mrg 842 1.12 mrg #if _OPENMP >= 202011 843 1.12 mrg !GCC$ ATTRIBUTES DEPRECATED :: omp_proc_bind_master, omp_atv_sequential 844 1.12 mrg #endif 845 1.12 mrg 846 1.1 mrg end module omp_lib 847