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