1! Copyright (C) 2005-2020 Free Software Foundation, Inc. 2! Contributed by Jakub Jelinek <jakub@redhat.com>. 3 4! This file is part of the GNU Offloading and Multi Processing Library 5! (libgomp). 6 7! Libgomp is free software; you can redistribute it and/or modify it 8! under the terms of the GNU General Public License as published by 9! the Free Software Foundation; either version 3, or (at your option) 10! any later version. 11 12! Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY 13! WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 14! FOR A PARTICULAR PURPOSE. See the GNU General Public License for 15! more details. 16 17! Under Section 7 of GPL version 3, you are granted additional 18! permissions described in the GCC Runtime Library Exception, version 19! 3.1, as published by the Free Software Foundation. 20 21! You should have received a copy of the GNU General Public License and 22! a copy of the GCC Runtime Library Exception along with this program; 23! see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 24! <http://www.gnu.org/licenses/>. 25 26 module omp_lib_kinds 27 implicit none 28 integer, parameter :: omp_lock_kind = @OMP_LOCK_KIND@ 29 integer, parameter :: omp_nest_lock_kind = @OMP_NEST_LOCK_KIND@ 30 integer, parameter :: omp_sched_kind = 4 31 integer, parameter :: omp_proc_bind_kind = 4 32 integer, parameter :: omp_lock_hint_kind = 4 33 integer, parameter :: omp_pause_resource_kind = 4 34 integer (omp_sched_kind), parameter :: omp_sched_static = 1 35 integer (omp_sched_kind), parameter :: omp_sched_dynamic = 2 36 integer (omp_sched_kind), parameter :: omp_sched_guided = 3 37 integer (omp_sched_kind), parameter :: omp_sched_auto = 4 38 integer (omp_proc_bind_kind), & 39 parameter :: omp_proc_bind_false = 0 40 integer (omp_proc_bind_kind), & 41 parameter :: omp_proc_bind_true = 1 42 integer (omp_proc_bind_kind), & 43 parameter :: omp_proc_bind_master = 2 44 integer (omp_proc_bind_kind), & 45 parameter :: omp_proc_bind_close = 3 46 integer (omp_proc_bind_kind), & 47 parameter :: omp_proc_bind_spread = 4 48 integer (omp_lock_hint_kind), & 49 parameter :: omp_lock_hint_none = 0 50 integer (omp_lock_hint_kind), & 51 parameter :: omp_lock_hint_uncontended = 1 52 integer (omp_lock_hint_kind), & 53 parameter :: omp_lock_hint_contended = 2 54 integer (omp_lock_hint_kind), & 55 parameter :: omp_lock_hint_nonspeculative = 4 56 integer (omp_lock_hint_kind), & 57 parameter :: omp_lock_hint_speculative = 8 58 integer (kind=omp_pause_resource_kind), & 59 parameter :: omp_pause_soft = 1 60 integer (kind=omp_pause_resource_kind), & 61 parameter :: omp_pause_hard = 2 62 end module 63 64 module omp_lib 65 use omp_lib_kinds 66 implicit none 67 integer, parameter :: openmp_version = 201511 68 69 interface 70 subroutine omp_init_lock (svar) 71 use omp_lib_kinds 72 integer (omp_lock_kind), intent (out) :: svar 73 end subroutine omp_init_lock 74 end interface 75 76 interface 77 subroutine omp_init_lock_with_hint (svar, hint) 78 use omp_lib_kinds 79 integer (omp_lock_kind), intent (out) :: svar 80 integer (omp_lock_hint_kind), intent (in) :: hint 81 end subroutine omp_init_lock_with_hint 82 end interface 83 84 interface 85 subroutine omp_init_nest_lock (nvar) 86 use omp_lib_kinds 87 integer (omp_nest_lock_kind), intent (out) :: nvar 88 end subroutine omp_init_nest_lock 89 end interface 90 91 interface 92 subroutine omp_init_nest_lock_with_hint (nvar, hint) 93 use omp_lib_kinds 94 integer (omp_nest_lock_kind), intent (out) :: nvar 95 integer (omp_lock_hint_kind), intent (in) :: hint 96 end subroutine omp_init_nest_lock_with_hint 97 end interface 98 99 interface 100 subroutine omp_destroy_lock (svar) 101 use omp_lib_kinds 102 integer (omp_lock_kind), intent (inout) :: svar 103 end subroutine omp_destroy_lock 104 end interface 105 106 interface 107 subroutine omp_destroy_nest_lock (nvar) 108 use omp_lib_kinds 109 integer (omp_nest_lock_kind), intent (inout) :: nvar 110 end subroutine omp_destroy_nest_lock 111 end interface 112 113 interface 114 subroutine omp_set_lock (svar) 115 use omp_lib_kinds 116 integer (omp_lock_kind), intent (inout) :: svar 117 end subroutine omp_set_lock 118 end interface 119 120 interface 121 subroutine omp_set_nest_lock (nvar) 122 use omp_lib_kinds 123 integer (omp_nest_lock_kind), intent (inout) :: nvar 124 end subroutine omp_set_nest_lock 125 end interface 126 127 interface 128 subroutine omp_unset_lock (svar) 129 use omp_lib_kinds 130 integer (omp_lock_kind), intent (inout) :: svar 131 end subroutine omp_unset_lock 132 end interface 133 134 interface 135 subroutine omp_unset_nest_lock (nvar) 136 use omp_lib_kinds 137 integer (omp_nest_lock_kind), intent (inout) :: nvar 138 end subroutine omp_unset_nest_lock 139 end interface 140 141 interface omp_set_dynamic 142 subroutine omp_set_dynamic (dynamic_threads) 143 logical (4), intent (in) :: dynamic_threads 144 end subroutine omp_set_dynamic 145 subroutine omp_set_dynamic_8 (dynamic_threads) 146 logical (8), intent (in) :: dynamic_threads 147 end subroutine omp_set_dynamic_8 148 end interface 149 150 interface omp_set_nested 151 subroutine omp_set_nested (nested) 152 logical (4), intent (in) :: nested 153 end subroutine omp_set_nested 154 subroutine omp_set_nested_8 (nested) 155 logical (8), intent (in) :: nested 156 end subroutine omp_set_nested_8 157 end interface 158 159 interface omp_set_num_threads 160 subroutine omp_set_num_threads (num_threads) 161 integer (4), intent (in) :: num_threads 162 end subroutine omp_set_num_threads 163 subroutine omp_set_num_threads_8 (num_threads) 164 integer (8), intent (in) :: num_threads 165 end subroutine omp_set_num_threads_8 166 end interface 167 168 interface 169 function omp_get_dynamic () 170 logical (4) :: omp_get_dynamic 171 end function omp_get_dynamic 172 end interface 173 174 interface 175 function omp_get_nested () 176 logical (4) :: omp_get_nested 177 end function omp_get_nested 178 end interface 179 180 interface 181 function omp_in_parallel () 182 logical (4) :: omp_in_parallel 183 end function omp_in_parallel 184 end interface 185 186 interface 187 function omp_test_lock (svar) 188 use omp_lib_kinds 189 logical (4) :: omp_test_lock 190 integer (omp_lock_kind), intent (inout) :: svar 191 end function omp_test_lock 192 end interface 193 194 interface 195 function omp_get_max_threads () 196 integer (4) :: omp_get_max_threads 197 end function omp_get_max_threads 198 end interface 199 200 interface 201 function omp_get_num_procs () 202 integer (4) :: omp_get_num_procs 203 end function omp_get_num_procs 204 end interface 205 206 interface 207 function omp_get_num_threads () 208 integer (4) :: omp_get_num_threads 209 end function omp_get_num_threads 210 end interface 211 212 interface 213 function omp_get_thread_num () 214 integer (4) :: omp_get_thread_num 215 end function omp_get_thread_num 216 end interface 217 218 interface 219 function omp_test_nest_lock (nvar) 220 use omp_lib_kinds 221 integer (4) :: omp_test_nest_lock 222 integer (omp_nest_lock_kind), intent (inout) :: nvar 223 end function omp_test_nest_lock 224 end interface 225 226 interface 227 function omp_get_wtick () 228 double precision :: omp_get_wtick 229 end function omp_get_wtick 230 end interface 231 232 interface 233 function omp_get_wtime () 234 double precision :: omp_get_wtime 235 end function omp_get_wtime 236 end interface 237 238 interface omp_set_schedule 239 subroutine omp_set_schedule (kind, chunk_size) 240 use omp_lib_kinds 241 integer (omp_sched_kind), intent (in) :: kind 242 integer (4), intent (in) :: chunk_size 243 end subroutine omp_set_schedule 244 subroutine omp_set_schedule_8 (kind, chunk_size) 245 use omp_lib_kinds 246 integer (omp_sched_kind), intent (in) :: kind 247 integer (8), intent (in) :: chunk_size 248 end subroutine omp_set_schedule_8 249 end interface 250 251 interface omp_get_schedule 252 subroutine omp_get_schedule (kind, chunk_size) 253 use omp_lib_kinds 254 integer (omp_sched_kind), intent (out) :: kind 255 integer (4), intent (out) :: chunk_size 256 end subroutine omp_get_schedule 257 subroutine omp_get_schedule_8 (kind, chunk_size) 258 use omp_lib_kinds 259 integer (omp_sched_kind), intent (out) :: kind 260 integer (8), intent (out) :: chunk_size 261 end subroutine omp_get_schedule_8 262 end interface 263 264 interface 265 function omp_get_thread_limit () 266 integer (4) :: omp_get_thread_limit 267 end function omp_get_thread_limit 268 end interface 269 270 interface omp_set_max_active_levels 271 subroutine omp_set_max_active_levels (max_levels) 272 integer (4), intent (in) :: max_levels 273 end subroutine omp_set_max_active_levels 274 subroutine omp_set_max_active_levels_8 (max_levels) 275 integer (8), intent (in) :: max_levels 276 end subroutine omp_set_max_active_levels_8 277 end interface 278 279 interface 280 function omp_get_max_active_levels () 281 integer (4) :: omp_get_max_active_levels 282 end function omp_get_max_active_levels 283 end interface 284 285 interface 286 function omp_get_level () 287 integer (4) :: omp_get_level 288 end function omp_get_level 289 end interface 290 291 interface omp_get_ancestor_thread_num 292 function omp_get_ancestor_thread_num (level) 293 integer (4), intent (in) :: level 294 integer (4) :: omp_get_ancestor_thread_num 295 end function omp_get_ancestor_thread_num 296 function omp_get_ancestor_thread_num_8 (level) 297 integer (8), intent (in) :: level 298 integer (4) :: omp_get_ancestor_thread_num_8 299 end function omp_get_ancestor_thread_num_8 300 end interface 301 302 interface omp_get_team_size 303 function omp_get_team_size (level) 304 integer (4), intent (in) :: level 305 integer (4) :: omp_get_team_size 306 end function omp_get_team_size 307 function omp_get_team_size_8 (level) 308 integer (8), intent (in) :: level 309 integer (4) :: omp_get_team_size_8 310 end function omp_get_team_size_8 311 end interface 312 313 interface 314 function omp_get_active_level () 315 integer (4) :: omp_get_active_level 316 end function omp_get_active_level 317 end interface 318 319 interface 320 function omp_in_final () 321 logical (4) :: omp_in_final 322 end function omp_in_final 323 end interface 324 325 interface 326 function omp_get_cancellation () 327 logical (4) :: omp_get_cancellation 328 end function omp_get_cancellation 329 end interface 330 331 interface 332 function omp_get_proc_bind () 333 use omp_lib_kinds 334 integer (omp_proc_bind_kind) :: omp_get_proc_bind 335 end function omp_get_proc_bind 336 end interface 337 338 interface 339 function omp_get_num_places () 340 integer (4) :: omp_get_num_places 341 end function omp_get_num_places 342 end interface 343 344 interface omp_get_place_num_procs 345 function omp_get_place_num_procs (place_num) 346 integer (4), intent(in) :: place_num 347 integer (4) :: omp_get_place_num_procs 348 end function omp_get_place_num_procs 349 350 function omp_get_place_num_procs_8 (place_num) 351 integer (8), intent(in) :: place_num 352 integer (4) :: omp_get_place_num_procs_8 353 end function omp_get_place_num_procs_8 354 end interface 355 356 interface omp_get_place_proc_ids 357 subroutine omp_get_place_proc_ids (place_num, ids) 358 integer (4), intent(in) :: place_num 359 integer (4), intent(out) :: ids(*) 360 end subroutine omp_get_place_proc_ids 361 362 subroutine omp_get_place_proc_ids_8 (place_num, ids) 363 integer (8), intent(in) :: place_num 364 integer (8), intent(out) :: ids(*) 365 end subroutine omp_get_place_proc_ids_8 366 end interface 367 368 interface 369 function omp_get_place_num () 370 integer (4) :: omp_get_place_num 371 end function omp_get_place_num 372 end interface 373 374 interface 375 function omp_get_partition_num_places () 376 integer (4) :: omp_get_partition_num_places 377 end function omp_get_partition_num_places 378 end interface 379 380 interface omp_get_partition_place_nums 381 subroutine omp_get_partition_place_nums (place_nums) 382 integer (4), intent(out) :: place_nums(*) 383 end subroutine omp_get_partition_place_nums 384 385 subroutine omp_get_partition_place_nums_8 (place_nums) 386 integer (8), intent(out) :: place_nums(*) 387 end subroutine omp_get_partition_place_nums_8 388 end interface 389 390 interface omp_set_default_device 391 subroutine omp_set_default_device (device_num) 392 integer (4), intent (in) :: device_num 393 end subroutine omp_set_default_device 394 subroutine omp_set_default_device_8 (device_num) 395 integer (8), intent (in) :: device_num 396 end subroutine omp_set_default_device_8 397 end interface 398 399 interface 400 function omp_get_default_device () 401 integer (4) :: omp_get_default_device 402 end function omp_get_default_device 403 end interface 404 405 interface 406 function omp_get_num_devices () 407 integer (4) :: omp_get_num_devices 408 end function omp_get_num_devices 409 end interface 410 411 interface 412 function omp_get_num_teams () 413 integer (4) :: omp_get_num_teams 414 end function omp_get_num_teams 415 end interface 416 417 interface 418 function omp_get_team_num () 419 integer (4) :: omp_get_team_num 420 end function omp_get_team_num 421 end interface 422 423 interface 424 function omp_is_initial_device () 425 logical (4) :: omp_is_initial_device 426 end function omp_is_initial_device 427 end interface 428 429 interface 430 function omp_get_initial_device () 431 integer (4) :: omp_get_initial_device 432 end function omp_get_initial_device 433 end interface 434 435 interface 436 function omp_get_max_task_priority () 437 integer (4) :: omp_get_max_task_priority 438 end function omp_get_max_task_priority 439 end interface 440 441 interface 442 subroutine omp_set_affinity_format (format) 443 character(len=*), intent(in) :: format 444 end subroutine omp_set_affinity_format 445 end interface 446 447 interface 448 function omp_get_affinity_format (buffer) 449 integer (4) :: omp_get_affinity_format 450 character(len=*), intent(out) :: buffer 451 end function omp_get_affinity_format 452 end interface 453 454 interface 455 subroutine omp_display_affinity (format) 456 character(len=*), intent(in) :: format 457 end subroutine omp_display_affinity 458 end interface 459 460 interface 461 function omp_capture_affinity (buffer, format) 462 integer (4) :: omp_capture_affinity 463 character(len=*), intent(out) :: buffer 464 character(len=*), intent(in) :: format 465 end function omp_capture_affinity 466 end interface 467 468 interface 469 function omp_pause_resource (kind, device_num) 470 use omp_lib_kinds 471 integer (4) :: omp_pause_resource 472 integer (kind=omp_pause_resource_kind), & 473 intent(in) :: kind 474 integer (4) :: device_num 475 end function 476 end interface 477 478 interface 479 function omp_pause_resource_all (kind) 480 use omp_lib_kinds 481 integer (4) :: omp_pause_resource_all 482 integer (kind=omp_pause_resource_kind), & 483 intent(in) :: kind 484 end function 485 end interface 486 487 end module omp_lib 488