1! include/omp_lib.f90.var 2 3! 4!//===----------------------------------------------------------------------===// 5!// 6!// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 7!// See https://llvm.org/LICENSE.txt for license information. 8!// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 9!// 10!//===----------------------------------------------------------------------===// 11! 12 13 module omp_lib_kinds 14 15 use, intrinsic :: iso_c_binding 16 17 integer, parameter :: omp_integer_kind = c_int 18 integer, parameter :: omp_logical_kind = 4 19 integer, parameter :: omp_real_kind = c_float 20 integer, parameter :: kmp_double_kind = c_double 21 integer, parameter :: omp_lock_kind = c_intptr_t 22 integer, parameter :: omp_nest_lock_kind = c_intptr_t 23 integer, parameter :: omp_sched_kind = omp_integer_kind 24 integer, parameter :: omp_proc_bind_kind = omp_integer_kind 25 integer, parameter :: kmp_pointer_kind = c_intptr_t 26 integer, parameter :: kmp_size_t_kind = c_size_t 27 integer, parameter :: kmp_affinity_mask_kind = c_intptr_t 28 integer, parameter :: kmp_cancel_kind = omp_integer_kind 29 integer, parameter :: omp_sync_hint_kind = omp_integer_kind 30 integer, parameter :: omp_lock_hint_kind = omp_sync_hint_kind 31 integer, parameter :: omp_control_tool_kind = omp_integer_kind 32 integer, parameter :: omp_control_tool_result_kind = omp_integer_kind 33 integer, parameter :: omp_allocator_handle_kind = c_intptr_t 34 integer, parameter :: omp_memspace_handle_kind = c_intptr_t 35 integer, parameter :: omp_alloctrait_key_kind = omp_integer_kind 36 integer, parameter :: omp_alloctrait_val_kind = c_intptr_t 37 integer, parameter :: omp_interop_kind = c_intptr_t 38 integer, parameter :: omp_interop_fr_kind = omp_integer_kind 39 40 type omp_alloctrait 41 integer(kind=omp_alloctrait_key_kind) key 42 integer(kind=omp_alloctrait_val_kind) value 43 end type omp_alloctrait 44 45 integer, parameter :: omp_pause_resource_kind = omp_integer_kind 46 integer, parameter :: omp_depend_kind = c_intptr_t 47 integer, parameter :: omp_event_handle_kind = c_intptr_t 48 49 end module omp_lib_kinds 50 51 module omp_lib 52 53 use omp_lib_kinds 54 55 integer (kind=omp_integer_kind), parameter :: openmp_version = @LIBOMP_OMP_YEAR_MONTH@ 56 integer (kind=omp_integer_kind), parameter :: kmp_version_major = @LIBOMP_VERSION_MAJOR@ 57 integer (kind=omp_integer_kind), parameter :: kmp_version_minor = @LIBOMP_VERSION_MINOR@ 58 integer (kind=omp_integer_kind), parameter :: kmp_version_build = @LIBOMP_VERSION_BUILD@ 59 character(*) kmp_build_date 60 parameter( kmp_build_date = '@LIBOMP_BUILD_DATE@' ) 61 62 integer(kind=omp_sched_kind), parameter :: omp_sched_static = 1 63 integer(kind=omp_sched_kind), parameter :: omp_sched_dynamic = 2 64 integer(kind=omp_sched_kind), parameter :: omp_sched_guided = 3 65 integer(kind=omp_sched_kind), parameter :: omp_sched_auto = 4 66 integer(kind=omp_sched_kind), parameter :: omp_sched_monotonic = int(Z'80000000', kind=omp_sched_kind) 67 68 integer (kind=omp_proc_bind_kind), parameter :: omp_proc_bind_false = 0 69 integer (kind=omp_proc_bind_kind), parameter :: omp_proc_bind_true = 1 70 integer (kind=omp_proc_bind_kind), parameter :: omp_proc_bind_master = 2 71 integer (kind=omp_proc_bind_kind), parameter :: omp_proc_bind_close = 3 72 integer (kind=omp_proc_bind_kind), parameter :: omp_proc_bind_spread = 4 73 74 integer (kind=kmp_cancel_kind), parameter :: kmp_cancel_parallel = 1 75 integer (kind=kmp_cancel_kind), parameter :: kmp_cancel_loop = 2 76 integer (kind=kmp_cancel_kind), parameter :: kmp_cancel_sections = 3 77 integer (kind=kmp_cancel_kind), parameter :: kmp_cancel_taskgroup = 4 78 79 integer (kind=omp_sync_hint_kind), parameter :: omp_sync_hint_none = 0 80 integer (kind=omp_sync_hint_kind), parameter :: omp_sync_hint_uncontended = 1 81 integer (kind=omp_sync_hint_kind), parameter :: omp_sync_hint_contended = 2 82 integer (kind=omp_sync_hint_kind), parameter :: omp_sync_hint_nonspeculative = 4 83 integer (kind=omp_sync_hint_kind), parameter :: omp_sync_hint_speculative = 8 84 integer (kind=omp_lock_hint_kind), parameter :: omp_lock_hint_none = omp_sync_hint_none 85 integer (kind=omp_lock_hint_kind), parameter :: omp_lock_hint_uncontended = omp_sync_hint_uncontended 86 integer (kind=omp_lock_hint_kind), parameter :: omp_lock_hint_contended = omp_sync_hint_contended 87 integer (kind=omp_lock_hint_kind), parameter :: omp_lock_hint_nonspeculative = omp_sync_hint_nonspeculative 88 integer (kind=omp_lock_hint_kind), parameter :: omp_lock_hint_speculative = omp_sync_hint_speculative 89 integer (kind=omp_lock_hint_kind), parameter :: kmp_lock_hint_hle = 65536 90 integer (kind=omp_lock_hint_kind), parameter :: kmp_lock_hint_rtm = 131072 91 integer (kind=omp_lock_hint_kind), parameter :: kmp_lock_hint_adaptive = 262144 92 93 integer (kind=omp_control_tool_kind), parameter :: omp_control_tool_start = 1 94 integer (kind=omp_control_tool_kind), parameter :: omp_control_tool_pause = 2 95 integer (kind=omp_control_tool_kind), parameter :: omp_control_tool_flush = 3 96 integer (kind=omp_control_tool_kind), parameter :: omp_control_tool_end = 4 97 98 integer (kind=omp_control_tool_result_kind), parameter :: omp_control_tool_notool = -2 99 integer (kind=omp_control_tool_result_kind), parameter :: omp_control_tool_nocallback = -1 100 integer (kind=omp_control_tool_result_kind), parameter :: omp_control_tool_success = 0 101 integer (kind=omp_control_tool_result_kind), parameter :: omp_control_tool_ignored = 1 102 103 integer (kind=omp_alloctrait_key_kind), parameter :: omp_atk_sync_hint = 1 104 integer (kind=omp_alloctrait_key_kind), parameter :: omp_atk_alignment = 2 105 integer (kind=omp_alloctrait_key_kind), parameter :: omp_atk_access = 3 106 integer (kind=omp_alloctrait_key_kind), parameter :: omp_atk_pool_size = 4 107 integer (kind=omp_alloctrait_key_kind), parameter :: omp_atk_fallback = 5 108 integer (kind=omp_alloctrait_key_kind), parameter :: omp_atk_fb_data = 6 109 integer (kind=omp_alloctrait_key_kind), parameter :: omp_atk_pinned = 7 110 integer (kind=omp_alloctrait_key_kind), parameter :: omp_atk_partition = 8 111 112 integer (kind=omp_alloctrait_val_kind), parameter :: omp_atv_default = -1 113 integer (kind=omp_alloctrait_val_kind), parameter :: omp_atv_false = 0 114 integer (kind=omp_alloctrait_val_kind), parameter :: omp_atv_true = 1 115 integer (kind=omp_alloctrait_val_kind), parameter :: omp_atv_contended = 3 116 integer (kind=omp_alloctrait_val_kind), parameter :: omp_atv_uncontended = 4 117 integer (kind=omp_alloctrait_val_kind), parameter :: omp_atv_serialized = 5 118 integer (kind=omp_alloctrait_val_kind), parameter :: omp_atv_sequential = omp_atv_serialized 119 integer (kind=omp_alloctrait_val_kind), parameter :: omp_atv_private = 6 120 integer (kind=omp_alloctrait_val_kind), parameter :: omp_atv_all = 7 121 integer (kind=omp_alloctrait_val_kind), parameter :: omp_atv_thread = 8 122 integer (kind=omp_alloctrait_val_kind), parameter :: omp_atv_pteam = 9 123 integer (kind=omp_alloctrait_val_kind), parameter :: omp_atv_cgroup = 10 124 integer (kind=omp_alloctrait_val_kind), parameter :: omp_atv_default_mem_fb = 11 125 integer (kind=omp_alloctrait_val_kind), parameter :: omp_atv_null_fb = 12 126 integer (kind=omp_alloctrait_val_kind), parameter :: omp_atv_abort_fb = 13 127 integer (kind=omp_alloctrait_val_kind), parameter :: omp_atv_allocator_fb = 14 128 integer (kind=omp_alloctrait_val_kind), parameter :: omp_atv_environment = 15 129 integer (kind=omp_alloctrait_val_kind), parameter :: omp_atv_nearest = 16 130 integer (kind=omp_alloctrait_val_kind), parameter :: omp_atv_blocked = 17 131 integer (kind=omp_alloctrait_val_kind), parameter :: omp_atv_interleaved = 18 132 133 integer (kind=omp_allocator_handle_kind), parameter :: omp_null_allocator = 0 134 integer (kind=omp_allocator_handle_kind), parameter :: omp_default_mem_alloc = 1 135 integer (kind=omp_allocator_handle_kind), parameter :: omp_large_cap_mem_alloc = 2 136 integer (kind=omp_allocator_handle_kind), parameter :: omp_const_mem_alloc = 3 137 integer (kind=omp_allocator_handle_kind), parameter :: omp_high_bw_mem_alloc = 4 138 integer (kind=omp_allocator_handle_kind), parameter :: omp_low_lat_mem_alloc = 5 139 integer (kind=omp_allocator_handle_kind), parameter :: omp_cgroup_mem_alloc = 6 140 integer (kind=omp_allocator_handle_kind), parameter :: omp_pteam_mem_alloc = 7 141 integer (kind=omp_allocator_handle_kind), parameter :: omp_thread_mem_alloc = 8 142 ! Preview of target memory support 143 integer (kind=omp_allocator_handle_kind), parameter :: llvm_omp_target_host_mem_alloc = 100 144 integer (kind=omp_allocator_handle_kind), parameter :: llvm_omp_target_shared_mem_alloc = 101 145 integer (kind=omp_allocator_handle_kind), parameter :: llvm_omp_target_device_mem_alloc = 102 146 147 integer (kind=omp_memspace_handle_kind), parameter :: omp_default_mem_space = 0 148 integer (kind=omp_memspace_handle_kind), parameter :: omp_large_cap_mem_space = 1 149 integer (kind=omp_memspace_handle_kind), parameter :: omp_const_mem_space = 2 150 integer (kind=omp_memspace_handle_kind), parameter :: omp_high_bw_mem_space = 3 151 integer (kind=omp_memspace_handle_kind), parameter :: omp_low_lat_mem_space = 4 152 ! Preview of target memory support 153 integer (kind=omp_memspace_handle_kind), parameter :: llvm_omp_target_host_mem_space = 100 154 integer (kind=omp_memspace_handle_kind), parameter :: llvm_omp_target_shared_mem_space = 101 155 integer (kind=omp_memspace_handle_kind), parameter :: llvm_omp_target_device_mem_space = 102 156 157 integer (kind=omp_pause_resource_kind), parameter :: omp_pause_resume = 0 158 integer (kind=omp_pause_resource_kind), parameter :: omp_pause_soft = 1 159 integer (kind=omp_pause_resource_kind), parameter :: omp_pause_hard = 2 160 161 integer (kind=omp_interop_fr_kind), parameter :: omp_ifr_cuda = 1 162 integer (kind=omp_interop_fr_kind), parameter :: omp_ifr_cuda_driver = 2 163 integer (kind=omp_interop_fr_kind), parameter :: omp_ifr_opencl = 3 164 integer (kind=omp_interop_fr_kind), parameter :: omp_ifr_sycl = 4 165 integer (kind=omp_interop_fr_kind), parameter :: omp_ifr_hip = 5 166 integer (kind=omp_interop_fr_kind), parameter :: omp_ifr_level_zero = 6 167 integer (kind=omp_interop_fr_kind), parameter :: omp_ifr_last = 7 168 169 integer (kind=omp_interop_kind), parameter :: omp_interop_none = 0 170 171 interface 172 173! *** 174! *** omp_* entry points 175! *** 176 177 subroutine omp_set_num_threads(num_threads) bind(c) 178 use omp_lib_kinds 179 integer (kind=omp_integer_kind), value :: num_threads 180 end subroutine omp_set_num_threads 181 182 subroutine omp_set_dynamic(dynamic_threads) bind(c) 183 use omp_lib_kinds 184 logical (kind=omp_logical_kind), value :: dynamic_threads 185 end subroutine omp_set_dynamic 186 187 subroutine omp_set_nested(nested) bind(c) 188 use omp_lib_kinds 189 logical (kind=omp_logical_kind), value :: nested 190 end subroutine omp_set_nested 191 192 function omp_get_num_threads() bind(c) 193 use omp_lib_kinds 194 integer (kind=omp_integer_kind) omp_get_num_threads 195 end function omp_get_num_threads 196 197 function omp_get_max_threads() bind(c) 198 use omp_lib_kinds 199 integer (kind=omp_integer_kind) omp_get_max_threads 200 end function omp_get_max_threads 201 202 function omp_get_thread_num() bind(c) 203 use omp_lib_kinds 204 integer (kind=omp_integer_kind) omp_get_thread_num 205 end function omp_get_thread_num 206 207 function omp_get_num_procs() bind(c) 208 use omp_lib_kinds 209 integer (kind=omp_integer_kind) omp_get_num_procs 210 end function omp_get_num_procs 211 212 function omp_in_parallel() bind(c) 213 use omp_lib_kinds 214 logical (kind=omp_logical_kind) omp_in_parallel 215 end function omp_in_parallel 216 217 function omp_in_final() bind(c) 218 use omp_lib_kinds 219 logical (kind=omp_logical_kind) omp_in_final 220 end function omp_in_final 221 222 function omp_get_dynamic() bind(c) 223 use omp_lib_kinds 224 logical (kind=omp_logical_kind) omp_get_dynamic 225 end function omp_get_dynamic 226 227 function omp_get_nested() bind(c) 228 use omp_lib_kinds 229 logical (kind=omp_logical_kind) omp_get_nested 230 end function omp_get_nested 231 232 function omp_get_thread_limit() bind(c) 233 use omp_lib_kinds 234 integer (kind=omp_integer_kind) omp_get_thread_limit 235 end function omp_get_thread_limit 236 237 subroutine omp_set_max_active_levels(max_levels) bind(c) 238 use omp_lib_kinds 239 integer (kind=omp_integer_kind), value :: max_levels 240 end subroutine omp_set_max_active_levels 241 242 function omp_get_max_active_levels() bind(c) 243 use omp_lib_kinds 244 integer (kind=omp_integer_kind) omp_get_max_active_levels 245 end function omp_get_max_active_levels 246 247 function omp_get_level() bind(c) 248 use omp_lib_kinds 249 integer (kind=omp_integer_kind) omp_get_level 250 end function omp_get_level 251 252 function omp_get_active_level() bind(c) 253 use omp_lib_kinds 254 integer (kind=omp_integer_kind) omp_get_active_level 255 end function omp_get_active_level 256 257 function omp_get_ancestor_thread_num(level) bind(c) 258 use omp_lib_kinds 259 integer (kind=omp_integer_kind) omp_get_ancestor_thread_num 260 integer (kind=omp_integer_kind), value :: level 261 end function omp_get_ancestor_thread_num 262 263 function omp_get_team_size(level) bind(c) 264 use omp_lib_kinds 265 integer (kind=omp_integer_kind) omp_get_team_size 266 integer (kind=omp_integer_kind), value :: level 267 end function omp_get_team_size 268 269 subroutine omp_set_schedule(kind, chunk_size) bind(c) 270 use omp_lib_kinds 271 integer (kind=omp_sched_kind), value :: kind 272 integer (kind=omp_integer_kind), value :: chunk_size 273 end subroutine omp_set_schedule 274 275 subroutine omp_get_schedule(kind, chunk_size) bind(c) 276 use omp_lib_kinds 277 integer (kind=omp_sched_kind) kind 278 integer (kind=omp_integer_kind) chunk_size 279 end subroutine omp_get_schedule 280 281 function omp_get_proc_bind() bind(c) 282 use omp_lib_kinds 283 integer (kind=omp_proc_bind_kind) omp_get_proc_bind 284 end function omp_get_proc_bind 285 286 function omp_get_num_places() bind(c) 287 use omp_lib_kinds 288 integer (kind=omp_integer_kind) omp_get_num_places 289 end function omp_get_num_places 290 291 function omp_get_place_num_procs(place_num) bind(c) 292 use omp_lib_kinds 293 integer (kind=omp_integer_kind), value :: place_num 294 integer (kind=omp_integer_kind) omp_get_place_num_procs 295 end function omp_get_place_num_procs 296 297 subroutine omp_get_place_proc_ids(place_num, ids) bind(c) 298 use omp_lib_kinds 299 integer (kind=omp_integer_kind), value :: place_num 300 integer (kind=omp_integer_kind) ids(*) 301 end subroutine omp_get_place_proc_ids 302 303 function omp_get_place_num() bind(c) 304 use omp_lib_kinds 305 integer (kind=omp_integer_kind) omp_get_place_num 306 end function omp_get_place_num 307 308 function omp_get_partition_num_places() bind(c) 309 use omp_lib_kinds 310 integer (kind=omp_integer_kind) omp_get_partition_num_places 311 end function omp_get_partition_num_places 312 313 subroutine omp_get_partition_place_nums(place_nums) bind(c) 314 use omp_lib_kinds 315 integer (kind=omp_integer_kind) place_nums(*) 316 end subroutine omp_get_partition_place_nums 317 318 function omp_get_wtime() bind(c) 319 use omp_lib_kinds 320 real (kind=kmp_double_kind) omp_get_wtime 321 end function omp_get_wtime 322 323 function omp_get_wtick() bind(c) 324 use omp_lib_kinds 325 real (kind=kmp_double_kind) omp_get_wtick 326 end function omp_get_wtick 327 328 function omp_get_default_device() bind(c) 329 use omp_lib_kinds 330 integer (kind=omp_integer_kind) omp_get_default_device 331 end function omp_get_default_device 332 333 subroutine omp_set_default_device(device_num) bind(c) 334 use omp_lib_kinds 335 integer (kind=omp_integer_kind), value :: device_num 336 end subroutine omp_set_default_device 337 338 function omp_get_num_devices() bind(c) 339 use omp_lib_kinds 340 integer (kind=omp_integer_kind) omp_get_num_devices 341 end function omp_get_num_devices 342 343 function omp_get_num_teams() bind(c) 344 use omp_lib_kinds 345 integer (kind=omp_integer_kind) omp_get_num_teams 346 end function omp_get_num_teams 347 348 function omp_get_team_num() bind(c) 349 use omp_lib_kinds 350 integer (kind=omp_integer_kind) omp_get_team_num 351 end function omp_get_team_num 352 353 function omp_get_cancellation() bind(c) 354 use omp_lib_kinds 355 integer (kind=omp_integer_kind) omp_get_cancellation 356 end function omp_get_cancellation 357 358 function omp_is_initial_device() bind(c) 359 use omp_lib_kinds 360 logical (kind=omp_logical_kind) omp_is_initial_device 361 end function omp_is_initial_device 362 363 function omp_get_initial_device() bind(c) 364 use omp_lib_kinds 365 integer (kind=omp_integer_kind) omp_get_initial_device 366 end function omp_get_initial_device 367 368 function omp_get_device_num() bind(c) 369 use omp_lib_kinds 370 integer (kind=omp_integer_kind) omp_get_device_num 371 end function omp_get_device_num 372 373 function omp_pause_resource(kind, device_num) bind(c) 374 use omp_lib_kinds 375 integer (kind=omp_pause_resource_kind), value :: kind 376 integer (kind=omp_integer_kind), value :: device_num 377 integer (kind=omp_integer_kind) omp_pause_resource 378 end function omp_pause_resource 379 380 function omp_pause_resource_all(kind) bind(c) 381 use omp_lib_kinds 382 integer (kind=omp_pause_resource_kind), value :: kind 383 integer (kind=omp_integer_kind) omp_pause_resource_all 384 end function omp_pause_resource_all 385 386 function omp_get_supported_active_levels() bind(c) 387 use omp_lib_kinds 388 integer (kind=omp_integer_kind) omp_get_supported_active_levels 389 end function omp_get_supported_active_levels 390 391 subroutine omp_fulfill_event(event) bind(c) 392 use omp_lib_kinds 393 integer (kind=omp_event_handle_kind), value :: event 394 end subroutine omp_fulfill_event 395 396 subroutine omp_init_lock(svar) bind(c) 397!DIR$ IF(__INTEL_COMPILER.GE.1400) 398!DIR$ attributes known_intrinsic :: omp_init_lock 399!DIR$ ENDIF 400 use omp_lib_kinds 401 integer (kind=omp_lock_kind) svar 402 end subroutine omp_init_lock 403 404 subroutine omp_destroy_lock(svar) bind(c) 405!DIR$ IF(__INTEL_COMPILER.GE.1400) 406!DIR$ attributes known_intrinsic :: omp_destroy_lock 407!DIR$ ENDIF 408 use omp_lib_kinds 409 integer (kind=omp_lock_kind) svar 410 end subroutine omp_destroy_lock 411 412 subroutine omp_set_lock(svar) bind(c) 413!DIR$ IF(__INTEL_COMPILER.GE.1400) 414!DIR$ attributes known_intrinsic :: omp_set_lock 415!DIR$ ENDIF 416 use omp_lib_kinds 417 integer (kind=omp_lock_kind) svar 418 end subroutine omp_set_lock 419 420 subroutine omp_unset_lock(svar) bind(c) 421!DIR$ IF(__INTEL_COMPILER.GE.1400) 422!DIR$ attributes known_intrinsic :: omp_unset_lock 423!DIR$ ENDIF 424 use omp_lib_kinds 425 integer (kind=omp_lock_kind) svar 426 end subroutine omp_unset_lock 427 428 function omp_test_lock(svar) bind(c) 429!DIR$ IF(__INTEL_COMPILER.GE.1400) 430!DIR$ attributes known_intrinsic :: omp_test_lock 431!DIR$ ENDIF 432 use omp_lib_kinds 433 logical (kind=omp_logical_kind) omp_test_lock 434 integer (kind=omp_lock_kind) svar 435 end function omp_test_lock 436 437 subroutine omp_init_nest_lock(nvar) bind(c) 438!DIR$ IF(__INTEL_COMPILER.GE.1400) 439!DIR$ attributes known_intrinsic :: omp_init_nest_lock 440!DIR$ ENDIF 441 use omp_lib_kinds 442 integer (kind=omp_nest_lock_kind) nvar 443 end subroutine omp_init_nest_lock 444 445 subroutine omp_destroy_nest_lock(nvar) bind(c) 446!DIR$ IF(__INTEL_COMPILER.GE.1400) 447!DIR$ attributes known_intrinsic :: omp_destroy_nest_lock 448!DIR$ ENDIF 449 use omp_lib_kinds 450 integer (kind=omp_nest_lock_kind) nvar 451 end subroutine omp_destroy_nest_lock 452 453 subroutine omp_set_nest_lock(nvar) bind(c) 454!DIR$ IF(__INTEL_COMPILER.GE.1400) 455!DIR$ attributes known_intrinsic :: omp_set_nest_lock 456!DIR$ ENDIF 457 use omp_lib_kinds 458 integer (kind=omp_nest_lock_kind) nvar 459 end subroutine omp_set_nest_lock 460 461 subroutine omp_unset_nest_lock(nvar) bind(c) 462!DIR$ IF(__INTEL_COMPILER.GE.1400) 463!DIR$ attributes known_intrinsic :: omp_unset_nest_lock 464!DIR$ ENDIF 465 use omp_lib_kinds 466 integer (kind=omp_nest_lock_kind) nvar 467 end subroutine omp_unset_nest_lock 468 469 function omp_test_nest_lock(nvar) bind(c) 470!DIR$ IF(__INTEL_COMPILER.GE.1400) 471!DIR$ attributes known_intrinsic :: omp_test_nest_lock 472!DIR$ ENDIF 473 use omp_lib_kinds 474 integer (kind=omp_integer_kind) omp_test_nest_lock 475 integer (kind=omp_nest_lock_kind) nvar 476 end function omp_test_nest_lock 477 478 function omp_get_max_task_priority() bind(c) 479 use omp_lib_kinds 480 integer (kind=omp_integer_kind) omp_get_max_task_priority 481 end function omp_get_max_task_priority 482 483 function omp_init_allocator(memspace, ntraits, traits) 484 use omp_lib_kinds 485 integer (kind=omp_allocator_handle_kind) omp_init_allocator 486 integer (kind=omp_memspace_handle_kind) :: memspace 487 integer (kind=omp_integer_kind) :: ntraits 488 type(omp_alloctrait), intent(in) :: traits(*) 489 end function omp_init_allocator 490 491 subroutine omp_destroy_allocator(allocator) bind(c) 492 use omp_lib_kinds 493 integer (kind=omp_allocator_handle_kind), value :: allocator 494 end subroutine omp_destroy_allocator 495 496 subroutine omp_set_default_allocator(allocator) bind(c) 497 use omp_lib_kinds 498 integer (kind=omp_allocator_handle_kind), value :: allocator 499 end subroutine omp_set_default_allocator 500 501 function omp_get_default_allocator() bind(c) 502 use omp_lib_kinds 503 integer (kind=omp_allocator_handle_kind) omp_get_default_allocator 504 end function omp_get_default_allocator 505 506 subroutine omp_set_affinity_format(format) 507 character (len=*) :: format 508 end subroutine omp_set_affinity_format 509 510 function omp_get_affinity_format(buffer) 511 use omp_lib_kinds 512 character (len=*) :: buffer 513 integer (kind=kmp_size_t_kind) :: omp_get_affinity_format 514 end function omp_get_affinity_format 515 516 subroutine omp_display_affinity(format) 517 character (len=*) :: format 518 end subroutine omp_display_affinity 519 520 function omp_capture_affinity(buffer, format) 521 use omp_lib_kinds 522 character (len=*) :: format 523 character (len=*) :: buffer 524 integer (kind=kmp_size_t_kind) :: omp_capture_affinity 525 end function omp_capture_affinity 526 527 subroutine omp_set_num_teams(num_teams) bind(c) 528 use omp_lib_kinds 529 integer (kind=omp_integer_kind), value :: num_teams 530 end subroutine omp_set_num_teams 531 532 function omp_get_max_teams() bind(c) 533 use omp_lib_kinds 534 integer (kind=omp_integer_kind) omp_get_max_teams 535 end function omp_get_max_teams 536 537 subroutine omp_set_teams_thread_limit(thread_limit) bind(c) 538 use omp_lib_kinds 539 integer (kind=omp_integer_kind), value :: thread_limit 540 end subroutine omp_set_teams_thread_limit 541 542 function omp_get_teams_thread_limit() bind(c) 543 use omp_lib_kinds 544 integer (kind=omp_integer_kind) omp_get_teams_thread_limit 545 end function omp_get_teams_thread_limit 546 547 subroutine omp_display_env(verbose) bind(c) 548 use omp_lib_kinds 549 logical (kind=omp_logical_kind), value :: verbose 550 end subroutine omp_display_env 551 552 553 function omp_target_alloc(size, device_num) bind(c) 554 use omp_lib_kinds 555 type(c_ptr) omp_target_alloc 556 integer(c_size_t), value :: size 557 integer(c_int), value :: device_num 558 end function omp_target_alloc 559 560 subroutine omp_target_free(device_ptr, device_num) bind(c) 561 use omp_lib_kinds 562 type(c_ptr), value :: device_ptr 563 integer(c_int), value :: device_num 564 end subroutine omp_target_free 565 566 function omp_target_is_present(ptr, device_num) bind(c) 567 use omp_lib_kinds 568 integer(c_int) omp_target_is_present 569 type(c_ptr), value :: ptr 570 integer(c_int), value :: device_num 571 end function omp_target_is_present 572 573 function omp_target_memcpy(dst, src, length, dst_offset, src_offset, & 574 dst_device_num, src_device_num) bind(c) 575 use omp_lib_kinds 576 integer(c_int) omp_target_memcpy 577 type(c_ptr), value :: dst, src 578 integer(c_size_t), value :: length, dst_offset, src_offset 579 integer(c_int), value :: dst_device_num, src_device_num 580 end function omp_target_memcpy 581 582 function omp_target_memcpy_rect(dst, src, element_size, num_dims, & 583 volume, dst_offsets, src_offsets, dst_dimensions, & 584 src_dimensions, dst_device_num, src_device_num) bind(c) 585 use omp_lib_kinds 586 integer(c_int) omp_target_memcpy_rect 587 type(c_ptr), value :: dst, src 588 integer(c_size_t), value :: element_size 589 integer(c_int), value :: num_dims, dst_device_num, src_device_num 590 integer(c_size_t), intent(in) :: volume(*), dst_offsets(*), & 591 src_offsets(*), dst_dimensions(*), src_dimensions(*) 592 end function omp_target_memcpy_rect 593 594 function omp_target_memcpy_async(dst, src, length, dst_offset, & 595 src_offset, dst_device_num, src_device_num, depobj_count, & 596 depobj_list) bind(c) 597 use omp_lib_kinds 598 integer(c_int) omp_target_memcpy_async 599 type(c_ptr), value :: dst, src 600 integer(c_size_t), value :: length, dst_offset, src_offset 601 integer(c_int), value :: dst_device_num, src_device_num, & 602 depobj_count 603 integer(omp_depend_kind), optional :: depobj_list(*) 604 end function omp_target_memcpy_async 605 606 function omp_target_memcpy_rect_async(dst, src, element_size, & 607 num_dims, volume, dst_offsets, src_offsets, dst_dimensions, & 608 src_dimensions, dst_device_num, src_device_num, depobj_count, & 609 depobj_list) bind(c) 610 use omp_lib_kinds 611 integer(c_int) omp_target_memcpy_rect_async 612 type(c_ptr), value :: dst, src 613 integer(c_size_t), value :: element_size 614 integer(c_int), value :: num_dims, dst_device_num, src_device_num, & 615 depobj_count 616 integer(c_size_t), intent(in) :: volume(*), dst_offsets(*), & 617 src_offsets(*), dst_dimensions(*), src_dimensions(*) 618 integer (omp_depend_kind), optional :: depobj_list(*) 619 end function omp_target_memcpy_rect_async 620 621 function omp_target_associate_ptr(host_ptr, device_ptr, size, & 622 device_offset, device_num) bind(c) 623 use omp_lib_kinds 624 integer(c_int) omp_target_associate_ptr 625 type(c_ptr), value :: host_ptr, device_ptr 626 integer(c_size_t), value :: size, device_offset 627 integer(c_int), value :: device_num 628 end function omp_target_associate_ptr 629 630 function omp_get_mapped_ptr(ptr, device_num) bind(c) 631 use omp_lib_kinds 632 type(c_ptr) omp_get_mapped_ptr 633 type(c_ptr), value :: ptr 634 integer(c_int), value :: device_num 635 end function omp_get_mapped_ptr 636 637 function omp_target_disassociate_ptr(ptr, device_num) bind(c) 638 use omp_lib_kinds 639 integer(c_int) omp_target_disassociate_ptr 640 type(c_ptr), value :: ptr 641 integer(c_int), value :: device_num 642 end function omp_target_disassociate_ptr 643 644 function omp_target_is_accessible(ptr, size, device_num) bind(c) 645 use omp_lib_kinds 646 use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t, c_int 647 integer(c_int) omp_target_is_accessible 648 type(c_ptr), value :: ptr 649 integer(c_size_t), value :: size 650 integer(c_int), value :: device_num 651 end function omp_target_is_accessible 652 653 function omp_alloc(size, allocator) bind(c) 654 use omp_lib_kinds 655 use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t 656 type(c_ptr) omp_alloc 657 integer(c_size_t), value :: size 658 integer(omp_allocator_handle_kind), value :: allocator 659 end function omp_alloc 660 661 function omp_aligned_alloc(alignment, size, allocator) bind(c) 662 use omp_lib_kinds 663 use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t 664 type(c_ptr) omp_aligned_alloc 665 integer(c_size_t), value :: alignment, size 666 integer(omp_allocator_handle_kind), value :: allocator 667 end function omp_aligned_alloc 668 669 function omp_calloc(nmemb, size, allocator) bind(c) 670 use omp_lib_kinds 671 use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t 672 type(c_ptr) omp_calloc 673 integer(c_size_t), value :: nmemb, size 674 integer(omp_allocator_handle_kind), value :: allocator 675 end function omp_calloc 676 677 function omp_aligned_calloc(alignment, nmemb, size, allocator) bind(c) 678 use omp_lib_kinds 679 use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t 680 type(c_ptr) omp_aligned_calloc 681 integer(c_size_t), value :: alignment, nmemb, size 682 integer(omp_allocator_handle_kind), value :: allocator 683 end function omp_aligned_calloc 684 685 function omp_realloc(ptr, size, allocator, free_allocator) bind(c) 686 use omp_lib_kinds 687 use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t 688 type(c_ptr) omp_realloc 689 type(c_ptr), value :: ptr 690 integer(c_size_t), value :: size 691 integer(omp_allocator_handle_kind), value :: allocator 692 integer(omp_allocator_handle_kind), value :: free_allocator 693 end function omp_realloc 694 695 subroutine omp_free(ptr, allocator) bind(c) 696 use omp_lib_kinds 697 use, intrinsic :: iso_c_binding, only : c_ptr 698 type(c_ptr), value :: ptr 699 integer(omp_allocator_handle_kind), value :: allocator 700 end subroutine omp_free 701 702! *** 703! *** kmp_* entry points 704! *** 705 706 subroutine kmp_set_stacksize(size) bind(c) 707 use omp_lib_kinds 708 integer (kind=omp_integer_kind), value :: size 709 end subroutine kmp_set_stacksize 710 711 subroutine kmp_set_stacksize_s(size) bind(c) 712 use omp_lib_kinds 713 integer (kind=kmp_size_t_kind), value :: size 714 end subroutine kmp_set_stacksize_s 715 716 subroutine kmp_set_blocktime(msec) bind(c) 717 use omp_lib_kinds 718 integer (kind=omp_integer_kind), value :: msec 719 end subroutine kmp_set_blocktime 720 721 subroutine kmp_set_library_serial() bind(c) 722 end subroutine kmp_set_library_serial 723 724 subroutine kmp_set_library_turnaround() bind(c) 725 end subroutine kmp_set_library_turnaround 726 727 subroutine kmp_set_library_throughput() bind(c) 728 end subroutine kmp_set_library_throughput 729 730 subroutine kmp_set_library(libnum) bind(c) 731 use omp_lib_kinds 732 integer (kind=omp_integer_kind), value :: libnum 733 end subroutine kmp_set_library 734 735 subroutine kmp_set_defaults(string) bind(c) 736 use, intrinsic :: iso_c_binding 737 character (kind=c_char) :: string(*) 738 end subroutine kmp_set_defaults 739 740 function kmp_get_stacksize() bind(c) 741 use omp_lib_kinds 742 integer (kind=omp_integer_kind) kmp_get_stacksize 743 end function kmp_get_stacksize 744 745 function kmp_get_stacksize_s() bind(c) 746 use omp_lib_kinds 747 integer (kind=kmp_size_t_kind) kmp_get_stacksize_s 748 end function kmp_get_stacksize_s 749 750 function kmp_get_blocktime() bind(c) 751 use omp_lib_kinds 752 integer (kind=omp_integer_kind) kmp_get_blocktime 753 end function kmp_get_blocktime 754 755 function kmp_get_library() bind(c) 756 use omp_lib_kinds 757 integer (kind=omp_integer_kind) kmp_get_library 758 end function kmp_get_library 759 760 subroutine kmp_set_disp_num_buffers(num) bind(c) 761 use omp_lib_kinds 762 integer (kind=omp_integer_kind), value :: num 763 end subroutine kmp_set_disp_num_buffers 764 765 function kmp_set_affinity(mask) bind(c) 766 use omp_lib_kinds 767 integer (kind=omp_integer_kind) kmp_set_affinity 768 integer (kind=kmp_affinity_mask_kind) mask 769 end function kmp_set_affinity 770 771 function kmp_get_affinity(mask) bind(c) 772 use omp_lib_kinds 773 integer (kind=omp_integer_kind) kmp_get_affinity 774 integer (kind=kmp_affinity_mask_kind) mask 775 end function kmp_get_affinity 776 777 function kmp_get_affinity_max_proc() bind(c) 778 use omp_lib_kinds 779 integer (kind=omp_integer_kind) kmp_get_affinity_max_proc 780 end function kmp_get_affinity_max_proc 781 782 subroutine kmp_create_affinity_mask(mask) bind(c) 783 use omp_lib_kinds 784 integer (kind=kmp_affinity_mask_kind) mask 785 end subroutine kmp_create_affinity_mask 786 787 subroutine kmp_destroy_affinity_mask(mask) bind(c) 788 use omp_lib_kinds 789 integer (kind=kmp_affinity_mask_kind) mask 790 end subroutine kmp_destroy_affinity_mask 791 792 function kmp_set_affinity_mask_proc(proc, mask) bind(c) 793 use omp_lib_kinds 794 integer (kind=omp_integer_kind) kmp_set_affinity_mask_proc 795 integer (kind=omp_integer_kind), value :: proc 796 integer (kind=kmp_affinity_mask_kind) mask 797 end function kmp_set_affinity_mask_proc 798 799 function kmp_unset_affinity_mask_proc(proc, mask) bind(c) 800 use omp_lib_kinds 801 integer (kind=omp_integer_kind) kmp_unset_affinity_mask_proc 802 integer (kind=omp_integer_kind), value :: proc 803 integer (kind=kmp_affinity_mask_kind) mask 804 end function kmp_unset_affinity_mask_proc 805 806 function kmp_get_affinity_mask_proc(proc, mask) bind(c) 807 use omp_lib_kinds 808 integer (kind=omp_integer_kind) kmp_get_affinity_mask_proc 809 integer (kind=omp_integer_kind), value :: proc 810 integer (kind=kmp_affinity_mask_kind) mask 811 end function kmp_get_affinity_mask_proc 812 813 function kmp_malloc(size) bind(c) 814 use omp_lib_kinds 815 integer (kind=kmp_pointer_kind) kmp_malloc 816 integer (kind=kmp_size_t_kind), value :: size 817 end function kmp_malloc 818 819 function kmp_aligned_malloc(size, alignment) bind(c) 820 use omp_lib_kinds 821 integer (kind=kmp_pointer_kind) kmp_aligned_malloc 822 integer (kind=kmp_size_t_kind), value :: size 823 integer (kind=kmp_size_t_kind), value :: alignment 824 end function kmp_aligned_malloc 825 826 function kmp_calloc(nelem, elsize) bind(c) 827 use omp_lib_kinds 828 integer (kind=kmp_pointer_kind) kmp_calloc 829 integer (kind=kmp_size_t_kind), value :: nelem 830 integer (kind=kmp_size_t_kind), value :: elsize 831 end function kmp_calloc 832 833 function kmp_realloc(ptr, size) bind(c) 834 use omp_lib_kinds 835 integer (kind=kmp_pointer_kind) kmp_realloc 836 integer (kind=kmp_pointer_kind), value :: ptr 837 integer (kind=kmp_size_t_kind), value :: size 838 end function kmp_realloc 839 840 subroutine kmp_free(ptr) bind(c) 841 use omp_lib_kinds 842 integer (kind=kmp_pointer_kind), value :: ptr 843 end subroutine kmp_free 844 845 subroutine kmp_set_warnings_on() bind(c) 846 end subroutine kmp_set_warnings_on 847 848 subroutine kmp_set_warnings_off() bind(c) 849 end subroutine kmp_set_warnings_off 850 851 function kmp_get_cancellation_status(cancelkind) bind(c) 852 use omp_lib_kinds 853 integer (kind=kmp_cancel_kind), value :: cancelkind 854 logical (kind=omp_logical_kind) kmp_get_cancellation_status 855 end function kmp_get_cancellation_status 856 857 subroutine omp_init_lock_with_hint(svar, hint) bind(c) 858 use omp_lib_kinds 859 integer (kind=omp_lock_kind) svar 860 integer (kind=omp_lock_hint_kind), value :: hint 861 end subroutine omp_init_lock_with_hint 862 863 subroutine omp_init_nest_lock_with_hint(nvar, hint) bind(c) 864 use omp_lib_kinds 865 integer (kind=omp_nest_lock_kind) nvar 866 integer (kind=omp_lock_hint_kind), value :: hint 867 end subroutine omp_init_nest_lock_with_hint 868 869 function omp_control_tool(command, modifier, arg) bind(c) 870 use omp_lib_kinds 871 integer (kind=omp_integer_kind) omp_control_tool 872 integer (kind=omp_control_tool_kind), value :: command 873 integer (kind=omp_control_tool_kind), value :: modifier 874 integer (kind=kmp_pointer_kind), optional :: arg 875 end function omp_control_tool 876 877 end interface 878 879 end module omp_lib 880