1! include/40/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 31 end module omp_lib_kinds 32 33 module omp_lib 34 35 use omp_lib_kinds 36 37 integer (kind=omp_integer_kind), parameter :: openmp_version = @LIBOMP_OMP_YEAR_MONTH@ 38 integer (kind=omp_integer_kind), parameter :: kmp_version_major = @LIBOMP_VERSION_MAJOR@ 39 integer (kind=omp_integer_kind), parameter :: kmp_version_minor = @LIBOMP_VERSION_MINOR@ 40 integer (kind=omp_integer_kind), parameter :: kmp_version_build = @LIBOMP_VERSION_BUILD@ 41 character(*) kmp_build_date 42 parameter( kmp_build_date = '@LIBOMP_BUILD_DATE@' ) 43 44 integer(kind=omp_sched_kind), parameter :: omp_sched_static = 1 45 integer(kind=omp_sched_kind), parameter :: omp_sched_dynamic = 2 46 integer(kind=omp_sched_kind), parameter :: omp_sched_guided = 3 47 integer(kind=omp_sched_kind), parameter :: omp_sched_auto = 4 48 49 50 integer (kind=omp_proc_bind_kind), parameter :: omp_proc_bind_false = 0 51 integer (kind=omp_proc_bind_kind), parameter :: omp_proc_bind_true = 1 52 integer (kind=omp_proc_bind_kind), parameter :: omp_proc_bind_master = 2 53 integer (kind=omp_proc_bind_kind), parameter :: omp_proc_bind_close = 3 54 integer (kind=omp_proc_bind_kind), parameter :: omp_proc_bind_spread = 4 55 56 integer (kind=kmp_cancel_kind), parameter :: kmp_cancel_parallel = 1 57 integer (kind=kmp_cancel_kind), parameter :: kmp_cancel_loop = 2 58 integer (kind=kmp_cancel_kind), parameter :: kmp_cancel_sections = 3 59 integer (kind=kmp_cancel_kind), parameter :: kmp_cancel_taskgroup = 4 60 61 interface 62 63! *** 64! *** omp_* entry points 65! *** 66 67 subroutine omp_set_num_threads(num_threads) bind(c) 68 use omp_lib_kinds 69 integer (kind=omp_integer_kind), value :: num_threads 70 end subroutine omp_set_num_threads 71 72 subroutine omp_set_dynamic(dynamic_threads) bind(c) 73 use omp_lib_kinds 74 logical (kind=omp_logical_kind), value :: dynamic_threads 75 end subroutine omp_set_dynamic 76 77 subroutine omp_set_nested(nested) bind(c) 78 use omp_lib_kinds 79 logical (kind=omp_logical_kind), value :: nested 80 end subroutine omp_set_nested 81 82 function omp_get_num_threads() bind(c) 83 use omp_lib_kinds 84 integer (kind=omp_integer_kind) omp_get_num_threads 85 end function omp_get_num_threads 86 87 function omp_get_max_threads() bind(c) 88 use omp_lib_kinds 89 integer (kind=omp_integer_kind) omp_get_max_threads 90 end function omp_get_max_threads 91 92 function omp_get_thread_num() bind(c) 93 use omp_lib_kinds 94 integer (kind=omp_integer_kind) omp_get_thread_num 95 end function omp_get_thread_num 96 97 function omp_get_num_procs() bind(c) 98 use omp_lib_kinds 99 integer (kind=omp_integer_kind) omp_get_num_procs 100 end function omp_get_num_procs 101 102 function omp_in_parallel() bind(c) 103 use omp_lib_kinds 104 logical (kind=omp_logical_kind) omp_in_parallel 105 end function omp_in_parallel 106 107 function omp_in_final() bind(c) 108 use omp_lib_kinds 109 logical (kind=omp_logical_kind) omp_in_final 110 end function omp_in_final 111 112 function omp_get_dynamic() bind(c) 113 use omp_lib_kinds 114 logical (kind=omp_logical_kind) omp_get_dynamic 115 end function omp_get_dynamic 116 117 function omp_get_nested() bind(c) 118 use omp_lib_kinds 119 logical (kind=omp_logical_kind) omp_get_nested 120 end function omp_get_nested 121 122 function omp_get_thread_limit() bind(c) 123 use omp_lib_kinds 124 integer (kind=omp_integer_kind) omp_get_thread_limit 125 end function omp_get_thread_limit 126 127 subroutine omp_set_max_active_levels(max_levels) bind(c) 128 use omp_lib_kinds 129 integer (kind=omp_integer_kind), value :: max_levels 130 end subroutine omp_set_max_active_levels 131 132 function omp_get_max_active_levels() bind(c) 133 use omp_lib_kinds 134 integer (kind=omp_integer_kind) omp_get_max_active_levels 135 end function omp_get_max_active_levels 136 137 function omp_get_level() bind(c) 138 use omp_lib_kinds 139 integer (kind=omp_integer_kind) omp_get_level 140 end function omp_get_level 141 142 function omp_get_active_level() bind(c) 143 use omp_lib_kinds 144 integer (kind=omp_integer_kind) omp_get_active_level 145 end function omp_get_active_level 146 147 function omp_get_ancestor_thread_num(level) bind(c) 148 use omp_lib_kinds 149 integer (kind=omp_integer_kind) omp_get_ancestor_thread_num 150 integer (kind=omp_integer_kind), value :: level 151 end function omp_get_ancestor_thread_num 152 153 function omp_get_team_size(level) bind(c) 154 use omp_lib_kinds 155 integer (kind=omp_integer_kind) omp_get_team_size 156 integer (kind=omp_integer_kind), value :: level 157 end function omp_get_team_size 158 159 subroutine omp_set_schedule(kind, chunk_size) bind(c) 160 use omp_lib_kinds 161 integer (kind=omp_sched_kind), value :: kind 162 integer (kind=omp_integer_kind), value :: chunk_size 163 end subroutine omp_set_schedule 164 165 subroutine omp_get_schedule(kind, chunk_size) bind(c) 166 use omp_lib_kinds 167 integer (kind=omp_sched_kind) kind 168 integer (kind=omp_integer_kind) chunk_size 169 end subroutine omp_get_schedule 170 171 function omp_get_proc_bind() bind(c) 172 use omp_lib_kinds 173 integer (kind=omp_proc_bind_kind) omp_get_proc_bind 174 end function omp_get_proc_bind 175 176 function omp_get_wtime() bind(c) 177 use omp_lib_kinds 178 real (kind=kmp_double_kind) omp_get_wtime 179 end function omp_get_wtime 180 181 function omp_get_wtick() bind(c) 182 use omp_lib_kinds 183 real (kind=kmp_double_kind) omp_get_wtick 184 end function omp_get_wtick 185 186 function omp_get_default_device() bind(c) 187 use omp_lib_kinds 188 integer (kind=omp_integer_kind) omp_get_default_device 189 end function omp_get_default_device 190 191 subroutine omp_set_default_device(device_num) bind(c) 192 use omp_lib_kinds 193 integer (kind=omp_integer_kind), value :: device_num 194 end subroutine omp_set_default_device 195 196 function omp_get_num_devices() bind(c) 197 use omp_lib_kinds 198 integer (kind=omp_integer_kind) omp_get_num_devices 199 end function omp_get_num_devices 200 201 function omp_get_num_teams() bind(c) 202 use omp_lib_kinds 203 integer (kind=omp_integer_kind) omp_get_num_teams 204 end function omp_get_num_teams 205 206 function omp_get_team_num() bind(c) 207 use omp_lib_kinds 208 integer (kind=omp_integer_kind) omp_get_team_num 209 end function omp_get_team_num 210 211 function omp_get_cancellation() bind(c) 212 use omp_lib_kinds 213 integer (kind=omp_integer_kind) omp_get_cancellation 214 end function omp_get_cancellation 215 216 function omp_is_initial_device() bind(c) 217 use omp_lib_kinds 218 logical (kind=omp_logical_kind) omp_is_initial_device 219 end function omp_is_initial_device 220 221 subroutine omp_init_lock(svar) bind(c) 222!DIR$ IF(__INTEL_COMPILER.GE.1400) 223!DIR$ attributes known_intrinsic :: omp_init_lock 224!DIR$ ENDIF 225 use omp_lib_kinds 226 integer (kind=omp_lock_kind) svar 227 end subroutine omp_init_lock 228 229 subroutine omp_destroy_lock(svar) bind(c) 230!DIR$ IF(__INTEL_COMPILER.GE.1400) 231!DIR$ attributes known_intrinsic :: omp_destroy_lock 232!DIR$ ENDIF 233 use omp_lib_kinds 234 integer (kind=omp_lock_kind) svar 235 end subroutine omp_destroy_lock 236 237 subroutine omp_set_lock(svar) bind(c) 238!DIR$ IF(__INTEL_COMPILER.GE.1400) 239!DIR$ attributes known_intrinsic :: omp_set_lock 240!DIR$ ENDIF 241 use omp_lib_kinds 242 integer (kind=omp_lock_kind) svar 243 end subroutine omp_set_lock 244 245 subroutine omp_unset_lock(svar) bind(c) 246!DIR$ IF(__INTEL_COMPILER.GE.1400) 247!DIR$ attributes known_intrinsic :: omp_unset_lock 248!DIR$ ENDIF 249 use omp_lib_kinds 250 integer (kind=omp_lock_kind) svar 251 end subroutine omp_unset_lock 252 253 function omp_test_lock(svar) bind(c) 254!DIR$ IF(__INTEL_COMPILER.GE.1400) 255!DIR$ attributes known_intrinsic :: omp_test_lock 256!DIR$ ENDIF 257 use omp_lib_kinds 258 logical (kind=omp_logical_kind) omp_test_lock 259 integer (kind=omp_lock_kind) svar 260 end function omp_test_lock 261 262 subroutine omp_init_nest_lock(nvar) bind(c) 263!DIR$ IF(__INTEL_COMPILER.GE.1400) 264!DIR$ attributes known_intrinsic :: omp_init_nest_lock 265!DIR$ ENDIF 266 use omp_lib_kinds 267 integer (kind=omp_nest_lock_kind) nvar 268 end subroutine omp_init_nest_lock 269 270 subroutine omp_destroy_nest_lock(nvar) bind(c) 271!DIR$ IF(__INTEL_COMPILER.GE.1400) 272!DIR$ attributes known_intrinsic :: omp_destroy_nest_lock 273!DIR$ ENDIF 274 use omp_lib_kinds 275 integer (kind=omp_nest_lock_kind) nvar 276 end subroutine omp_destroy_nest_lock 277 278 subroutine omp_set_nest_lock(nvar) bind(c) 279!DIR$ IF(__INTEL_COMPILER.GE.1400) 280!DIR$ attributes known_intrinsic :: omp_set_nest_lock 281!DIR$ ENDIF 282 use omp_lib_kinds 283 integer (kind=omp_nest_lock_kind) nvar 284 end subroutine omp_set_nest_lock 285 286 subroutine omp_unset_nest_lock(nvar) bind(c) 287!DIR$ IF(__INTEL_COMPILER.GE.1400) 288!DIR$ attributes known_intrinsic :: omp_unset_nest_lock 289!DIR$ ENDIF 290 use omp_lib_kinds 291 integer (kind=omp_nest_lock_kind) nvar 292 end subroutine omp_unset_nest_lock 293 294 function omp_test_nest_lock(nvar) bind(c) 295!DIR$ IF(__INTEL_COMPILER.GE.1400) 296!DIR$ attributes known_intrinsic :: omp_test_nest_lock 297!DIR$ ENDIF 298 use omp_lib_kinds 299 integer (kind=omp_integer_kind) omp_test_nest_lock 300 integer (kind=omp_nest_lock_kind) nvar 301 end function omp_test_nest_lock 302 303! *** 304! *** kmp_* entry points 305! *** 306 307 subroutine kmp_set_stacksize(size) bind(c) 308 use omp_lib_kinds 309 integer (kind=omp_integer_kind), value :: size 310 end subroutine kmp_set_stacksize 311 312 subroutine kmp_set_stacksize_s(size) bind(c) 313 use omp_lib_kinds 314 integer (kind=kmp_size_t_kind), value :: size 315 end subroutine kmp_set_stacksize_s 316 317 subroutine kmp_set_blocktime(msec) bind(c) 318 use omp_lib_kinds 319 integer (kind=omp_integer_kind), value :: msec 320 end subroutine kmp_set_blocktime 321 322 subroutine kmp_set_library_serial() bind(c) 323 end subroutine kmp_set_library_serial 324 325 subroutine kmp_set_library_turnaround() bind(c) 326 end subroutine kmp_set_library_turnaround 327 328 subroutine kmp_set_library_throughput() bind(c) 329 end subroutine kmp_set_library_throughput 330 331 subroutine kmp_set_library(libnum) bind(c) 332 use omp_lib_kinds 333 integer (kind=omp_integer_kind), value :: libnum 334 end subroutine kmp_set_library 335 336 subroutine kmp_set_defaults(string) bind(c) 337 use, intrinsic :: iso_c_binding 338 character (kind=c_char) :: string(*) 339 end subroutine kmp_set_defaults 340 341 function kmp_get_stacksize() bind(c) 342 use omp_lib_kinds 343 integer (kind=omp_integer_kind) kmp_get_stacksize 344 end function kmp_get_stacksize 345 346 function kmp_get_stacksize_s() bind(c) 347 use omp_lib_kinds 348 integer (kind=kmp_size_t_kind) kmp_get_stacksize_s 349 end function kmp_get_stacksize_s 350 351 function kmp_get_blocktime() bind(c) 352 use omp_lib_kinds 353 integer (kind=omp_integer_kind) kmp_get_blocktime 354 end function kmp_get_blocktime 355 356 function kmp_get_library() bind(c) 357 use omp_lib_kinds 358 integer (kind=omp_integer_kind) kmp_get_library 359 end function kmp_get_library 360 361 function kmp_set_affinity(mask) bind(c) 362 use omp_lib_kinds 363 integer (kind=omp_integer_kind) kmp_set_affinity 364 integer (kind=kmp_affinity_mask_kind) mask 365 end function kmp_set_affinity 366 367 function kmp_get_affinity(mask) bind(c) 368 use omp_lib_kinds 369 integer (kind=omp_integer_kind) kmp_get_affinity 370 integer (kind=kmp_affinity_mask_kind) mask 371 end function kmp_get_affinity 372 373 function kmp_get_affinity_max_proc() bind(c) 374 use omp_lib_kinds 375 integer (kind=omp_integer_kind) kmp_get_affinity_max_proc 376 end function kmp_get_affinity_max_proc 377 378 subroutine kmp_create_affinity_mask(mask) bind(c) 379 use omp_lib_kinds 380 integer (kind=kmp_affinity_mask_kind) mask 381 end subroutine kmp_create_affinity_mask 382 383 subroutine kmp_destroy_affinity_mask(mask) bind(c) 384 use omp_lib_kinds 385 integer (kind=kmp_affinity_mask_kind) mask 386 end subroutine kmp_destroy_affinity_mask 387 388 function kmp_set_affinity_mask_proc(proc, mask) bind(c) 389 use omp_lib_kinds 390 integer (kind=omp_integer_kind) kmp_set_affinity_mask_proc 391 integer (kind=omp_integer_kind), value :: proc 392 integer (kind=kmp_affinity_mask_kind) mask 393 end function kmp_set_affinity_mask_proc 394 395 function kmp_unset_affinity_mask_proc(proc, mask) bind(c) 396 use omp_lib_kinds 397 integer (kind=omp_integer_kind) kmp_unset_affinity_mask_proc 398 integer (kind=omp_integer_kind), value :: proc 399 integer (kind=kmp_affinity_mask_kind) mask 400 end function kmp_unset_affinity_mask_proc 401 402 function kmp_get_affinity_mask_proc(proc, mask) bind(c) 403 use omp_lib_kinds 404 integer (kind=omp_integer_kind) kmp_get_affinity_mask_proc 405 integer (kind=omp_integer_kind), value :: proc 406 integer (kind=kmp_affinity_mask_kind) mask 407 end function kmp_get_affinity_mask_proc 408 409 function kmp_malloc(size) bind(c) 410 use omp_lib_kinds 411 integer (kind=kmp_pointer_kind) kmp_malloc 412 integer (kind=kmp_size_t_kind), value :: size 413 end function kmp_malloc 414 415 function kmp_aligned_malloc(size, alignment) bind(c) 416 use omp_lib_kinds 417 integer (kind=kmp_pointer_kind) kmp_aligned_malloc 418 integer (kind=kmp_size_t_kind), value :: size 419 integer (kind=kmp_size_t_kind), value :: alignment 420 end function kmp_aligned_malloc 421 422 function kmp_calloc(nelem, elsize) bind(c) 423 use omp_lib_kinds 424 integer (kind=kmp_pointer_kind) kmp_calloc 425 integer (kind=kmp_size_t_kind), value :: nelem 426 integer (kind=kmp_size_t_kind), value :: elsize 427 end function kmp_calloc 428 429 function kmp_realloc(ptr, size) bind(c) 430 use omp_lib_kinds 431 integer (kind=kmp_pointer_kind) kmp_realloc 432 integer (kind=kmp_pointer_kind), value :: ptr 433 integer (kind=kmp_size_t_kind), value :: size 434 end function kmp_realloc 435 436 subroutine kmp_free(ptr) bind(c) 437 use omp_lib_kinds 438 integer (kind=kmp_pointer_kind), value :: ptr 439 end subroutine kmp_free 440 441 subroutine kmp_set_warnings_on() bind(c) 442 end subroutine kmp_set_warnings_on 443 444 subroutine kmp_set_warnings_off() bind(c) 445 end subroutine kmp_set_warnings_off 446 447 function kmp_get_cancellation_status(cancelkind) bind(c) 448 use omp_lib_kinds 449 integer (kind=kmp_cancel_kind), value :: cancelkind 450 logical (kind=omp_logical_kind) kmp_get_cancellation_status 451 end function kmp_get_cancellation_status 452 453 end interface 454 455 end module omp_lib 456