1! include/45/omp_lib.f90.var 2 3! 4!//===----------------------------------------------------------------------===// 5!// 6!// The LLVM Compiler Infrastructure 7!// 8!// This file is dual licensed under the MIT and the University of Illinois Open 9!// Source Licenses. See LICENSE.txt for details. 10!// 11!//===----------------------------------------------------------------------===// 12! 13 14 module omp_lib_kinds 15 16 use, intrinsic :: iso_c_binding 17 18 integer, parameter :: omp_integer_kind = c_int 19 integer, parameter :: omp_logical_kind = 4 20 integer, parameter :: omp_real_kind = c_float 21 integer, parameter :: kmp_double_kind = c_double 22 integer, parameter :: omp_lock_kind = c_intptr_t 23 integer, parameter :: omp_nest_lock_kind = c_intptr_t 24 integer, parameter :: omp_sched_kind = omp_integer_kind 25 integer, parameter :: omp_proc_bind_kind = omp_integer_kind 26 integer, parameter :: kmp_pointer_kind = c_intptr_t 27 integer, parameter :: kmp_size_t_kind = c_size_t 28 integer, parameter :: kmp_affinity_mask_kind = c_intptr_t 29 integer, parameter :: kmp_cancel_kind = omp_integer_kind 30 integer, parameter :: omp_lock_hint_kind = omp_integer_kind 31 32 end module omp_lib_kinds 33 34 module omp_lib 35 36 use omp_lib_kinds 37 38 integer (kind=omp_integer_kind), parameter :: openmp_version = @LIBOMP_OMP_YEAR_MONTH@ 39 integer (kind=omp_integer_kind), parameter :: kmp_version_major = @LIBOMP_VERSION_MAJOR@ 40 integer (kind=omp_integer_kind), parameter :: kmp_version_minor = @LIBOMP_VERSION_MINOR@ 41 integer (kind=omp_integer_kind), parameter :: kmp_version_build = @LIBOMP_VERSION_BUILD@ 42 character(*) kmp_build_date 43 parameter( kmp_build_date = '@LIBOMP_BUILD_DATE@' ) 44 45 integer(kind=omp_sched_kind), parameter :: omp_sched_static = 1 46 integer(kind=omp_sched_kind), parameter :: omp_sched_dynamic = 2 47 integer(kind=omp_sched_kind), parameter :: omp_sched_guided = 3 48 integer(kind=omp_sched_kind), parameter :: omp_sched_auto = 4 49 50 51 integer (kind=omp_proc_bind_kind), parameter :: omp_proc_bind_false = 0 52 integer (kind=omp_proc_bind_kind), parameter :: omp_proc_bind_true = 1 53 integer (kind=omp_proc_bind_kind), parameter :: omp_proc_bind_master = 2 54 integer (kind=omp_proc_bind_kind), parameter :: omp_proc_bind_close = 3 55 integer (kind=omp_proc_bind_kind), parameter :: omp_proc_bind_spread = 4 56 57 integer (kind=kmp_cancel_kind), parameter :: kmp_cancel_parallel = 1 58 integer (kind=kmp_cancel_kind), parameter :: kmp_cancel_loop = 2 59 integer (kind=kmp_cancel_kind), parameter :: kmp_cancel_sections = 3 60 integer (kind=kmp_cancel_kind), parameter :: kmp_cancel_taskgroup = 4 61 62 integer (kind=omp_lock_hint_kind), parameter :: omp_lock_hint_none = 0 63 integer (kind=omp_lock_hint_kind), parameter :: omp_lock_hint_uncontended = 1 64 integer (kind=omp_lock_hint_kind), parameter :: omp_lock_hint_contended = 2 65 integer (kind=omp_lock_hint_kind), parameter :: omp_lock_hint_nonspeculative = 4 66 integer (kind=omp_lock_hint_kind), parameter :: omp_lock_hint_speculative = 8 67 integer (kind=omp_lock_hint_kind), parameter :: kmp_lock_hint_hle = 65536 68 integer (kind=omp_lock_hint_kind), parameter :: kmp_lock_hint_rtm = 131072 69 integer (kind=omp_lock_hint_kind), parameter :: kmp_lock_hint_adaptive = 262144 70 71 interface 72 73! *** 74! *** omp_* entry points 75! *** 76 77 subroutine omp_set_num_threads(num_threads) bind(c) 78 use omp_lib_kinds 79 integer (kind=omp_integer_kind), value :: num_threads 80 end subroutine omp_set_num_threads 81 82 subroutine omp_set_dynamic(dynamic_threads) bind(c) 83 use omp_lib_kinds 84 logical (kind=omp_logical_kind), value :: dynamic_threads 85 end subroutine omp_set_dynamic 86 87 subroutine omp_set_nested(nested) bind(c) 88 use omp_lib_kinds 89 logical (kind=omp_logical_kind), value :: nested 90 end subroutine omp_set_nested 91 92 function omp_get_num_threads() bind(c) 93 use omp_lib_kinds 94 integer (kind=omp_integer_kind) omp_get_num_threads 95 end function omp_get_num_threads 96 97 function omp_get_max_threads() bind(c) 98 use omp_lib_kinds 99 integer (kind=omp_integer_kind) omp_get_max_threads 100 end function omp_get_max_threads 101 102 function omp_get_thread_num() bind(c) 103 use omp_lib_kinds 104 integer (kind=omp_integer_kind) omp_get_thread_num 105 end function omp_get_thread_num 106 107 function omp_get_num_procs() bind(c) 108 use omp_lib_kinds 109 integer (kind=omp_integer_kind) omp_get_num_procs 110 end function omp_get_num_procs 111 112 function omp_in_parallel() bind(c) 113 use omp_lib_kinds 114 logical (kind=omp_logical_kind) omp_in_parallel 115 end function omp_in_parallel 116 117 function omp_in_final() bind(c) 118 use omp_lib_kinds 119 logical (kind=omp_logical_kind) omp_in_final 120 end function omp_in_final 121 122 function omp_get_dynamic() bind(c) 123 use omp_lib_kinds 124 logical (kind=omp_logical_kind) omp_get_dynamic 125 end function omp_get_dynamic 126 127 function omp_get_nested() bind(c) 128 use omp_lib_kinds 129 logical (kind=omp_logical_kind) omp_get_nested 130 end function omp_get_nested 131 132 function omp_get_thread_limit() bind(c) 133 use omp_lib_kinds 134 integer (kind=omp_integer_kind) omp_get_thread_limit 135 end function omp_get_thread_limit 136 137 subroutine omp_set_max_active_levels(max_levels) bind(c) 138 use omp_lib_kinds 139 integer (kind=omp_integer_kind), value :: max_levels 140 end subroutine omp_set_max_active_levels 141 142 function omp_get_max_active_levels() bind(c) 143 use omp_lib_kinds 144 integer (kind=omp_integer_kind) omp_get_max_active_levels 145 end function omp_get_max_active_levels 146 147 function omp_get_level() bind(c) 148 use omp_lib_kinds 149 integer (kind=omp_integer_kind) omp_get_level 150 end function omp_get_level 151 152 function omp_get_active_level() bind(c) 153 use omp_lib_kinds 154 integer (kind=omp_integer_kind) omp_get_active_level 155 end function omp_get_active_level 156 157 function omp_get_ancestor_thread_num(level) bind(c) 158 use omp_lib_kinds 159 integer (kind=omp_integer_kind) omp_get_ancestor_thread_num 160 integer (kind=omp_integer_kind), value :: level 161 end function omp_get_ancestor_thread_num 162 163 function omp_get_team_size(level) bind(c) 164 use omp_lib_kinds 165 integer (kind=omp_integer_kind) omp_get_team_size 166 integer (kind=omp_integer_kind), value :: level 167 end function omp_get_team_size 168 169 subroutine omp_set_schedule(kind, chunk_size) bind(c) 170 use omp_lib_kinds 171 integer (kind=omp_sched_kind), value :: kind 172 integer (kind=omp_integer_kind), value :: chunk_size 173 end subroutine omp_set_schedule 174 175 subroutine omp_get_schedule(kind, chunk_size) bind(c) 176 use omp_lib_kinds 177 integer (kind=omp_sched_kind) kind 178 integer (kind=omp_integer_kind) chunk_size 179 end subroutine omp_get_schedule 180 181 function omp_get_proc_bind() bind(c) 182 use omp_lib_kinds 183 integer (kind=omp_proc_bind_kind) omp_get_proc_bind 184 end function omp_get_proc_bind 185 186 function omp_get_num_places() bind(c) 187 use omp_lib_kinds 188 integer (kind=omp_integer_kind) omp_get_num_places 189 end function omp_get_num_places 190 191 function omp_get_place_num_procs(place_num) bind(c) 192 use omp_lib_kinds 193 integer (kind=omp_integer_kind), value :: place_num 194 integer (kind=omp_integer_kind) omp_get_place_num_procs 195 end function omp_get_place_num_procs 196 197 subroutine omp_get_place_proc_ids(place_num, ids) bind(c) 198 use omp_lib_kinds 199 integer (kind=omp_integer_kind), value :: place_num 200 integer (kind=omp_integer_kind) ids(*) 201 end subroutine omp_get_place_proc_ids 202 203 function omp_get_place_num() bind(c) 204 use omp_lib_kinds 205 integer (kind=omp_integer_kind) omp_get_place_num 206 end function omp_get_place_num 207 208 function omp_get_partition_num_places() bind(c) 209 use omp_lib_kinds 210 integer (kind=omp_integer_kind) omp_get_partition_num_places 211 end function omp_get_partition_num_places 212 213 subroutine omp_get_partition_place_nums(place_nums) bind(c) 214 use omp_lib_kinds 215 integer (kind=omp_integer_kind) place_nums(*) 216 end subroutine omp_get_partition_place_nums 217 218 function omp_get_wtime() bind(c) 219 use omp_lib_kinds 220 real (kind=kmp_double_kind) omp_get_wtime 221 end function omp_get_wtime 222 223 function omp_get_wtick() bind(c) 224 use omp_lib_kinds 225 real (kind=kmp_double_kind) omp_get_wtick 226 end function omp_get_wtick 227 228 function omp_get_default_device() bind(c) 229 use omp_lib_kinds 230 integer (kind=omp_integer_kind) omp_get_default_device 231 end function omp_get_default_device 232 233 subroutine omp_set_default_device(device_num) bind(c) 234 use omp_lib_kinds 235 integer (kind=omp_integer_kind), value :: device_num 236 end subroutine omp_set_default_device 237 238 function omp_get_num_devices() bind(c) 239 use omp_lib_kinds 240 integer (kind=omp_integer_kind) omp_get_num_devices 241 end function omp_get_num_devices 242 243 function omp_get_num_teams() bind(c) 244 use omp_lib_kinds 245 integer (kind=omp_integer_kind) omp_get_num_teams 246 end function omp_get_num_teams 247 248 function omp_get_team_num() bind(c) 249 use omp_lib_kinds 250 integer (kind=omp_integer_kind) omp_get_team_num 251 end function omp_get_team_num 252 253 function omp_get_cancellation() bind(c) 254 use omp_lib_kinds 255 integer (kind=omp_integer_kind) omp_get_cancellation 256 end function omp_get_cancellation 257 258 function omp_is_initial_device() bind(c) 259 use omp_lib_kinds 260 logical (kind=omp_logical_kind) omp_is_initial_device 261 end function omp_is_initial_device 262 263 function omp_get_initial_device() bind(c) 264 use omp_lib_kinds 265 integer (kind=omp_integer_kind) omp_get_initial_device 266 end function omp_get_initial_device 267 268 subroutine omp_init_lock(svar) bind(c) 269!DIR$ IF(__INTEL_COMPILER.GE.1400) 270!DIR$ attributes known_intrinsic :: omp_init_lock 271!DIR$ ENDIF 272 use omp_lib_kinds 273 integer (kind=omp_lock_kind) svar 274 end subroutine omp_init_lock 275 276 subroutine omp_destroy_lock(svar) bind(c) 277!DIR$ IF(__INTEL_COMPILER.GE.1400) 278!DIR$ attributes known_intrinsic :: omp_destroy_lock 279!DIR$ ENDIF 280 use omp_lib_kinds 281 integer (kind=omp_lock_kind) svar 282 end subroutine omp_destroy_lock 283 284 subroutine omp_set_lock(svar) bind(c) 285!DIR$ IF(__INTEL_COMPILER.GE.1400) 286!DIR$ attributes known_intrinsic :: omp_set_lock 287!DIR$ ENDIF 288 use omp_lib_kinds 289 integer (kind=omp_lock_kind) svar 290 end subroutine omp_set_lock 291 292 subroutine omp_unset_lock(svar) bind(c) 293!DIR$ IF(__INTEL_COMPILER.GE.1400) 294!DIR$ attributes known_intrinsic :: omp_unset_lock 295!DIR$ ENDIF 296 use omp_lib_kinds 297 integer (kind=omp_lock_kind) svar 298 end subroutine omp_unset_lock 299 300 function omp_test_lock(svar) bind(c) 301!DIR$ IF(__INTEL_COMPILER.GE.1400) 302!DIR$ attributes known_intrinsic :: omp_test_lock 303!DIR$ ENDIF 304 use omp_lib_kinds 305 logical (kind=omp_logical_kind) omp_test_lock 306 integer (kind=omp_lock_kind) svar 307 end function omp_test_lock 308 309 subroutine omp_init_nest_lock(nvar) bind(c) 310!DIR$ IF(__INTEL_COMPILER.GE.1400) 311!DIR$ attributes known_intrinsic :: omp_init_nest_lock 312!DIR$ ENDIF 313 use omp_lib_kinds 314 integer (kind=omp_nest_lock_kind) nvar 315 end subroutine omp_init_nest_lock 316 317 subroutine omp_destroy_nest_lock(nvar) bind(c) 318!DIR$ IF(__INTEL_COMPILER.GE.1400) 319!DIR$ attributes known_intrinsic :: omp_destroy_nest_lock 320!DIR$ ENDIF 321 use omp_lib_kinds 322 integer (kind=omp_nest_lock_kind) nvar 323 end subroutine omp_destroy_nest_lock 324 325 subroutine omp_set_nest_lock(nvar) bind(c) 326!DIR$ IF(__INTEL_COMPILER.GE.1400) 327!DIR$ attributes known_intrinsic :: omp_set_nest_lock 328!DIR$ ENDIF 329 use omp_lib_kinds 330 integer (kind=omp_nest_lock_kind) nvar 331 end subroutine omp_set_nest_lock 332 333 subroutine omp_unset_nest_lock(nvar) bind(c) 334!DIR$ IF(__INTEL_COMPILER.GE.1400) 335!DIR$ attributes known_intrinsic :: omp_unset_nest_lock 336!DIR$ ENDIF 337 use omp_lib_kinds 338 integer (kind=omp_nest_lock_kind) nvar 339 end subroutine omp_unset_nest_lock 340 341 function omp_test_nest_lock(nvar) bind(c) 342!DIR$ IF(__INTEL_COMPILER.GE.1400) 343!DIR$ attributes known_intrinsic :: omp_test_nest_lock 344!DIR$ ENDIF 345 use omp_lib_kinds 346 integer (kind=omp_integer_kind) omp_test_nest_lock 347 integer (kind=omp_nest_lock_kind) nvar 348 end function omp_test_nest_lock 349 350 function omp_get_max_task_priority() bind(c) 351 use omp_lib_kinds 352 integer (kind=omp_integer_kind) omp_get_max_task_priority 353 end function omp_get_max_task_priority 354 355! *** 356! *** kmp_* entry points 357! *** 358 359 subroutine kmp_set_stacksize(size) bind(c) 360 use omp_lib_kinds 361 integer (kind=omp_integer_kind), value :: size 362 end subroutine kmp_set_stacksize 363 364 subroutine kmp_set_stacksize_s(size) bind(c) 365 use omp_lib_kinds 366 integer (kind=kmp_size_t_kind), value :: size 367 end subroutine kmp_set_stacksize_s 368 369 subroutine kmp_set_blocktime(msec) bind(c) 370 use omp_lib_kinds 371 integer (kind=omp_integer_kind), value :: msec 372 end subroutine kmp_set_blocktime 373 374 subroutine kmp_set_library_serial() bind(c) 375 end subroutine kmp_set_library_serial 376 377 subroutine kmp_set_library_turnaround() bind(c) 378 end subroutine kmp_set_library_turnaround 379 380 subroutine kmp_set_library_throughput() bind(c) 381 end subroutine kmp_set_library_throughput 382 383 subroutine kmp_set_library(libnum) bind(c) 384 use omp_lib_kinds 385 integer (kind=omp_integer_kind), value :: libnum 386 end subroutine kmp_set_library 387 388 subroutine kmp_set_defaults(string) bind(c) 389 use, intrinsic :: iso_c_binding 390 character (kind=c_char) :: string(*) 391 end subroutine kmp_set_defaults 392 393 function kmp_get_stacksize() bind(c) 394 use omp_lib_kinds 395 integer (kind=omp_integer_kind) kmp_get_stacksize 396 end function kmp_get_stacksize 397 398 function kmp_get_stacksize_s() bind(c) 399 use omp_lib_kinds 400 integer (kind=kmp_size_t_kind) kmp_get_stacksize_s 401 end function kmp_get_stacksize_s 402 403 function kmp_get_blocktime() bind(c) 404 use omp_lib_kinds 405 integer (kind=omp_integer_kind) kmp_get_blocktime 406 end function kmp_get_blocktime 407 408 function kmp_get_library() bind(c) 409 use omp_lib_kinds 410 integer (kind=omp_integer_kind) kmp_get_library 411 end function kmp_get_library 412 413 subroutine kmp_set_disp_num_buffers(num) bind(c) 414 use omp_lib_kinds 415 integer (kind=omp_integer_kind), value :: num 416 end subroutine kmp_set_disp_num_buffers 417 418 function kmp_set_affinity(mask) bind(c) 419 use omp_lib_kinds 420 integer (kind=omp_integer_kind) kmp_set_affinity 421 integer (kind=kmp_affinity_mask_kind) mask 422 end function kmp_set_affinity 423 424 function kmp_get_affinity(mask) bind(c) 425 use omp_lib_kinds 426 integer (kind=omp_integer_kind) kmp_get_affinity 427 integer (kind=kmp_affinity_mask_kind) mask 428 end function kmp_get_affinity 429 430 function kmp_get_affinity_max_proc() bind(c) 431 use omp_lib_kinds 432 integer (kind=omp_integer_kind) kmp_get_affinity_max_proc 433 end function kmp_get_affinity_max_proc 434 435 subroutine kmp_create_affinity_mask(mask) bind(c) 436 use omp_lib_kinds 437 integer (kind=kmp_affinity_mask_kind) mask 438 end subroutine kmp_create_affinity_mask 439 440 subroutine kmp_destroy_affinity_mask(mask) bind(c) 441 use omp_lib_kinds 442 integer (kind=kmp_affinity_mask_kind) mask 443 end subroutine kmp_destroy_affinity_mask 444 445 function kmp_set_affinity_mask_proc(proc, mask) bind(c) 446 use omp_lib_kinds 447 integer (kind=omp_integer_kind) kmp_set_affinity_mask_proc 448 integer (kind=omp_integer_kind), value :: proc 449 integer (kind=kmp_affinity_mask_kind) mask 450 end function kmp_set_affinity_mask_proc 451 452 function kmp_unset_affinity_mask_proc(proc, mask) bind(c) 453 use omp_lib_kinds 454 integer (kind=omp_integer_kind) kmp_unset_affinity_mask_proc 455 integer (kind=omp_integer_kind), value :: proc 456 integer (kind=kmp_affinity_mask_kind) mask 457 end function kmp_unset_affinity_mask_proc 458 459 function kmp_get_affinity_mask_proc(proc, mask) bind(c) 460 use omp_lib_kinds 461 integer (kind=omp_integer_kind) kmp_get_affinity_mask_proc 462 integer (kind=omp_integer_kind), value :: proc 463 integer (kind=kmp_affinity_mask_kind) mask 464 end function kmp_get_affinity_mask_proc 465 466 function kmp_malloc(size) bind(c) 467 use omp_lib_kinds 468 integer (kind=kmp_pointer_kind) kmp_malloc 469 integer (kind=kmp_size_t_kind), value :: size 470 end function kmp_malloc 471 472 function kmp_aligned_malloc(size, alignment) bind(c) 473 use omp_lib_kinds 474 integer (kind=kmp_pointer_kind) kmp_aligned_malloc 475 integer (kind=kmp_size_t_kind), value :: size 476 integer (kind=kmp_size_t_kind), value :: alignment 477 end function kmp_aligned_malloc 478 479 function kmp_calloc(nelem, elsize) bind(c) 480 use omp_lib_kinds 481 integer (kind=kmp_pointer_kind) kmp_calloc 482 integer (kind=kmp_size_t_kind), value :: nelem 483 integer (kind=kmp_size_t_kind), value :: elsize 484 end function kmp_calloc 485 486 function kmp_realloc(ptr, size) bind(c) 487 use omp_lib_kinds 488 integer (kind=kmp_pointer_kind) kmp_realloc 489 integer (kind=kmp_pointer_kind), value :: ptr 490 integer (kind=kmp_size_t_kind), value :: size 491 end function kmp_realloc 492 493 subroutine kmp_free(ptr) bind(c) 494 use omp_lib_kinds 495 integer (kind=kmp_pointer_kind), value :: ptr 496 end subroutine kmp_free 497 498 subroutine kmp_set_warnings_on() bind(c) 499 end subroutine kmp_set_warnings_on 500 501 subroutine kmp_set_warnings_off() bind(c) 502 end subroutine kmp_set_warnings_off 503 504 function kmp_get_cancellation_status(cancelkind) bind(c) 505 use omp_lib_kinds 506 integer (kind=kmp_cancel_kind), value :: cancelkind 507 logical (kind=omp_logical_kind) kmp_get_cancellation_status 508 end function kmp_get_cancellation_status 509 510 subroutine omp_init_lock_with_hint(svar, hint) bind(c) 511 use omp_lib_kinds 512 integer (kind=omp_lock_kind) svar 513 integer (kind=omp_lock_hint_kind), value :: hint 514 end subroutine omp_init_lock_with_hint 515 516 subroutine omp_init_nest_lock_with_hint(nvar, hint) bind(c) 517 use omp_lib_kinds 518 integer (kind=omp_nest_lock_kind) nvar 519 integer (kind=omp_lock_hint_kind), value :: hint 520 end subroutine omp_init_nest_lock_with_hint 521 522 end interface 523 524 end module omp_lib 525