1! include/30/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 :: 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 29 end module omp_lib_kinds 30 31 module omp_lib 32 33 use omp_lib_kinds 34 35 integer (kind=omp_integer_kind), parameter :: openmp_version = @LIBOMP_OMP_YEAR_MONTH@ 36 integer (kind=omp_integer_kind), parameter :: kmp_version_major = @LIBOMP_VERSION_MAJOR@ 37 integer (kind=omp_integer_kind), parameter :: kmp_version_minor = @LIBOMP_VERSION_MINOR@ 38 integer (kind=omp_integer_kind), parameter :: kmp_version_build = @LIBOMP_VERSION_BUILD@ 39 character(*) kmp_build_date 40 parameter( kmp_build_date = '@LIBOMP_BUILD_DATE@' ) 41 42 integer(kind=omp_sched_kind), parameter :: omp_sched_static = 1 43 integer(kind=omp_sched_kind), parameter :: omp_sched_dynamic = 2 44 integer(kind=omp_sched_kind), parameter :: omp_sched_guided = 3 45 integer(kind=omp_sched_kind), parameter :: omp_sched_auto = 4 46 47 interface 48 49! *** 50! *** omp_* entry points 51! *** 52 53 subroutine omp_set_num_threads(nthreads) bind(c) 54 use omp_lib_kinds 55 integer (kind=omp_integer_kind), value :: nthreads 56 end subroutine omp_set_num_threads 57 58 subroutine omp_set_dynamic(enable) bind(c) 59 use omp_lib_kinds 60 logical (kind=omp_logical_kind), value :: enable 61 end subroutine omp_set_dynamic 62 63 subroutine omp_set_nested(enable) bind(c) 64 use omp_lib_kinds 65 logical (kind=omp_logical_kind), value :: enable 66 end subroutine omp_set_nested 67 68 function omp_get_num_threads() bind(c) 69 use omp_lib_kinds 70 integer (kind=omp_integer_kind) omp_get_num_threads 71 end function omp_get_num_threads 72 73 function omp_get_max_threads() bind(c) 74 use omp_lib_kinds 75 integer (kind=omp_integer_kind) omp_get_max_threads 76 end function omp_get_max_threads 77 78 function omp_get_thread_num() bind(c) 79 use omp_lib_kinds 80 integer (kind=omp_integer_kind) omp_get_thread_num 81 end function omp_get_thread_num 82 83 function omp_get_num_procs() bind(c) 84 use omp_lib_kinds 85 integer (kind=omp_integer_kind) omp_get_num_procs 86 end function omp_get_num_procs 87 88 function omp_in_parallel() bind(c) 89 use omp_lib_kinds 90 logical (kind=omp_logical_kind) omp_in_parallel 91 end function omp_in_parallel 92 93 function omp_in_final() bind(c) 94 use omp_lib_kinds 95 logical (kind=omp_logical_kind) omp_in_final 96 end function omp_in_final 97 98 function omp_get_dynamic() bind(c) 99 use omp_lib_kinds 100 logical (kind=omp_logical_kind) omp_get_dynamic 101 end function omp_get_dynamic 102 103 function omp_get_nested() bind(c) 104 use omp_lib_kinds 105 logical (kind=omp_logical_kind) omp_get_nested 106 end function omp_get_nested 107 108 function omp_get_thread_limit() bind(c) 109 use omp_lib_kinds 110 integer (kind=omp_integer_kind) omp_get_thread_limit 111 end function omp_get_thread_limit 112 113 subroutine omp_set_max_active_levels(max_levels) bind(c) 114 use omp_lib_kinds 115 integer (kind=omp_integer_kind), value :: max_levels 116 end subroutine omp_set_max_active_levels 117 118 function omp_get_max_active_levels() bind(c) 119 use omp_lib_kinds 120 integer (kind=omp_integer_kind) omp_get_max_active_levels 121 end function omp_get_max_active_levels 122 123 function omp_get_level() bind(c) 124 use omp_lib_kinds 125 integer (kind=omp_integer_kind) :: omp_get_level 126 end function omp_get_level 127 128 function omp_get_active_level() bind(c) 129 use omp_lib_kinds 130 integer (kind=omp_integer_kind) :: omp_get_active_level 131 end function omp_get_active_level 132 133 function omp_get_ancestor_thread_num(level) bind(c) 134 use omp_lib_kinds 135 integer (kind=omp_integer_kind) omp_get_ancestor_thread_num 136 integer (kind=omp_integer_kind), value :: level 137 end function omp_get_ancestor_thread_num 138 139 function omp_get_team_size(level) bind(c) 140 use omp_lib_kinds 141 integer (kind=omp_integer_kind) omp_get_team_size 142 integer (kind=omp_integer_kind), value :: level 143 end function omp_get_team_size 144 145 subroutine omp_set_schedule(kind, modifier) bind(c) 146 use omp_lib_kinds 147 integer (kind=omp_sched_kind), value :: kind 148 integer (kind=omp_integer_kind), value :: modifier 149 end subroutine omp_set_schedule 150 151 subroutine omp_get_schedule(kind, modifier) bind(c) 152 use omp_lib_kinds 153 integer (kind=omp_sched_kind) :: kind 154 integer (kind=omp_integer_kind) :: modifier 155 end subroutine omp_get_schedule 156 157 function omp_get_wtime() bind(c) 158 use omp_lib_kinds 159 real (kind=kmp_double_kind) omp_get_wtime 160 end function omp_get_wtime 161 162 function omp_get_wtick() bind(c) 163 use omp_lib_kinds 164 real (kind=kmp_double_kind) omp_get_wtick 165 end function omp_get_wtick 166 167 subroutine omp_init_lock(lockvar) bind(c) 168 use omp_lib_kinds 169 integer (kind=omp_lock_kind) lockvar 170 end subroutine omp_init_lock 171 172 subroutine omp_destroy_lock(lockvar) bind(c) 173 use omp_lib_kinds 174 integer (kind=omp_lock_kind) lockvar 175 end subroutine omp_destroy_lock 176 177 subroutine omp_set_lock(lockvar) bind(c) 178 use omp_lib_kinds 179 integer (kind=omp_lock_kind) lockvar 180 end subroutine omp_set_lock 181 182 subroutine omp_unset_lock(lockvar) bind(c) 183 use omp_lib_kinds 184 integer (kind=omp_lock_kind) lockvar 185 end subroutine omp_unset_lock 186 187 function omp_test_lock(lockvar) bind(c) 188 use omp_lib_kinds 189 logical (kind=omp_logical_kind) omp_test_lock 190 integer (kind=omp_lock_kind) lockvar 191 end function omp_test_lock 192 193 subroutine omp_init_nest_lock(lockvar) bind(c) 194 use omp_lib_kinds 195 integer (kind=omp_nest_lock_kind) lockvar 196 end subroutine omp_init_nest_lock 197 198 subroutine omp_destroy_nest_lock(lockvar) bind(c) 199 use omp_lib_kinds 200 integer (kind=omp_nest_lock_kind) lockvar 201 end subroutine omp_destroy_nest_lock 202 203 subroutine omp_set_nest_lock(lockvar) bind(c) 204 use omp_lib_kinds 205 integer (kind=omp_nest_lock_kind) lockvar 206 end subroutine omp_set_nest_lock 207 208 subroutine omp_unset_nest_lock(lockvar) bind(c) 209 use omp_lib_kinds 210 integer (kind=omp_nest_lock_kind) lockvar 211 end subroutine omp_unset_nest_lock 212 213 function omp_test_nest_lock(lockvar) bind(c) 214 use omp_lib_kinds 215 integer (kind=omp_integer_kind) omp_test_nest_lock 216 integer (kind=omp_nest_lock_kind) lockvar 217 end function omp_test_nest_lock 218 219! *** 220! *** kmp_* entry points 221! *** 222 223 subroutine kmp_set_stacksize(size) bind(c) 224 use omp_lib_kinds 225 integer (kind=omp_integer_kind), value :: size 226 end subroutine kmp_set_stacksize 227 228 subroutine kmp_set_stacksize_s(size) bind(c) 229 use omp_lib_kinds 230 integer (kind=kmp_size_t_kind), value :: size 231 end subroutine kmp_set_stacksize_s 232 233 subroutine kmp_set_blocktime(msec) bind(c) 234 use omp_lib_kinds 235 integer (kind=omp_integer_kind), value :: msec 236 end subroutine kmp_set_blocktime 237 238 subroutine kmp_set_library_serial() bind(c) 239 end subroutine kmp_set_library_serial 240 241 subroutine kmp_set_library_turnaround() bind(c) 242 end subroutine kmp_set_library_turnaround 243 244 subroutine kmp_set_library_throughput() bind(c) 245 end subroutine kmp_set_library_throughput 246 247 subroutine kmp_set_library(libnum) bind(c) 248 use omp_lib_kinds 249 integer (kind=omp_integer_kind), value :: libnum 250 end subroutine kmp_set_library 251 252 subroutine kmp_set_defaults(string) bind(c) 253 use, intrinsic :: iso_c_binding 254 character (kind=c_char) :: string(*) 255 end subroutine kmp_set_defaults 256 257 function kmp_get_stacksize() bind(c) 258 use omp_lib_kinds 259 integer (kind=omp_integer_kind) kmp_get_stacksize 260 end function kmp_get_stacksize 261 262 function kmp_get_stacksize_s() bind(c) 263 use omp_lib_kinds 264 integer (kind=kmp_size_t_kind) kmp_get_stacksize_s 265 end function kmp_get_stacksize_s 266 267 function kmp_get_blocktime() bind(c) 268 use omp_lib_kinds 269 integer (kind=omp_integer_kind) kmp_get_blocktime 270 end function kmp_get_blocktime 271 272 function kmp_get_library() bind(c) 273 use omp_lib_kinds 274 integer (kind=omp_integer_kind) kmp_get_library 275 end function kmp_get_library 276 277 function kmp_set_affinity(mask) bind(c) 278 use omp_lib_kinds 279 integer (kind=omp_integer_kind) kmp_set_affinity 280 integer (kind=kmp_affinity_mask_kind) mask 281 end function kmp_set_affinity 282 283 function kmp_get_affinity(mask) bind(c) 284 use omp_lib_kinds 285 integer (kind=omp_integer_kind) kmp_get_affinity 286 integer (kind=kmp_affinity_mask_kind) mask 287 end function kmp_get_affinity 288 289 function kmp_get_affinity_max_proc() bind(c) 290 use omp_lib_kinds 291 integer (kind=omp_integer_kind) kmp_get_affinity_max_proc 292 end function kmp_get_affinity_max_proc 293 294 subroutine kmp_create_affinity_mask(mask) bind(c) 295 use omp_lib_kinds 296 integer (kind=kmp_affinity_mask_kind) mask 297 end subroutine kmp_create_affinity_mask 298 299 subroutine kmp_destroy_affinity_mask(mask) bind(c) 300 use omp_lib_kinds 301 integer (kind=kmp_affinity_mask_kind) mask 302 end subroutine kmp_destroy_affinity_mask 303 304 function kmp_set_affinity_mask_proc(proc, mask) bind(c) 305 use omp_lib_kinds 306 integer (kind=omp_integer_kind) kmp_set_affinity_mask_proc 307 integer (kind=omp_integer_kind), value :: proc 308 integer (kind=kmp_affinity_mask_kind) mask 309 end function kmp_set_affinity_mask_proc 310 311 function kmp_unset_affinity_mask_proc(proc, mask) bind(c) 312 use omp_lib_kinds 313 integer (kind=omp_integer_kind) kmp_unset_affinity_mask_proc 314 integer (kind=omp_integer_kind), value :: proc 315 integer (kind=kmp_affinity_mask_kind) mask 316 end function kmp_unset_affinity_mask_proc 317 318 function kmp_get_affinity_mask_proc(proc, mask) bind(c) 319 use omp_lib_kinds 320 integer (kind=omp_integer_kind) kmp_get_affinity_mask_proc 321 integer (kind=omp_integer_kind), value :: proc 322 integer (kind=kmp_affinity_mask_kind) mask 323 end function kmp_get_affinity_mask_proc 324 325 function kmp_malloc(size) bind(c) 326 use omp_lib_kinds 327 integer (kind=kmp_pointer_kind) kmp_malloc 328 integer (kind=kmp_size_t_kind), value :: size 329 end function kmp_malloc 330 331 function kmp_aligned_malloc(size, alignment) bind(c) 332 use omp_lib_kinds 333 integer (kind=kmp_pointer_kind) kmp_aligned_malloc 334 integer (kind=kmp_size_t_kind), value :: size 335 integer (kind=kmp_size_t_kind), value :: alignment 336 end function kmp_aligned_malloc 337 338 function kmp_calloc(nelem, elsize) bind(c) 339 use omp_lib_kinds 340 integer (kind=kmp_pointer_kind) kmp_calloc 341 integer (kind=kmp_size_t_kind), value :: nelem 342 integer (kind=kmp_size_t_kind), value :: elsize 343 end function kmp_calloc 344 345 function kmp_realloc(ptr, size) bind(c) 346 use omp_lib_kinds 347 integer (kind=kmp_pointer_kind) kmp_realloc 348 integer (kind=kmp_pointer_kind), value :: ptr 349 integer (kind=kmp_size_t_kind), value :: size 350 end function kmp_realloc 351 352 subroutine kmp_free(ptr) bind(c) 353 use omp_lib_kinds 354 integer (kind=kmp_pointer_kind), value :: ptr 355 end subroutine kmp_free 356 357 subroutine kmp_set_warnings_on() bind(c) 358 end subroutine kmp_set_warnings_on 359 360 subroutine kmp_set_warnings_off() bind(c) 361 end subroutine kmp_set_warnings_off 362 363 end interface 364 365 end module omp_lib 366