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