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 integer (kind=omp_allocator_handle_kind), parameter :: llvm_omp_target_host_mem_alloc = 100 143 integer (kind=omp_allocator_handle_kind), parameter :: llvm_omp_target_shared_mem_alloc = 101 144 integer (kind=omp_allocator_handle_kind), parameter :: llvm_omp_target_device_mem_alloc = 102 145 146 integer (kind=omp_memspace_handle_kind), parameter :: omp_default_mem_space = 0 147 integer (kind=omp_memspace_handle_kind), parameter :: omp_large_cap_mem_space = 1 148 integer (kind=omp_memspace_handle_kind), parameter :: omp_const_mem_space = 2 149 integer (kind=omp_memspace_handle_kind), parameter :: omp_high_bw_mem_space = 3 150 integer (kind=omp_memspace_handle_kind), parameter :: omp_low_lat_mem_space = 4 151 integer (kind=omp_memspace_handle_kind), parameter :: llvm_omp_target_host_mem_space = 100 152 integer (kind=omp_memspace_handle_kind), parameter :: llvm_omp_target_shared_mem_space = 101 153 integer (kind=omp_memspace_handle_kind), parameter :: llvm_omp_target_device_mem_space = 102 154 155 integer (kind=omp_pause_resource_kind), parameter :: omp_pause_resume = 0 156 integer (kind=omp_pause_resource_kind), parameter :: omp_pause_soft = 1 157 integer (kind=omp_pause_resource_kind), parameter :: omp_pause_hard = 2 158 159 integer (kind=omp_interop_fr_kind), parameter :: omp_ifr_cuda = 1 160 integer (kind=omp_interop_fr_kind), parameter :: omp_ifr_cuda_driver = 2 161 integer (kind=omp_interop_fr_kind), parameter :: omp_ifr_opencl = 3 162 integer (kind=omp_interop_fr_kind), parameter :: omp_ifr_sycl = 4 163 integer (kind=omp_interop_fr_kind), parameter :: omp_ifr_hip = 5 164 integer (kind=omp_interop_fr_kind), parameter :: omp_ifr_level_zero = 6 165 integer (kind=omp_interop_fr_kind), parameter :: omp_ifr_last = 7 166 167 integer (kind=omp_interop_kind), parameter :: omp_interop_none = 0 168 169 interface 170 171! *** 172! *** omp_* entry points 173! *** 174 175 subroutine omp_set_num_threads(num_threads) bind(c) 176 use omp_lib_kinds 177 integer (kind=omp_integer_kind), value :: num_threads 178 end subroutine omp_set_num_threads 179 180 subroutine omp_set_dynamic(dynamic_threads) bind(c) 181 use omp_lib_kinds 182 logical (kind=omp_logical_kind), value :: dynamic_threads 183 end subroutine omp_set_dynamic 184 185 subroutine omp_set_nested(nested) bind(c) 186 use omp_lib_kinds 187 logical (kind=omp_logical_kind), value :: nested 188 end subroutine omp_set_nested 189 190 function omp_get_num_threads() bind(c) 191 use omp_lib_kinds 192 integer (kind=omp_integer_kind) omp_get_num_threads 193 end function omp_get_num_threads 194 195 function omp_get_max_threads() bind(c) 196 use omp_lib_kinds 197 integer (kind=omp_integer_kind) omp_get_max_threads 198 end function omp_get_max_threads 199 200 function omp_get_thread_num() bind(c) 201 use omp_lib_kinds 202 integer (kind=omp_integer_kind) omp_get_thread_num 203 end function omp_get_thread_num 204 205 function omp_get_num_procs() bind(c) 206 use omp_lib_kinds 207 integer (kind=omp_integer_kind) omp_get_num_procs 208 end function omp_get_num_procs 209 210 function omp_in_parallel() bind(c) 211 use omp_lib_kinds 212 logical (kind=omp_logical_kind) omp_in_parallel 213 end function omp_in_parallel 214 215 function omp_in_final() bind(c) 216 use omp_lib_kinds 217 logical (kind=omp_logical_kind) omp_in_final 218 end function omp_in_final 219 220 function omp_get_dynamic() bind(c) 221 use omp_lib_kinds 222 logical (kind=omp_logical_kind) omp_get_dynamic 223 end function omp_get_dynamic 224 225 function omp_get_nested() bind(c) 226 use omp_lib_kinds 227 logical (kind=omp_logical_kind) omp_get_nested 228 end function omp_get_nested 229 230 function omp_get_thread_limit() bind(c) 231 use omp_lib_kinds 232 integer (kind=omp_integer_kind) omp_get_thread_limit 233 end function omp_get_thread_limit 234 235 subroutine omp_set_max_active_levels(max_levels) bind(c) 236 use omp_lib_kinds 237 integer (kind=omp_integer_kind), value :: max_levels 238 end subroutine omp_set_max_active_levels 239 240 function omp_get_max_active_levels() bind(c) 241 use omp_lib_kinds 242 integer (kind=omp_integer_kind) omp_get_max_active_levels 243 end function omp_get_max_active_levels 244 245 function omp_get_level() bind(c) 246 use omp_lib_kinds 247 integer (kind=omp_integer_kind) omp_get_level 248 end function omp_get_level 249 250 function omp_get_active_level() bind(c) 251 use omp_lib_kinds 252 integer (kind=omp_integer_kind) omp_get_active_level 253 end function omp_get_active_level 254 255 function omp_get_ancestor_thread_num(level) bind(c) 256 use omp_lib_kinds 257 integer (kind=omp_integer_kind) omp_get_ancestor_thread_num 258 integer (kind=omp_integer_kind), value :: level 259 end function omp_get_ancestor_thread_num 260 261 function omp_get_team_size(level) bind(c) 262 use omp_lib_kinds 263 integer (kind=omp_integer_kind) omp_get_team_size 264 integer (kind=omp_integer_kind), value :: level 265 end function omp_get_team_size 266 267 subroutine omp_set_schedule(kind, chunk_size) bind(c) 268 use omp_lib_kinds 269 integer (kind=omp_sched_kind), value :: kind 270 integer (kind=omp_integer_kind), value :: chunk_size 271 end subroutine omp_set_schedule 272 273 subroutine omp_get_schedule(kind, chunk_size) bind(c) 274 use omp_lib_kinds 275 integer (kind=omp_sched_kind) kind 276 integer (kind=omp_integer_kind) chunk_size 277 end subroutine omp_get_schedule 278 279 function omp_get_proc_bind() bind(c) 280 use omp_lib_kinds 281 integer (kind=omp_proc_bind_kind) omp_get_proc_bind 282 end function omp_get_proc_bind 283 284 function omp_get_num_places() bind(c) 285 use omp_lib_kinds 286 integer (kind=omp_integer_kind) omp_get_num_places 287 end function omp_get_num_places 288 289 function omp_get_place_num_procs(place_num) bind(c) 290 use omp_lib_kinds 291 integer (kind=omp_integer_kind), value :: place_num 292 integer (kind=omp_integer_kind) omp_get_place_num_procs 293 end function omp_get_place_num_procs 294 295 subroutine omp_get_place_proc_ids(place_num, ids) bind(c) 296 use omp_lib_kinds 297 integer (kind=omp_integer_kind), value :: place_num 298 integer (kind=omp_integer_kind) ids(*) 299 end subroutine omp_get_place_proc_ids 300 301 function omp_get_place_num() bind(c) 302 use omp_lib_kinds 303 integer (kind=omp_integer_kind) omp_get_place_num 304 end function omp_get_place_num 305 306 function omp_get_partition_num_places() bind(c) 307 use omp_lib_kinds 308 integer (kind=omp_integer_kind) omp_get_partition_num_places 309 end function omp_get_partition_num_places 310 311 subroutine omp_get_partition_place_nums(place_nums) bind(c) 312 use omp_lib_kinds 313 integer (kind=omp_integer_kind) place_nums(*) 314 end subroutine omp_get_partition_place_nums 315 316 function omp_get_wtime() bind(c) 317 use omp_lib_kinds 318 real (kind=kmp_double_kind) omp_get_wtime 319 end function omp_get_wtime 320 321 function omp_get_wtick() bind(c) 322 use omp_lib_kinds 323 real (kind=kmp_double_kind) omp_get_wtick 324 end function omp_get_wtick 325 326 function omp_get_default_device() bind(c) 327 use omp_lib_kinds 328 integer (kind=omp_integer_kind) omp_get_default_device 329 end function omp_get_default_device 330 331 subroutine omp_set_default_device(device_num) bind(c) 332 use omp_lib_kinds 333 integer (kind=omp_integer_kind), value :: device_num 334 end subroutine omp_set_default_device 335 336 function omp_get_num_devices() bind(c) 337 use omp_lib_kinds 338 integer (kind=omp_integer_kind) omp_get_num_devices 339 end function omp_get_num_devices 340 341 function omp_get_num_teams() bind(c) 342 use omp_lib_kinds 343 integer (kind=omp_integer_kind) omp_get_num_teams 344 end function omp_get_num_teams 345 346 function omp_get_team_num() bind(c) 347 use omp_lib_kinds 348 integer (kind=omp_integer_kind) omp_get_team_num 349 end function omp_get_team_num 350 351 function omp_get_cancellation() bind(c) 352 use omp_lib_kinds 353 integer (kind=omp_integer_kind) omp_get_cancellation 354 end function omp_get_cancellation 355 356 function omp_is_initial_device() bind(c) 357 use omp_lib_kinds 358 logical (kind=omp_logical_kind) omp_is_initial_device 359 end function omp_is_initial_device 360 361 function omp_get_initial_device() bind(c) 362 use omp_lib_kinds 363 integer (kind=omp_integer_kind) omp_get_initial_device 364 end function omp_get_initial_device 365 366 function omp_get_device_num() bind(c) 367 use omp_lib_kinds 368 integer (kind=omp_integer_kind) omp_get_device_num 369 end function omp_get_device_num 370 371 function omp_pause_resource(kind, device_num) bind(c) 372 use omp_lib_kinds 373 integer (kind=omp_pause_resource_kind), value :: kind 374 integer (kind=omp_integer_kind), value :: device_num 375 integer (kind=omp_integer_kind) omp_pause_resource 376 end function omp_pause_resource 377 378 function omp_pause_resource_all(kind) bind(c) 379 use omp_lib_kinds 380 integer (kind=omp_pause_resource_kind), value :: kind 381 integer (kind=omp_integer_kind) omp_pause_resource_all 382 end function omp_pause_resource_all 383 384 function omp_get_supported_active_levels() bind(c) 385 use omp_lib_kinds 386 integer (kind=omp_integer_kind) omp_get_supported_active_levels 387 end function omp_get_supported_active_levels 388 389 subroutine omp_fulfill_event(event) bind(c) 390 use omp_lib_kinds 391 integer (kind=omp_event_handle_kind), value :: event 392 end subroutine omp_fulfill_event 393 394 subroutine omp_init_lock(svar) bind(c) 395!DIR$ IF(__INTEL_COMPILER.GE.1400) 396!DIR$ attributes known_intrinsic :: omp_init_lock 397!DIR$ ENDIF 398 use omp_lib_kinds 399 integer (kind=omp_lock_kind) svar 400 end subroutine omp_init_lock 401 402 subroutine omp_destroy_lock(svar) bind(c) 403!DIR$ IF(__INTEL_COMPILER.GE.1400) 404!DIR$ attributes known_intrinsic :: omp_destroy_lock 405!DIR$ ENDIF 406 use omp_lib_kinds 407 integer (kind=omp_lock_kind) svar 408 end subroutine omp_destroy_lock 409 410 subroutine omp_set_lock(svar) bind(c) 411!DIR$ IF(__INTEL_COMPILER.GE.1400) 412!DIR$ attributes known_intrinsic :: omp_set_lock 413!DIR$ ENDIF 414 use omp_lib_kinds 415 integer (kind=omp_lock_kind) svar 416 end subroutine omp_set_lock 417 418 subroutine omp_unset_lock(svar) bind(c) 419!DIR$ IF(__INTEL_COMPILER.GE.1400) 420!DIR$ attributes known_intrinsic :: omp_unset_lock 421!DIR$ ENDIF 422 use omp_lib_kinds 423 integer (kind=omp_lock_kind) svar 424 end subroutine omp_unset_lock 425 426 function omp_test_lock(svar) bind(c) 427!DIR$ IF(__INTEL_COMPILER.GE.1400) 428!DIR$ attributes known_intrinsic :: omp_test_lock 429!DIR$ ENDIF 430 use omp_lib_kinds 431 logical (kind=omp_logical_kind) omp_test_lock 432 integer (kind=omp_lock_kind) svar 433 end function omp_test_lock 434 435 subroutine omp_init_nest_lock(nvar) bind(c) 436!DIR$ IF(__INTEL_COMPILER.GE.1400) 437!DIR$ attributes known_intrinsic :: omp_init_nest_lock 438!DIR$ ENDIF 439 use omp_lib_kinds 440 integer (kind=omp_nest_lock_kind) nvar 441 end subroutine omp_init_nest_lock 442 443 subroutine omp_destroy_nest_lock(nvar) bind(c) 444!DIR$ IF(__INTEL_COMPILER.GE.1400) 445!DIR$ attributes known_intrinsic :: omp_destroy_nest_lock 446!DIR$ ENDIF 447 use omp_lib_kinds 448 integer (kind=omp_nest_lock_kind) nvar 449 end subroutine omp_destroy_nest_lock 450 451 subroutine omp_set_nest_lock(nvar) bind(c) 452!DIR$ IF(__INTEL_COMPILER.GE.1400) 453!DIR$ attributes known_intrinsic :: omp_set_nest_lock 454!DIR$ ENDIF 455 use omp_lib_kinds 456 integer (kind=omp_nest_lock_kind) nvar 457 end subroutine omp_set_nest_lock 458 459 subroutine omp_unset_nest_lock(nvar) bind(c) 460!DIR$ IF(__INTEL_COMPILER.GE.1400) 461!DIR$ attributes known_intrinsic :: omp_unset_nest_lock 462!DIR$ ENDIF 463 use omp_lib_kinds 464 integer (kind=omp_nest_lock_kind) nvar 465 end subroutine omp_unset_nest_lock 466 467 function omp_test_nest_lock(nvar) bind(c) 468!DIR$ IF(__INTEL_COMPILER.GE.1400) 469!DIR$ attributes known_intrinsic :: omp_test_nest_lock 470!DIR$ ENDIF 471 use omp_lib_kinds 472 integer (kind=omp_integer_kind) omp_test_nest_lock 473 integer (kind=omp_nest_lock_kind) nvar 474 end function omp_test_nest_lock 475 476 function omp_get_max_task_priority() bind(c) 477 use omp_lib_kinds 478 integer (kind=omp_integer_kind) omp_get_max_task_priority 479 end function omp_get_max_task_priority 480 481 subroutine omp_init_lock_with_hint(svar, hint) bind(c) 482 use omp_lib_kinds 483 integer (kind=omp_lock_kind) svar 484 integer (kind=omp_lock_hint_kind), value :: hint 485 end subroutine omp_init_lock_with_hint 486 487 subroutine omp_init_nest_lock_with_hint(nvar, hint) bind(c) 488 use omp_lib_kinds 489 integer (kind=omp_nest_lock_kind) nvar 490 integer (kind=omp_lock_hint_kind), value :: hint 491 end subroutine omp_init_nest_lock_with_hint 492 493 function omp_control_tool(command, modifier, arg) bind(c) 494 use omp_lib_kinds 495 integer (kind=omp_integer_kind) omp_control_tool 496 integer (kind=omp_control_tool_kind), value :: command 497 integer (kind=omp_control_tool_kind), value :: modifier 498 integer (kind=kmp_pointer_kind), optional :: arg 499 end function omp_control_tool 500 501 function omp_init_allocator(memspace, ntraits, traits) 502 use omp_lib_kinds 503 integer (kind=omp_allocator_handle_kind) omp_init_allocator 504 integer (kind=omp_memspace_handle_kind) :: memspace 505 integer (kind=omp_integer_kind) :: ntraits 506 type(omp_alloctrait), intent(in) :: traits(*) 507 end function omp_init_allocator 508 509 subroutine omp_destroy_allocator(allocator) bind(c) 510 use omp_lib_kinds 511 integer (kind=omp_allocator_handle_kind), value :: allocator 512 end subroutine omp_destroy_allocator 513 514 subroutine omp_set_default_allocator(allocator) bind(c) 515 use omp_lib_kinds 516 integer (kind=omp_allocator_handle_kind), value :: allocator 517 end subroutine omp_set_default_allocator 518 519 function omp_get_default_allocator() bind(c) 520 use omp_lib_kinds 521 integer (kind=omp_allocator_handle_kind) omp_get_default_allocator 522 end function omp_get_default_allocator 523 524 subroutine omp_set_affinity_format(format) 525 character (len=*) :: format 526 end subroutine omp_set_affinity_format 527 528 function omp_get_affinity_format(buffer) 529 use omp_lib_kinds 530 character (len=*) :: buffer 531 integer (kind=kmp_size_t_kind) :: omp_get_affinity_format 532 end function omp_get_affinity_format 533 534 subroutine omp_display_affinity(format) 535 character (len=*) :: format 536 end subroutine omp_display_affinity 537 538 function omp_capture_affinity(buffer, format) 539 use omp_lib_kinds 540 character (len=*) :: format 541 character (len=*) :: buffer 542 integer (kind=kmp_size_t_kind) :: omp_capture_affinity 543 end function omp_capture_affinity 544 545 subroutine omp_set_num_teams(num_teams) bind(c) 546 use omp_lib_kinds 547 integer (kind=omp_integer_kind), value :: num_teams 548 end subroutine omp_set_num_teams 549 550 function omp_get_max_teams() bind(c) 551 use omp_lib_kinds 552 integer (kind=omp_integer_kind) omp_get_max_teams 553 end function omp_get_max_teams 554 555 subroutine omp_set_teams_thread_limit(thread_limit) bind(c) 556 use omp_lib_kinds 557 integer (kind=omp_integer_kind), value :: thread_limit 558 end subroutine omp_set_teams_thread_limit 559 560 function omp_get_teams_thread_limit() bind(c) 561 use omp_lib_kinds 562 integer (kind=omp_integer_kind) omp_get_teams_thread_limit 563 end function omp_get_teams_thread_limit 564 565 subroutine omp_display_env(verbose) bind(c) 566 use omp_lib_kinds 567 logical (kind=omp_logical_kind), value :: verbose 568 end subroutine omp_display_env 569 570 function omp_target_alloc(size, device_num) bind(c) 571 use omp_lib_kinds 572 type(c_ptr) omp_target_alloc 573 integer(c_size_t), value :: size 574 integer(c_int), value :: device_num 575 end function omp_target_alloc 576 577 subroutine omp_target_free(device_ptr, device_num) bind(c) 578 use omp_lib_kinds 579 type(c_ptr), value :: device_ptr 580 integer(c_int), value :: device_num 581 end subroutine omp_target_free 582 583 function omp_target_is_present(ptr, device_num) bind(c) 584 use omp_lib_kinds 585 integer(c_int) omp_target_is_present 586 type(c_ptr), value :: ptr 587 integer(c_int), value :: device_num 588 end function omp_target_is_present 589 590 function omp_target_memcpy(dst, src, length, dst_offset, src_offset, & 591 dst_device_num, src_device_num) bind(c) 592 use omp_lib_kinds 593 integer(c_int) omp_target_memcpy 594 type(c_ptr), value :: dst, src 595 integer(c_size_t), value :: length, dst_offset, src_offset 596 integer(c_int), value :: dst_device_num, src_device_num 597 end function omp_target_memcpy 598 599 function omp_target_memcpy_rect(dst, src, element_size, num_dims, & 600 volume, dst_offsets, src_offsets, dst_dimensions, & 601 src_dimensions, dst_device_num, src_device_num) bind(c) 602 use omp_lib_kinds 603 integer(c_int) omp_target_memcpy_rect 604 type(c_ptr), value :: dst, src 605 integer(c_size_t), value :: element_size 606 integer(c_int), value :: num_dims, dst_device_num, src_device_num 607 integer(c_size_t), intent(in) :: volume(*), dst_offsets(*), & 608 src_offsets(*), dst_dimensions(*), src_dimensions(*) 609 end function omp_target_memcpy_rect 610 611 function omp_target_memcpy_async(dst, src, length, dst_offset, & 612 src_offset, dst_device_num, src_device_num, depobj_count, & 613 depobj_list) bind(c) 614 use omp_lib_kinds 615 integer(c_int) omp_target_memcpy_async 616 type(c_ptr), value :: dst, src 617 integer(c_size_t), value :: length, dst_offset, src_offset 618 integer(c_int), value :: dst_device_num, src_device_num, & 619 depobj_count 620 integer(omp_depend_kind), optional :: depobj_list(*) 621 end function omp_target_memcpy_async 622 623 function omp_target_memcpy_rect_async(dst, src, element_size, & 624 num_dims, volume, dst_offsets, src_offsets, dst_dimensions, & 625 src_dimensions, dst_device_num, src_device_num, depobj_count, & 626 depobj_list) bind(c) 627 use omp_lib_kinds 628 integer(c_int) omp_target_memcpy_rect_async 629 type(c_ptr), value :: dst, src 630 integer(c_size_t), value :: element_size 631 integer(c_int), value :: num_dims, dst_device_num, src_device_num, & 632 depobj_count 633 integer(c_size_t), intent(in) :: volume(*), dst_offsets(*), & 634 src_offsets(*), dst_dimensions(*), src_dimensions(*) 635 integer (omp_depend_kind), optional :: depobj_list(*) 636 end function omp_target_memcpy_rect_async 637 638 function omp_target_associate_ptr(host_ptr, device_ptr, size, & 639 device_offset, device_num) bind(c) 640 use omp_lib_kinds 641 integer(c_int) omp_target_associate_ptr 642 type(c_ptr), value :: host_ptr, device_ptr 643 integer(c_size_t), value :: size, device_offset 644 integer(c_int), value :: device_num 645 end function omp_target_associate_ptr 646 647 function omp_get_mapped_ptr(ptr, device_num) bind(c) 648 use omp_lib_kinds 649 type(c_ptr) omp_get_mapped_ptr 650 type(c_ptr), value :: ptr 651 integer(c_int), value :: device_num 652 end function omp_get_mapped_ptr 653 654 function omp_target_disassociate_ptr(ptr, device_num) bind(c) 655 use omp_lib_kinds 656 integer(c_int) omp_target_disassociate_ptr 657 type(c_ptr), value :: ptr 658 integer(c_int), value :: device_num 659 end function omp_target_disassociate_ptr 660 661 function omp_target_is_accessible(ptr, size, device_num) bind(c) 662 use omp_lib_kinds 663 use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t, c_int 664 integer(c_int) omp_target_is_accessible 665 type(c_ptr), value :: ptr 666 integer(c_size_t), value :: size 667 integer(c_int), value :: device_num 668 end function omp_target_is_accessible 669 670 function omp_alloc(size, allocator) bind(c) 671 use omp_lib_kinds 672 use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t 673 type(c_ptr) omp_alloc 674 integer(c_size_t), value :: size 675 integer(omp_allocator_handle_kind), value :: allocator 676 end function omp_alloc 677 678 function omp_aligned_alloc(alignment, size, allocator) bind(c) 679 use omp_lib_kinds 680 use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t 681 type(c_ptr) omp_aligned_alloc 682 integer(c_size_t), value :: alignment, size 683 integer(omp_allocator_handle_kind), value :: allocator 684 end function omp_aligned_alloc 685 686 function omp_calloc(nmemb, size, allocator) bind(c) 687 use omp_lib_kinds 688 use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t 689 type(c_ptr) omp_calloc 690 integer(c_size_t), value :: nmemb, size 691 integer(omp_allocator_handle_kind), value :: allocator 692 end function omp_calloc 693 694 function omp_aligned_calloc(alignment, nmemb, size, allocator) bind(c) 695 use omp_lib_kinds 696 use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t 697 type(c_ptr) omp_aligned_calloc 698 integer(c_size_t), value :: alignment, nmemb, size 699 integer(omp_allocator_handle_kind), value :: allocator 700 end function omp_aligned_calloc 701 702 function omp_realloc(ptr, size, allocator, free_allocator) bind(c) 703 use omp_lib_kinds 704 use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t 705 type(c_ptr) omp_realloc 706 type(c_ptr), value :: ptr 707 integer(c_size_t), value :: size 708 integer(omp_allocator_handle_kind), value :: allocator 709 integer(omp_allocator_handle_kind), value :: free_allocator 710 end function omp_realloc 711 712 subroutine omp_free(ptr, allocator) bind(c) 713 use omp_lib_kinds 714 use, intrinsic :: iso_c_binding, only : c_ptr 715 type(c_ptr), value :: ptr 716 integer(omp_allocator_handle_kind), value :: allocator 717 end subroutine omp_free 718 719 function omp_in_explicit_task() bind(c) 720 use omp_lib_kinds 721 logical (kind=omp_logical_kind) omp_in_explicit_task 722 end function omp_in_explicit_task 723 724! *** 725! *** kmp_* entry points 726! *** 727 728 subroutine kmp_set_stacksize(size) bind(c) 729 use omp_lib_kinds 730 integer (kind=omp_integer_kind), value :: size 731 end subroutine kmp_set_stacksize 732 733 subroutine kmp_set_stacksize_s(size) bind(c) 734 use omp_lib_kinds 735 integer (kind=kmp_size_t_kind), value :: size 736 end subroutine kmp_set_stacksize_s 737 738 subroutine kmp_set_blocktime(msec) bind(c) 739 use omp_lib_kinds 740 integer (kind=omp_integer_kind), value :: msec 741 end subroutine kmp_set_blocktime 742 743 subroutine kmp_set_library_serial() bind(c) 744 end subroutine kmp_set_library_serial 745 746 subroutine kmp_set_library_turnaround() bind(c) 747 end subroutine kmp_set_library_turnaround 748 749 subroutine kmp_set_library_throughput() bind(c) 750 end subroutine kmp_set_library_throughput 751 752 subroutine kmp_set_library(libnum) bind(c) 753 use omp_lib_kinds 754 integer (kind=omp_integer_kind), value :: libnum 755 end subroutine kmp_set_library 756 757 subroutine kmp_set_defaults(string) bind(c) 758 use, intrinsic :: iso_c_binding 759 character (kind=c_char) :: string(*) 760 end subroutine kmp_set_defaults 761 762 function kmp_get_stacksize() bind(c) 763 use omp_lib_kinds 764 integer (kind=omp_integer_kind) kmp_get_stacksize 765 end function kmp_get_stacksize 766 767 function kmp_get_stacksize_s() bind(c) 768 use omp_lib_kinds 769 integer (kind=kmp_size_t_kind) kmp_get_stacksize_s 770 end function kmp_get_stacksize_s 771 772 function kmp_get_blocktime() bind(c) 773 use omp_lib_kinds 774 integer (kind=omp_integer_kind) kmp_get_blocktime 775 end function kmp_get_blocktime 776 777 function kmp_get_library() bind(c) 778 use omp_lib_kinds 779 integer (kind=omp_integer_kind) kmp_get_library 780 end function kmp_get_library 781 782 subroutine kmp_set_disp_num_buffers(num) bind(c) 783 use omp_lib_kinds 784 integer (kind=omp_integer_kind), value :: num 785 end subroutine kmp_set_disp_num_buffers 786 787 function kmp_set_affinity(mask) bind(c) 788 use omp_lib_kinds 789 integer (kind=omp_integer_kind) kmp_set_affinity 790 integer (kind=kmp_affinity_mask_kind) mask 791 end function kmp_set_affinity 792 793 function kmp_get_affinity(mask) bind(c) 794 use omp_lib_kinds 795 integer (kind=omp_integer_kind) kmp_get_affinity 796 integer (kind=kmp_affinity_mask_kind) mask 797 end function kmp_get_affinity 798 799 function kmp_get_affinity_max_proc() bind(c) 800 use omp_lib_kinds 801 integer (kind=omp_integer_kind) kmp_get_affinity_max_proc 802 end function kmp_get_affinity_max_proc 803 804 subroutine kmp_create_affinity_mask(mask) bind(c) 805 use omp_lib_kinds 806 integer (kind=kmp_affinity_mask_kind) mask 807 end subroutine kmp_create_affinity_mask 808 809 subroutine kmp_destroy_affinity_mask(mask) bind(c) 810 use omp_lib_kinds 811 integer (kind=kmp_affinity_mask_kind) mask 812 end subroutine kmp_destroy_affinity_mask 813 814 function kmp_set_affinity_mask_proc(proc, mask) bind(c) 815 use omp_lib_kinds 816 integer (kind=omp_integer_kind) kmp_set_affinity_mask_proc 817 integer (kind=omp_integer_kind), value :: proc 818 integer (kind=kmp_affinity_mask_kind) mask 819 end function kmp_set_affinity_mask_proc 820 821 function kmp_unset_affinity_mask_proc(proc, mask) bind(c) 822 use omp_lib_kinds 823 integer (kind=omp_integer_kind) kmp_unset_affinity_mask_proc 824 integer (kind=omp_integer_kind), value :: proc 825 integer (kind=kmp_affinity_mask_kind) mask 826 end function kmp_unset_affinity_mask_proc 827 828 function kmp_get_affinity_mask_proc(proc, mask) bind(c) 829 use omp_lib_kinds 830 integer (kind=omp_integer_kind) kmp_get_affinity_mask_proc 831 integer (kind=omp_integer_kind), value :: proc 832 integer (kind=kmp_affinity_mask_kind) mask 833 end function kmp_get_affinity_mask_proc 834 835 function kmp_malloc(size) bind(c) 836 use omp_lib_kinds 837 integer (kind=kmp_pointer_kind) kmp_malloc 838 integer (kind=kmp_size_t_kind), value :: size 839 end function kmp_malloc 840 841 function kmp_aligned_malloc(size, alignment) bind(c) 842 use omp_lib_kinds 843 integer (kind=kmp_pointer_kind) kmp_aligned_malloc 844 integer (kind=kmp_size_t_kind), value :: size 845 integer (kind=kmp_size_t_kind), value :: alignment 846 end function kmp_aligned_malloc 847 848 function kmp_calloc(nelem, elsize) bind(c) 849 use omp_lib_kinds 850 integer (kind=kmp_pointer_kind) kmp_calloc 851 integer (kind=kmp_size_t_kind), value :: nelem 852 integer (kind=kmp_size_t_kind), value :: elsize 853 end function kmp_calloc 854 855 function kmp_realloc(ptr, size) bind(c) 856 use omp_lib_kinds 857 integer (kind=kmp_pointer_kind) kmp_realloc 858 integer (kind=kmp_pointer_kind), value :: ptr 859 integer (kind=kmp_size_t_kind), value :: size 860 end function kmp_realloc 861 862 subroutine kmp_free(ptr) bind(c) 863 use omp_lib_kinds 864 integer (kind=kmp_pointer_kind), value :: ptr 865 end subroutine kmp_free 866 867 subroutine kmp_set_warnings_on() bind(c) 868 end subroutine kmp_set_warnings_on 869 870 subroutine kmp_set_warnings_off() bind(c) 871 end subroutine kmp_set_warnings_off 872 873 function kmp_get_cancellation_status(cancelkind) bind(c) 874 use omp_lib_kinds 875 integer (kind=kmp_cancel_kind), value :: cancelkind 876 logical (kind=omp_logical_kind) kmp_get_cancellation_status 877 end function kmp_get_cancellation_status 878 879 end interface 880 881 end module omp_lib 882