1*0fca6ea1SDimitry Andric! include/omp_lib.f90.var 2*0fca6ea1SDimitry Andric 3*0fca6ea1SDimitry Andric! 4*0fca6ea1SDimitry Andric!//===----------------------------------------------------------------------===// 5*0fca6ea1SDimitry Andric!// 6*0fca6ea1SDimitry Andric!// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 7*0fca6ea1SDimitry Andric!// See https://llvm.org/LICENSE.txt for license information. 8*0fca6ea1SDimitry Andric!// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 9*0fca6ea1SDimitry Andric!// 10*0fca6ea1SDimitry Andric!//===----------------------------------------------------------------------===// 11*0fca6ea1SDimitry Andric! 12*0fca6ea1SDimitry Andric 13*0fca6ea1SDimitry Andric module omp_lib_kinds 14*0fca6ea1SDimitry Andric 15*0fca6ea1SDimitry Andric use, intrinsic :: iso_c_binding 16*0fca6ea1SDimitry Andric 17*0fca6ea1SDimitry Andric ! Set PRIVATE by default to explicitly only export what is meant 18*0fca6ea1SDimitry Andric ! to be exported by this MODULE. 19*0fca6ea1SDimitry Andric private 20*0fca6ea1SDimitry Andric 21*0fca6ea1SDimitry Andric integer, parameter, public :: omp_integer_kind = c_int 22*0fca6ea1SDimitry Andric integer, parameter, public :: omp_logical_kind = 4 23*0fca6ea1SDimitry Andric integer, parameter, public :: omp_real_kind = c_float 24*0fca6ea1SDimitry Andric integer, parameter, public :: kmp_double_kind = c_double 25*0fca6ea1SDimitry Andric integer, parameter, public :: omp_lock_kind = c_intptr_t 26*0fca6ea1SDimitry Andric integer, parameter, public :: omp_nest_lock_kind = c_intptr_t 27*0fca6ea1SDimitry Andric integer, parameter, public :: omp_sched_kind = omp_integer_kind 28*0fca6ea1SDimitry Andric integer, parameter, public :: omp_proc_bind_kind = omp_integer_kind 29*0fca6ea1SDimitry Andric integer, parameter, public :: kmp_pointer_kind = c_intptr_t 30*0fca6ea1SDimitry Andric integer, parameter, public :: kmp_size_t_kind = c_size_t 31*0fca6ea1SDimitry Andric integer, parameter, public :: kmp_affinity_mask_kind = c_intptr_t 32*0fca6ea1SDimitry Andric integer, parameter, public :: kmp_cancel_kind = omp_integer_kind 33*0fca6ea1SDimitry Andric integer, parameter, public :: omp_sync_hint_kind = omp_integer_kind 34*0fca6ea1SDimitry Andric integer, parameter, public :: omp_lock_hint_kind = omp_sync_hint_kind 35*0fca6ea1SDimitry Andric integer, parameter, public :: omp_control_tool_kind = omp_integer_kind 36*0fca6ea1SDimitry Andric integer, parameter, public :: omp_control_tool_result_kind = omp_integer_kind 37*0fca6ea1SDimitry Andric integer, parameter, public :: omp_allocator_handle_kind = c_intptr_t 38*0fca6ea1SDimitry Andric integer, parameter, public :: omp_memspace_handle_kind = c_intptr_t 39*0fca6ea1SDimitry Andric integer, parameter, public :: omp_alloctrait_key_kind = omp_integer_kind 40*0fca6ea1SDimitry Andric integer, parameter, public :: omp_alloctrait_val_kind = c_intptr_t 41*0fca6ea1SDimitry Andric integer, parameter, public :: omp_interop_kind = c_intptr_t 42*0fca6ea1SDimitry Andric integer, parameter, public :: omp_interop_fr_kind = omp_integer_kind 43*0fca6ea1SDimitry Andric 44*0fca6ea1SDimitry Andric type omp_alloctrait 45*0fca6ea1SDimitry Andric integer(kind=omp_alloctrait_key_kind) key 46*0fca6ea1SDimitry Andric integer(kind=omp_alloctrait_val_kind) value 47*0fca6ea1SDimitry Andric end type omp_alloctrait 48*0fca6ea1SDimitry Andric public :: omp_alloctrait 49*0fca6ea1SDimitry Andric 50*0fca6ea1SDimitry Andric integer, parameter, public :: omp_pause_resource_kind = omp_integer_kind 51*0fca6ea1SDimitry Andric integer, parameter, public :: omp_depend_kind = c_intptr_t 52*0fca6ea1SDimitry Andric integer, parameter, public :: omp_event_handle_kind = c_intptr_t 53*0fca6ea1SDimitry Andric 54*0fca6ea1SDimitry Andric end module omp_lib_kinds 55*0fca6ea1SDimitry Andric 56*0fca6ea1SDimitry Andric module omp_lib 57*0fca6ea1SDimitry Andric 58*0fca6ea1SDimitry Andric use omp_lib_kinds 59*0fca6ea1SDimitry Andric 60*0fca6ea1SDimitry Andric ! Set PRIVATE by default to explicitly only export what is meant 61*0fca6ea1SDimitry Andric ! to be exported by this MODULE. 62*0fca6ea1SDimitry Andric private 63*0fca6ea1SDimitry Andric 64*0fca6ea1SDimitry Andric ! Re-export definitions in omp_lib_kinds 65*0fca6ea1SDimitry Andric public :: omp_integer_kind 66*0fca6ea1SDimitry Andric public :: omp_logical_kind 67*0fca6ea1SDimitry Andric public :: omp_real_kind 68*0fca6ea1SDimitry Andric public :: kmp_double_kind 69*0fca6ea1SDimitry Andric public :: omp_lock_kind 70*0fca6ea1SDimitry Andric public :: omp_nest_lock_kind 71*0fca6ea1SDimitry Andric public :: omp_sched_kind 72*0fca6ea1SDimitry Andric public :: omp_proc_bind_kind 73*0fca6ea1SDimitry Andric public :: kmp_pointer_kind 74*0fca6ea1SDimitry Andric public :: kmp_size_t_kind 75*0fca6ea1SDimitry Andric public :: kmp_affinity_mask_kind 76*0fca6ea1SDimitry Andric public :: kmp_cancel_kind 77*0fca6ea1SDimitry Andric public :: omp_sync_hint_kind 78*0fca6ea1SDimitry Andric public :: omp_lock_hint_kind 79*0fca6ea1SDimitry Andric public :: omp_control_tool_kind 80*0fca6ea1SDimitry Andric public :: omp_control_tool_result_kind 81*0fca6ea1SDimitry Andric public :: omp_allocator_handle_kind 82*0fca6ea1SDimitry Andric public :: omp_memspace_handle_kind 83*0fca6ea1SDimitry Andric public :: omp_alloctrait_key_kind 84*0fca6ea1SDimitry Andric public :: omp_alloctrait_val_kind 85*0fca6ea1SDimitry Andric public :: omp_interop_kind 86*0fca6ea1SDimitry Andric public :: omp_interop_fr_kind 87*0fca6ea1SDimitry Andric public :: omp_alloctrait 88*0fca6ea1SDimitry Andric public :: omp_pause_resource_kind 89*0fca6ea1SDimitry Andric public :: omp_depend_kind 90*0fca6ea1SDimitry Andric public :: omp_event_handle_kind 91*0fca6ea1SDimitry Andric 92*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind), parameter, public :: openmp_version = @LIBOMP_OMP_YEAR_MONTH@ 93*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind), parameter, public :: kmp_version_major = @LIBOMP_VERSION_MAJOR@ 94*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind), parameter, public :: kmp_version_minor = @LIBOMP_VERSION_MINOR@ 95*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind), parameter, public :: kmp_version_build = @LIBOMP_VERSION_BUILD@ 96*0fca6ea1SDimitry Andric character(*) kmp_build_date 97*0fca6ea1SDimitry Andric parameter( kmp_build_date = '@LIBOMP_BUILD_DATE@' ) 98*0fca6ea1SDimitry Andric 99*0fca6ea1SDimitry Andric integer(kind=omp_sched_kind), parameter, public :: omp_sched_static = 1 100*0fca6ea1SDimitry Andric integer(kind=omp_sched_kind), parameter, public :: omp_sched_dynamic = 2 101*0fca6ea1SDimitry Andric integer(kind=omp_sched_kind), parameter, public :: omp_sched_guided = 3 102*0fca6ea1SDimitry Andric integer(kind=omp_sched_kind), parameter, public :: omp_sched_auto = 4 103*0fca6ea1SDimitry Andric integer(kind=omp_sched_kind), parameter, public :: omp_sched_monotonic = int(Z'80000000', kind=omp_sched_kind) 104*0fca6ea1SDimitry Andric 105*0fca6ea1SDimitry Andric integer (kind=omp_proc_bind_kind), parameter, public :: omp_proc_bind_false = 0 106*0fca6ea1SDimitry Andric integer (kind=omp_proc_bind_kind), parameter, public :: omp_proc_bind_true = 1 107*0fca6ea1SDimitry Andric integer (kind=omp_proc_bind_kind), parameter, public :: omp_proc_bind_master = 2 108*0fca6ea1SDimitry Andric integer (kind=omp_proc_bind_kind), parameter, public :: omp_proc_bind_close = 3 109*0fca6ea1SDimitry Andric integer (kind=omp_proc_bind_kind), parameter, public :: omp_proc_bind_spread = 4 110*0fca6ea1SDimitry Andric 111*0fca6ea1SDimitry Andric integer (kind=kmp_cancel_kind), parameter, public :: kmp_cancel_parallel = 1 112*0fca6ea1SDimitry Andric integer (kind=kmp_cancel_kind), parameter, public :: kmp_cancel_loop = 2 113*0fca6ea1SDimitry Andric integer (kind=kmp_cancel_kind), parameter, public :: kmp_cancel_sections = 3 114*0fca6ea1SDimitry Andric integer (kind=kmp_cancel_kind), parameter, public :: kmp_cancel_taskgroup = 4 115*0fca6ea1SDimitry Andric 116*0fca6ea1SDimitry Andric integer (kind=omp_sync_hint_kind), parameter, public :: omp_sync_hint_none = 0 117*0fca6ea1SDimitry Andric integer (kind=omp_sync_hint_kind), parameter, public :: omp_sync_hint_uncontended = 1 118*0fca6ea1SDimitry Andric integer (kind=omp_sync_hint_kind), parameter, public :: omp_sync_hint_contended = 2 119*0fca6ea1SDimitry Andric integer (kind=omp_sync_hint_kind), parameter, public :: omp_sync_hint_nonspeculative = 4 120*0fca6ea1SDimitry Andric integer (kind=omp_sync_hint_kind), parameter, public :: omp_sync_hint_speculative = 8 121*0fca6ea1SDimitry Andric integer (kind=omp_lock_hint_kind), parameter, public :: omp_lock_hint_none = omp_sync_hint_none 122*0fca6ea1SDimitry Andric integer (kind=omp_lock_hint_kind), parameter, public :: omp_lock_hint_uncontended = omp_sync_hint_uncontended 123*0fca6ea1SDimitry Andric integer (kind=omp_lock_hint_kind), parameter, public :: omp_lock_hint_contended = omp_sync_hint_contended 124*0fca6ea1SDimitry Andric integer (kind=omp_lock_hint_kind), parameter, public :: omp_lock_hint_nonspeculative = omp_sync_hint_nonspeculative 125*0fca6ea1SDimitry Andric integer (kind=omp_lock_hint_kind), parameter, public :: omp_lock_hint_speculative = omp_sync_hint_speculative 126*0fca6ea1SDimitry Andric integer (kind=omp_lock_hint_kind), parameter, public :: kmp_lock_hint_hle = 65536 127*0fca6ea1SDimitry Andric integer (kind=omp_lock_hint_kind), parameter, public :: kmp_lock_hint_rtm = 131072 128*0fca6ea1SDimitry Andric integer (kind=omp_lock_hint_kind), parameter, public :: kmp_lock_hint_adaptive = 262144 129*0fca6ea1SDimitry Andric 130*0fca6ea1SDimitry Andric integer (kind=omp_control_tool_kind), parameter, public :: omp_control_tool_start = 1 131*0fca6ea1SDimitry Andric integer (kind=omp_control_tool_kind), parameter, public :: omp_control_tool_pause = 2 132*0fca6ea1SDimitry Andric integer (kind=omp_control_tool_kind), parameter, public :: omp_control_tool_flush = 3 133*0fca6ea1SDimitry Andric integer (kind=omp_control_tool_kind), parameter, public :: omp_control_tool_end = 4 134*0fca6ea1SDimitry Andric 135*0fca6ea1SDimitry Andric integer (kind=omp_control_tool_result_kind), parameter, public :: omp_control_tool_notool = -2 136*0fca6ea1SDimitry Andric integer (kind=omp_control_tool_result_kind), parameter, public :: omp_control_tool_nocallback = -1 137*0fca6ea1SDimitry Andric integer (kind=omp_control_tool_result_kind), parameter, public :: omp_control_tool_success = 0 138*0fca6ea1SDimitry Andric integer (kind=omp_control_tool_result_kind), parameter, public :: omp_control_tool_ignored = 1 139*0fca6ea1SDimitry Andric 140*0fca6ea1SDimitry Andric integer (kind=omp_alloctrait_key_kind), parameter, public :: omp_atk_sync_hint = 1 141*0fca6ea1SDimitry Andric integer (kind=omp_alloctrait_key_kind), parameter, public :: omp_atk_alignment = 2 142*0fca6ea1SDimitry Andric integer (kind=omp_alloctrait_key_kind), parameter, public :: omp_atk_access = 3 143*0fca6ea1SDimitry Andric integer (kind=omp_alloctrait_key_kind), parameter, public :: omp_atk_pool_size = 4 144*0fca6ea1SDimitry Andric integer (kind=omp_alloctrait_key_kind), parameter, public :: omp_atk_fallback = 5 145*0fca6ea1SDimitry Andric integer (kind=omp_alloctrait_key_kind), parameter, public :: omp_atk_fb_data = 6 146*0fca6ea1SDimitry Andric integer (kind=omp_alloctrait_key_kind), parameter, public :: omp_atk_pinned = 7 147*0fca6ea1SDimitry Andric integer (kind=omp_alloctrait_key_kind), parameter, public :: omp_atk_partition = 8 148*0fca6ea1SDimitry Andric 149*0fca6ea1SDimitry Andric integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_default = -1 150*0fca6ea1SDimitry Andric integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_false = 0 151*0fca6ea1SDimitry Andric integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_true = 1 152*0fca6ea1SDimitry Andric integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_contended = 3 153*0fca6ea1SDimitry Andric integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_uncontended = 4 154*0fca6ea1SDimitry Andric integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_serialized = 5 155*0fca6ea1SDimitry Andric integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_sequential = omp_atv_serialized 156*0fca6ea1SDimitry Andric integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_private = 6 157*0fca6ea1SDimitry Andric integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_all = 7 158*0fca6ea1SDimitry Andric integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_thread = 8 159*0fca6ea1SDimitry Andric integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_pteam = 9 160*0fca6ea1SDimitry Andric integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_cgroup = 10 161*0fca6ea1SDimitry Andric integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_default_mem_fb = 11 162*0fca6ea1SDimitry Andric integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_null_fb = 12 163*0fca6ea1SDimitry Andric integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_abort_fb = 13 164*0fca6ea1SDimitry Andric integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_allocator_fb = 14 165*0fca6ea1SDimitry Andric integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_environment = 15 166*0fca6ea1SDimitry Andric integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_nearest = 16 167*0fca6ea1SDimitry Andric integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_blocked = 17 168*0fca6ea1SDimitry Andric integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_interleaved = 18 169*0fca6ea1SDimitry Andric 170*0fca6ea1SDimitry Andric integer (kind=omp_allocator_handle_kind), parameter, public :: omp_null_allocator = 0 171*0fca6ea1SDimitry Andric integer (kind=omp_allocator_handle_kind), parameter, public :: omp_default_mem_alloc = 1 172*0fca6ea1SDimitry Andric integer (kind=omp_allocator_handle_kind), parameter, public :: omp_large_cap_mem_alloc = 2 173*0fca6ea1SDimitry Andric integer (kind=omp_allocator_handle_kind), parameter, public :: omp_const_mem_alloc = 3 174*0fca6ea1SDimitry Andric integer (kind=omp_allocator_handle_kind), parameter, public :: omp_high_bw_mem_alloc = 4 175*0fca6ea1SDimitry Andric integer (kind=omp_allocator_handle_kind), parameter, public :: omp_low_lat_mem_alloc = 5 176*0fca6ea1SDimitry Andric integer (kind=omp_allocator_handle_kind), parameter, public :: omp_cgroup_mem_alloc = 6 177*0fca6ea1SDimitry Andric integer (kind=omp_allocator_handle_kind), parameter, public :: omp_pteam_mem_alloc = 7 178*0fca6ea1SDimitry Andric integer (kind=omp_allocator_handle_kind), parameter, public :: omp_thread_mem_alloc = 8 179*0fca6ea1SDimitry Andric integer (kind=omp_allocator_handle_kind), parameter, public :: llvm_omp_target_host_mem_alloc = 100 180*0fca6ea1SDimitry Andric integer (kind=omp_allocator_handle_kind), parameter, public :: llvm_omp_target_shared_mem_alloc = 101 181*0fca6ea1SDimitry Andric integer (kind=omp_allocator_handle_kind), parameter, public :: llvm_omp_target_device_mem_alloc = 102 182*0fca6ea1SDimitry Andric 183*0fca6ea1SDimitry Andric integer (kind=omp_memspace_handle_kind), parameter, public :: omp_default_mem_space = 0 184*0fca6ea1SDimitry Andric integer (kind=omp_memspace_handle_kind), parameter, public :: omp_large_cap_mem_space = 1 185*0fca6ea1SDimitry Andric integer (kind=omp_memspace_handle_kind), parameter, public :: omp_const_mem_space = 2 186*0fca6ea1SDimitry Andric integer (kind=omp_memspace_handle_kind), parameter, public :: omp_high_bw_mem_space = 3 187*0fca6ea1SDimitry Andric integer (kind=omp_memspace_handle_kind), parameter, public :: omp_low_lat_mem_space = 4 188*0fca6ea1SDimitry Andric integer (kind=omp_memspace_handle_kind), parameter, public :: llvm_omp_target_host_mem_space = 100 189*0fca6ea1SDimitry Andric integer (kind=omp_memspace_handle_kind), parameter, public :: llvm_omp_target_shared_mem_space = 101 190*0fca6ea1SDimitry Andric integer (kind=omp_memspace_handle_kind), parameter, public :: llvm_omp_target_device_mem_space = 102 191*0fca6ea1SDimitry Andric 192*0fca6ea1SDimitry Andric integer (kind=omp_pause_resource_kind), parameter, public :: omp_pause_resume = 0 193*0fca6ea1SDimitry Andric integer (kind=omp_pause_resource_kind), parameter, public :: omp_pause_soft = 1 194*0fca6ea1SDimitry Andric integer (kind=omp_pause_resource_kind), parameter, public :: omp_pause_hard = 2 195*0fca6ea1SDimitry Andric 196*0fca6ea1SDimitry Andric integer (kind=omp_interop_fr_kind), parameter, public :: omp_ifr_cuda = 1 197*0fca6ea1SDimitry Andric integer (kind=omp_interop_fr_kind), parameter, public :: omp_ifr_cuda_driver = 2 198*0fca6ea1SDimitry Andric integer (kind=omp_interop_fr_kind), parameter, public :: omp_ifr_opencl = 3 199*0fca6ea1SDimitry Andric integer (kind=omp_interop_fr_kind), parameter, public :: omp_ifr_sycl = 4 200*0fca6ea1SDimitry Andric integer (kind=omp_interop_fr_kind), parameter, public :: omp_ifr_hip = 5 201*0fca6ea1SDimitry Andric integer (kind=omp_interop_fr_kind), parameter, public :: omp_ifr_level_zero = 6 202*0fca6ea1SDimitry Andric integer (kind=omp_interop_fr_kind), parameter, public :: omp_ifr_last = 7 203*0fca6ea1SDimitry Andric 204*0fca6ea1SDimitry Andric integer (kind=omp_interop_kind), parameter, public :: omp_interop_none = 0 205*0fca6ea1SDimitry Andric 206*0fca6ea1SDimitry Andric interface 207*0fca6ea1SDimitry Andric 208*0fca6ea1SDimitry Andric! *** 209*0fca6ea1SDimitry Andric! *** omp_* entry points 210*0fca6ea1SDimitry Andric! *** 211*0fca6ea1SDimitry Andric 212*0fca6ea1SDimitry Andric subroutine omp_set_num_threads(num_threads) bind(c) 213*0fca6ea1SDimitry Andric use omp_lib_kinds 214*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind), value :: num_threads 215*0fca6ea1SDimitry Andric end subroutine omp_set_num_threads 216*0fca6ea1SDimitry Andric 217*0fca6ea1SDimitry Andric subroutine omp_set_dynamic(dynamic_threads) bind(c) 218*0fca6ea1SDimitry Andric use omp_lib_kinds 219*0fca6ea1SDimitry Andric logical (kind=omp_logical_kind), value :: dynamic_threads 220*0fca6ea1SDimitry Andric end subroutine omp_set_dynamic 221*0fca6ea1SDimitry Andric 222*0fca6ea1SDimitry Andric subroutine omp_set_nested(nested) bind(c) 223*0fca6ea1SDimitry Andric use omp_lib_kinds 224*0fca6ea1SDimitry Andric logical (kind=omp_logical_kind), value :: nested 225*0fca6ea1SDimitry Andric end subroutine omp_set_nested 226*0fca6ea1SDimitry Andric 227*0fca6ea1SDimitry Andric function omp_get_num_threads() bind(c) 228*0fca6ea1SDimitry Andric use omp_lib_kinds 229*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind) omp_get_num_threads 230*0fca6ea1SDimitry Andric end function omp_get_num_threads 231*0fca6ea1SDimitry Andric 232*0fca6ea1SDimitry Andric function omp_get_max_threads() bind(c) 233*0fca6ea1SDimitry Andric use omp_lib_kinds 234*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind) omp_get_max_threads 235*0fca6ea1SDimitry Andric end function omp_get_max_threads 236*0fca6ea1SDimitry Andric 237*0fca6ea1SDimitry Andric function omp_get_thread_num() bind(c) 238*0fca6ea1SDimitry Andric use omp_lib_kinds 239*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind) omp_get_thread_num 240*0fca6ea1SDimitry Andric end function omp_get_thread_num 241*0fca6ea1SDimitry Andric 242*0fca6ea1SDimitry Andric function omp_get_num_procs() bind(c) 243*0fca6ea1SDimitry Andric use omp_lib_kinds 244*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind) omp_get_num_procs 245*0fca6ea1SDimitry Andric end function omp_get_num_procs 246*0fca6ea1SDimitry Andric 247*0fca6ea1SDimitry Andric function omp_in_parallel() bind(c) 248*0fca6ea1SDimitry Andric use omp_lib_kinds 249*0fca6ea1SDimitry Andric logical (kind=omp_logical_kind) omp_in_parallel 250*0fca6ea1SDimitry Andric end function omp_in_parallel 251*0fca6ea1SDimitry Andric 252*0fca6ea1SDimitry Andric function omp_in_final() bind(c) 253*0fca6ea1SDimitry Andric use omp_lib_kinds 254*0fca6ea1SDimitry Andric logical (kind=omp_logical_kind) omp_in_final 255*0fca6ea1SDimitry Andric end function omp_in_final 256*0fca6ea1SDimitry Andric 257*0fca6ea1SDimitry Andric function omp_get_dynamic() bind(c) 258*0fca6ea1SDimitry Andric use omp_lib_kinds 259*0fca6ea1SDimitry Andric logical (kind=omp_logical_kind) omp_get_dynamic 260*0fca6ea1SDimitry Andric end function omp_get_dynamic 261*0fca6ea1SDimitry Andric 262*0fca6ea1SDimitry Andric function omp_get_nested() bind(c) 263*0fca6ea1SDimitry Andric use omp_lib_kinds 264*0fca6ea1SDimitry Andric logical (kind=omp_logical_kind) omp_get_nested 265*0fca6ea1SDimitry Andric end function omp_get_nested 266*0fca6ea1SDimitry Andric 267*0fca6ea1SDimitry Andric function omp_get_thread_limit() bind(c) 268*0fca6ea1SDimitry Andric use omp_lib_kinds 269*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind) omp_get_thread_limit 270*0fca6ea1SDimitry Andric end function omp_get_thread_limit 271*0fca6ea1SDimitry Andric 272*0fca6ea1SDimitry Andric subroutine omp_set_max_active_levels(max_levels) bind(c) 273*0fca6ea1SDimitry Andric use omp_lib_kinds 274*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind), value :: max_levels 275*0fca6ea1SDimitry Andric end subroutine omp_set_max_active_levels 276*0fca6ea1SDimitry Andric 277*0fca6ea1SDimitry Andric function omp_get_max_active_levels() bind(c) 278*0fca6ea1SDimitry Andric use omp_lib_kinds 279*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind) omp_get_max_active_levels 280*0fca6ea1SDimitry Andric end function omp_get_max_active_levels 281*0fca6ea1SDimitry Andric 282*0fca6ea1SDimitry Andric function omp_get_level() bind(c) 283*0fca6ea1SDimitry Andric use omp_lib_kinds 284*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind) omp_get_level 285*0fca6ea1SDimitry Andric end function omp_get_level 286*0fca6ea1SDimitry Andric 287*0fca6ea1SDimitry Andric function omp_get_active_level() bind(c) 288*0fca6ea1SDimitry Andric use omp_lib_kinds 289*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind) omp_get_active_level 290*0fca6ea1SDimitry Andric end function omp_get_active_level 291*0fca6ea1SDimitry Andric 292*0fca6ea1SDimitry Andric function omp_get_ancestor_thread_num(level) bind(c) 293*0fca6ea1SDimitry Andric use omp_lib_kinds 294*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind) omp_get_ancestor_thread_num 295*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind), value :: level 296*0fca6ea1SDimitry Andric end function omp_get_ancestor_thread_num 297*0fca6ea1SDimitry Andric 298*0fca6ea1SDimitry Andric function omp_get_team_size(level) bind(c) 299*0fca6ea1SDimitry Andric use omp_lib_kinds 300*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind) omp_get_team_size 301*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind), value :: level 302*0fca6ea1SDimitry Andric end function omp_get_team_size 303*0fca6ea1SDimitry Andric 304*0fca6ea1SDimitry Andric subroutine omp_set_schedule(kind, chunk_size) bind(c) 305*0fca6ea1SDimitry Andric use omp_lib_kinds 306*0fca6ea1SDimitry Andric integer (kind=omp_sched_kind), value :: kind 307*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind), value :: chunk_size 308*0fca6ea1SDimitry Andric end subroutine omp_set_schedule 309*0fca6ea1SDimitry Andric 310*0fca6ea1SDimitry Andric subroutine omp_get_schedule(kind, chunk_size) bind(c) 311*0fca6ea1SDimitry Andric use omp_lib_kinds 312*0fca6ea1SDimitry Andric integer (kind=omp_sched_kind) kind 313*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind) chunk_size 314*0fca6ea1SDimitry Andric end subroutine omp_get_schedule 315*0fca6ea1SDimitry Andric 316*0fca6ea1SDimitry Andric function omp_get_proc_bind() bind(c) 317*0fca6ea1SDimitry Andric use omp_lib_kinds 318*0fca6ea1SDimitry Andric integer (kind=omp_proc_bind_kind) omp_get_proc_bind 319*0fca6ea1SDimitry Andric end function omp_get_proc_bind 320*0fca6ea1SDimitry Andric 321*0fca6ea1SDimitry Andric function omp_get_num_places() bind(c) 322*0fca6ea1SDimitry Andric use omp_lib_kinds 323*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind) omp_get_num_places 324*0fca6ea1SDimitry Andric end function omp_get_num_places 325*0fca6ea1SDimitry Andric 326*0fca6ea1SDimitry Andric function omp_get_place_num_procs(place_num) bind(c) 327*0fca6ea1SDimitry Andric use omp_lib_kinds 328*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind), value :: place_num 329*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind) omp_get_place_num_procs 330*0fca6ea1SDimitry Andric end function omp_get_place_num_procs 331*0fca6ea1SDimitry Andric 332*0fca6ea1SDimitry Andric subroutine omp_get_place_proc_ids(place_num, ids) bind(c) 333*0fca6ea1SDimitry Andric use omp_lib_kinds 334*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind), value :: place_num 335*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind) ids(*) 336*0fca6ea1SDimitry Andric end subroutine omp_get_place_proc_ids 337*0fca6ea1SDimitry Andric 338*0fca6ea1SDimitry Andric function omp_get_place_num() bind(c) 339*0fca6ea1SDimitry Andric use omp_lib_kinds 340*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind) omp_get_place_num 341*0fca6ea1SDimitry Andric end function omp_get_place_num 342*0fca6ea1SDimitry Andric 343*0fca6ea1SDimitry Andric function omp_get_partition_num_places() bind(c) 344*0fca6ea1SDimitry Andric use omp_lib_kinds 345*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind) omp_get_partition_num_places 346*0fca6ea1SDimitry Andric end function omp_get_partition_num_places 347*0fca6ea1SDimitry Andric 348*0fca6ea1SDimitry Andric subroutine omp_get_partition_place_nums(place_nums) bind(c) 349*0fca6ea1SDimitry Andric use omp_lib_kinds 350*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind) place_nums(*) 351*0fca6ea1SDimitry Andric end subroutine omp_get_partition_place_nums 352*0fca6ea1SDimitry Andric 353*0fca6ea1SDimitry Andric function omp_get_wtime() bind(c) 354*0fca6ea1SDimitry Andric use omp_lib_kinds 355*0fca6ea1SDimitry Andric real (kind=kmp_double_kind) omp_get_wtime 356*0fca6ea1SDimitry Andric end function omp_get_wtime 357*0fca6ea1SDimitry Andric 358*0fca6ea1SDimitry Andric function omp_get_wtick() bind(c) 359*0fca6ea1SDimitry Andric use omp_lib_kinds 360*0fca6ea1SDimitry Andric real (kind=kmp_double_kind) omp_get_wtick 361*0fca6ea1SDimitry Andric end function omp_get_wtick 362*0fca6ea1SDimitry Andric 363*0fca6ea1SDimitry Andric function omp_get_default_device() bind(c) 364*0fca6ea1SDimitry Andric use omp_lib_kinds 365*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind) omp_get_default_device 366*0fca6ea1SDimitry Andric end function omp_get_default_device 367*0fca6ea1SDimitry Andric 368*0fca6ea1SDimitry Andric subroutine omp_set_default_device(device_num) bind(c) 369*0fca6ea1SDimitry Andric use omp_lib_kinds 370*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind), value :: device_num 371*0fca6ea1SDimitry Andric end subroutine omp_set_default_device 372*0fca6ea1SDimitry Andric 373*0fca6ea1SDimitry Andric function omp_get_num_devices() bind(c) 374*0fca6ea1SDimitry Andric use omp_lib_kinds 375*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind) omp_get_num_devices 376*0fca6ea1SDimitry Andric end function omp_get_num_devices 377*0fca6ea1SDimitry Andric 378*0fca6ea1SDimitry Andric function omp_get_num_teams() bind(c) 379*0fca6ea1SDimitry Andric use omp_lib_kinds 380*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind) omp_get_num_teams 381*0fca6ea1SDimitry Andric end function omp_get_num_teams 382*0fca6ea1SDimitry Andric 383*0fca6ea1SDimitry Andric function omp_get_team_num() bind(c) 384*0fca6ea1SDimitry Andric use omp_lib_kinds 385*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind) omp_get_team_num 386*0fca6ea1SDimitry Andric end function omp_get_team_num 387*0fca6ea1SDimitry Andric 388*0fca6ea1SDimitry Andric function omp_get_cancellation() bind(c) 389*0fca6ea1SDimitry Andric use omp_lib_kinds 390*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind) omp_get_cancellation 391*0fca6ea1SDimitry Andric end function omp_get_cancellation 392*0fca6ea1SDimitry Andric 393*0fca6ea1SDimitry Andric function omp_is_initial_device() bind(c) 394*0fca6ea1SDimitry Andric use omp_lib_kinds 395*0fca6ea1SDimitry Andric logical (kind=omp_logical_kind) omp_is_initial_device 396*0fca6ea1SDimitry Andric end function omp_is_initial_device 397*0fca6ea1SDimitry Andric 398*0fca6ea1SDimitry Andric function omp_get_initial_device() bind(c) 399*0fca6ea1SDimitry Andric use omp_lib_kinds 400*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind) omp_get_initial_device 401*0fca6ea1SDimitry Andric end function omp_get_initial_device 402*0fca6ea1SDimitry Andric 403*0fca6ea1SDimitry Andric function omp_get_device_num() bind(c) 404*0fca6ea1SDimitry Andric use omp_lib_kinds 405*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind) omp_get_device_num 406*0fca6ea1SDimitry Andric end function omp_get_device_num 407*0fca6ea1SDimitry Andric 408*0fca6ea1SDimitry Andric function omp_pause_resource(kind, device_num) bind(c) 409*0fca6ea1SDimitry Andric use omp_lib_kinds 410*0fca6ea1SDimitry Andric integer (kind=omp_pause_resource_kind), value :: kind 411*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind), value :: device_num 412*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind) omp_pause_resource 413*0fca6ea1SDimitry Andric end function omp_pause_resource 414*0fca6ea1SDimitry Andric 415*0fca6ea1SDimitry Andric function omp_pause_resource_all(kind) bind(c) 416*0fca6ea1SDimitry Andric use omp_lib_kinds 417*0fca6ea1SDimitry Andric integer (kind=omp_pause_resource_kind), value :: kind 418*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind) omp_pause_resource_all 419*0fca6ea1SDimitry Andric end function omp_pause_resource_all 420*0fca6ea1SDimitry Andric 421*0fca6ea1SDimitry Andric function omp_get_supported_active_levels() bind(c) 422*0fca6ea1SDimitry Andric use omp_lib_kinds 423*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind) omp_get_supported_active_levels 424*0fca6ea1SDimitry Andric end function omp_get_supported_active_levels 425*0fca6ea1SDimitry Andric 426*0fca6ea1SDimitry Andric subroutine omp_fulfill_event(event) bind(c) 427*0fca6ea1SDimitry Andric use omp_lib_kinds 428*0fca6ea1SDimitry Andric integer (kind=omp_event_handle_kind), value :: event 429*0fca6ea1SDimitry Andric end subroutine omp_fulfill_event 430*0fca6ea1SDimitry Andric 431*0fca6ea1SDimitry Andric subroutine omp_init_lock(svar) bind(c) 432*0fca6ea1SDimitry Andric#ifdef __INTEL_COMPILER 433*0fca6ea1SDimitry Andric!DIR$ IF(__INTEL_COMPILER.GE.1400) 434*0fca6ea1SDimitry Andric!DIR$ attributes known_intrinsic :: omp_init_lock 435*0fca6ea1SDimitry Andric!DIR$ ENDIF 436*0fca6ea1SDimitry Andric#endif 437*0fca6ea1SDimitry Andric use omp_lib_kinds 438*0fca6ea1SDimitry Andric integer (kind=omp_lock_kind) svar 439*0fca6ea1SDimitry Andric end subroutine omp_init_lock 440*0fca6ea1SDimitry Andric 441*0fca6ea1SDimitry Andric subroutine omp_destroy_lock(svar) bind(c) 442*0fca6ea1SDimitry Andric#ifdef __INTEL_COMPILER 443*0fca6ea1SDimitry Andric!DIR$ IF(__INTEL_COMPILER.GE.1400) 444*0fca6ea1SDimitry Andric!DIR$ attributes known_intrinsic :: omp_destroy_lock 445*0fca6ea1SDimitry Andric!DIR$ ENDIF 446*0fca6ea1SDimitry Andric#endif 447*0fca6ea1SDimitry Andric use omp_lib_kinds 448*0fca6ea1SDimitry Andric integer (kind=omp_lock_kind) svar 449*0fca6ea1SDimitry Andric end subroutine omp_destroy_lock 450*0fca6ea1SDimitry Andric 451*0fca6ea1SDimitry Andric subroutine omp_set_lock(svar) bind(c) 452*0fca6ea1SDimitry Andric#ifdef __INTEL_COMPILER 453*0fca6ea1SDimitry Andric!DIR$ IF(__INTEL_COMPILER.GE.1400) 454*0fca6ea1SDimitry Andric!DIR$ attributes known_intrinsic :: omp_set_lock 455*0fca6ea1SDimitry Andric!DIR$ ENDIF 456*0fca6ea1SDimitry Andric#endif 457*0fca6ea1SDimitry Andric use omp_lib_kinds 458*0fca6ea1SDimitry Andric integer (kind=omp_lock_kind) svar 459*0fca6ea1SDimitry Andric end subroutine omp_set_lock 460*0fca6ea1SDimitry Andric 461*0fca6ea1SDimitry Andric subroutine omp_unset_lock(svar) bind(c) 462*0fca6ea1SDimitry Andric#ifdef __INTEL_COMPILER 463*0fca6ea1SDimitry Andric!DIR$ IF(__INTEL_COMPILER.GE.1400) 464*0fca6ea1SDimitry Andric!DIR$ attributes known_intrinsic :: omp_unset_lock 465*0fca6ea1SDimitry Andric!DIR$ ENDIF 466*0fca6ea1SDimitry Andric#endif 467*0fca6ea1SDimitry Andric use omp_lib_kinds 468*0fca6ea1SDimitry Andric integer (kind=omp_lock_kind) svar 469*0fca6ea1SDimitry Andric end subroutine omp_unset_lock 470*0fca6ea1SDimitry Andric 471*0fca6ea1SDimitry Andric function omp_test_lock(svar) bind(c) 472*0fca6ea1SDimitry Andric#ifdef __INTEL_COMPILER 473*0fca6ea1SDimitry Andric!DIR$ IF(__INTEL_COMPILER.GE.1400) 474*0fca6ea1SDimitry Andric!DIR$ attributes known_intrinsic :: omp_test_lock 475*0fca6ea1SDimitry Andric!DIR$ ENDIF 476*0fca6ea1SDimitry Andric#endif 477*0fca6ea1SDimitry Andric use omp_lib_kinds 478*0fca6ea1SDimitry Andric logical (kind=omp_logical_kind) omp_test_lock 479*0fca6ea1SDimitry Andric integer (kind=omp_lock_kind) svar 480*0fca6ea1SDimitry Andric end function omp_test_lock 481*0fca6ea1SDimitry Andric 482*0fca6ea1SDimitry Andric subroutine omp_init_nest_lock(nvar) bind(c) 483*0fca6ea1SDimitry Andric#ifdef __INTEL_COMPILER 484*0fca6ea1SDimitry Andric!DIR$ IF(__INTEL_COMPILER.GE.1400) 485*0fca6ea1SDimitry Andric!DIR$ attributes known_intrinsic :: omp_init_nest_lock 486*0fca6ea1SDimitry Andric!DIR$ ENDIF 487*0fca6ea1SDimitry Andric#endif 488*0fca6ea1SDimitry Andric use omp_lib_kinds 489*0fca6ea1SDimitry Andric integer (kind=omp_nest_lock_kind) nvar 490*0fca6ea1SDimitry Andric end subroutine omp_init_nest_lock 491*0fca6ea1SDimitry Andric 492*0fca6ea1SDimitry Andric subroutine omp_destroy_nest_lock(nvar) bind(c) 493*0fca6ea1SDimitry Andric#ifdef __INTEL_COMPILER 494*0fca6ea1SDimitry Andric!DIR$ IF(__INTEL_COMPILER.GE.1400) 495*0fca6ea1SDimitry Andric!DIR$ attributes known_intrinsic :: omp_destroy_nest_lock 496*0fca6ea1SDimitry Andric!DIR$ ENDIF 497*0fca6ea1SDimitry Andric#endif 498*0fca6ea1SDimitry Andric use omp_lib_kinds 499*0fca6ea1SDimitry Andric integer (kind=omp_nest_lock_kind) nvar 500*0fca6ea1SDimitry Andric end subroutine omp_destroy_nest_lock 501*0fca6ea1SDimitry Andric 502*0fca6ea1SDimitry Andric subroutine omp_set_nest_lock(nvar) bind(c) 503*0fca6ea1SDimitry Andric#ifdef __INTEL_COMPILER 504*0fca6ea1SDimitry Andric!DIR$ IF(__INTEL_COMPILER.GE.1400) 505*0fca6ea1SDimitry Andric!DIR$ attributes known_intrinsic :: omp_set_nest_lock 506*0fca6ea1SDimitry Andric!DIR$ ENDIF 507*0fca6ea1SDimitry Andric#endif 508*0fca6ea1SDimitry Andric use omp_lib_kinds 509*0fca6ea1SDimitry Andric integer (kind=omp_nest_lock_kind) nvar 510*0fca6ea1SDimitry Andric end subroutine omp_set_nest_lock 511*0fca6ea1SDimitry Andric 512*0fca6ea1SDimitry Andric subroutine omp_unset_nest_lock(nvar) bind(c) 513*0fca6ea1SDimitry Andric#ifdef __INTEL_COMPILER 514*0fca6ea1SDimitry Andric!DIR$ IF(__INTEL_COMPILER.GE.1400) 515*0fca6ea1SDimitry Andric!DIR$ attributes known_intrinsic :: omp_unset_nest_lock 516*0fca6ea1SDimitry Andric!DIR$ ENDIF 517*0fca6ea1SDimitry Andric#endif 518*0fca6ea1SDimitry Andric use omp_lib_kinds 519*0fca6ea1SDimitry Andric integer (kind=omp_nest_lock_kind) nvar 520*0fca6ea1SDimitry Andric end subroutine omp_unset_nest_lock 521*0fca6ea1SDimitry Andric 522*0fca6ea1SDimitry Andric function omp_test_nest_lock(nvar) bind(c) 523*0fca6ea1SDimitry Andric#ifdef __INTEL_COMPILER 524*0fca6ea1SDimitry Andric!DIR$ IF(__INTEL_COMPILER.GE.1400) 525*0fca6ea1SDimitry Andric!DIR$ attributes known_intrinsic :: omp_test_nest_lock 526*0fca6ea1SDimitry Andric!DIR$ ENDIF 527*0fca6ea1SDimitry Andric#endif 528*0fca6ea1SDimitry Andric use omp_lib_kinds 529*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind) omp_test_nest_lock 530*0fca6ea1SDimitry Andric integer (kind=omp_nest_lock_kind) nvar 531*0fca6ea1SDimitry Andric end function omp_test_nest_lock 532*0fca6ea1SDimitry Andric 533*0fca6ea1SDimitry Andric function omp_get_max_task_priority() bind(c) 534*0fca6ea1SDimitry Andric use omp_lib_kinds 535*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind) omp_get_max_task_priority 536*0fca6ea1SDimitry Andric end function omp_get_max_task_priority 537*0fca6ea1SDimitry Andric 538*0fca6ea1SDimitry Andric subroutine omp_init_lock_with_hint(svar, hint) bind(c) 539*0fca6ea1SDimitry Andric use omp_lib_kinds 540*0fca6ea1SDimitry Andric integer (kind=omp_lock_kind) svar 541*0fca6ea1SDimitry Andric integer (kind=omp_lock_hint_kind), value :: hint 542*0fca6ea1SDimitry Andric end subroutine omp_init_lock_with_hint 543*0fca6ea1SDimitry Andric 544*0fca6ea1SDimitry Andric subroutine omp_init_nest_lock_with_hint(nvar, hint) bind(c) 545*0fca6ea1SDimitry Andric use omp_lib_kinds 546*0fca6ea1SDimitry Andric integer (kind=omp_nest_lock_kind) nvar 547*0fca6ea1SDimitry Andric integer (kind=omp_lock_hint_kind), value :: hint 548*0fca6ea1SDimitry Andric end subroutine omp_init_nest_lock_with_hint 549*0fca6ea1SDimitry Andric 550*0fca6ea1SDimitry Andric function omp_control_tool(command, modifier, arg) bind(c) 551*0fca6ea1SDimitry Andric use omp_lib_kinds 552*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind) omp_control_tool 553*0fca6ea1SDimitry Andric integer (kind=omp_control_tool_kind), value :: command 554*0fca6ea1SDimitry Andric integer (kind=omp_control_tool_kind), value :: modifier 555*0fca6ea1SDimitry Andric integer (kind=kmp_pointer_kind), optional :: arg 556*0fca6ea1SDimitry Andric end function omp_control_tool 557*0fca6ea1SDimitry Andric 558*0fca6ea1SDimitry Andric function omp_init_allocator(memspace, ntraits, traits) 559*0fca6ea1SDimitry Andric use omp_lib_kinds 560*0fca6ea1SDimitry Andric integer (kind=omp_allocator_handle_kind) omp_init_allocator 561*0fca6ea1SDimitry Andric integer (kind=omp_memspace_handle_kind) :: memspace 562*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind) :: ntraits 563*0fca6ea1SDimitry Andric type(omp_alloctrait), intent(in) :: traits(*) 564*0fca6ea1SDimitry Andric end function omp_init_allocator 565*0fca6ea1SDimitry Andric 566*0fca6ea1SDimitry Andric subroutine omp_destroy_allocator(allocator) bind(c) 567*0fca6ea1SDimitry Andric use omp_lib_kinds 568*0fca6ea1SDimitry Andric integer (kind=omp_allocator_handle_kind), value :: allocator 569*0fca6ea1SDimitry Andric end subroutine omp_destroy_allocator 570*0fca6ea1SDimitry Andric 571*0fca6ea1SDimitry Andric subroutine omp_set_default_allocator(allocator) bind(c) 572*0fca6ea1SDimitry Andric use omp_lib_kinds 573*0fca6ea1SDimitry Andric integer (kind=omp_allocator_handle_kind), value :: allocator 574*0fca6ea1SDimitry Andric end subroutine omp_set_default_allocator 575*0fca6ea1SDimitry Andric 576*0fca6ea1SDimitry Andric function omp_get_default_allocator() bind(c) 577*0fca6ea1SDimitry Andric use omp_lib_kinds 578*0fca6ea1SDimitry Andric integer (kind=omp_allocator_handle_kind) omp_get_default_allocator 579*0fca6ea1SDimitry Andric end function omp_get_default_allocator 580*0fca6ea1SDimitry Andric 581*0fca6ea1SDimitry Andric subroutine omp_set_affinity_format(format) 582*0fca6ea1SDimitry Andric character (len=*) :: format 583*0fca6ea1SDimitry Andric end subroutine omp_set_affinity_format 584*0fca6ea1SDimitry Andric 585*0fca6ea1SDimitry Andric function omp_get_affinity_format(buffer) 586*0fca6ea1SDimitry Andric use omp_lib_kinds 587*0fca6ea1SDimitry Andric character (len=*) :: buffer 588*0fca6ea1SDimitry Andric integer (kind=kmp_size_t_kind) :: omp_get_affinity_format 589*0fca6ea1SDimitry Andric end function omp_get_affinity_format 590*0fca6ea1SDimitry Andric 591*0fca6ea1SDimitry Andric subroutine omp_display_affinity(format) 592*0fca6ea1SDimitry Andric character (len=*) :: format 593*0fca6ea1SDimitry Andric end subroutine omp_display_affinity 594*0fca6ea1SDimitry Andric 595*0fca6ea1SDimitry Andric function omp_capture_affinity(buffer, format) 596*0fca6ea1SDimitry Andric use omp_lib_kinds 597*0fca6ea1SDimitry Andric character (len=*) :: format 598*0fca6ea1SDimitry Andric character (len=*) :: buffer 599*0fca6ea1SDimitry Andric integer (kind=kmp_size_t_kind) :: omp_capture_affinity 600*0fca6ea1SDimitry Andric end function omp_capture_affinity 601*0fca6ea1SDimitry Andric 602*0fca6ea1SDimitry Andric subroutine omp_set_num_teams(num_teams) bind(c) 603*0fca6ea1SDimitry Andric use omp_lib_kinds 604*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind), value :: num_teams 605*0fca6ea1SDimitry Andric end subroutine omp_set_num_teams 606*0fca6ea1SDimitry Andric 607*0fca6ea1SDimitry Andric function omp_get_max_teams() bind(c) 608*0fca6ea1SDimitry Andric use omp_lib_kinds 609*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind) omp_get_max_teams 610*0fca6ea1SDimitry Andric end function omp_get_max_teams 611*0fca6ea1SDimitry Andric 612*0fca6ea1SDimitry Andric subroutine omp_set_teams_thread_limit(thread_limit) bind(c) 613*0fca6ea1SDimitry Andric use omp_lib_kinds 614*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind), value :: thread_limit 615*0fca6ea1SDimitry Andric end subroutine omp_set_teams_thread_limit 616*0fca6ea1SDimitry Andric 617*0fca6ea1SDimitry Andric function omp_get_teams_thread_limit() bind(c) 618*0fca6ea1SDimitry Andric use omp_lib_kinds 619*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind) omp_get_teams_thread_limit 620*0fca6ea1SDimitry Andric end function omp_get_teams_thread_limit 621*0fca6ea1SDimitry Andric 622*0fca6ea1SDimitry Andric subroutine omp_display_env(verbose) bind(c) 623*0fca6ea1SDimitry Andric use omp_lib_kinds 624*0fca6ea1SDimitry Andric logical (kind=omp_logical_kind), value :: verbose 625*0fca6ea1SDimitry Andric end subroutine omp_display_env 626*0fca6ea1SDimitry Andric 627*0fca6ea1SDimitry Andric function omp_target_alloc(size, device_num) bind(c) 628*0fca6ea1SDimitry Andric use, intrinsic :: iso_c_binding, only: c_ptr, c_size_t, c_int 629*0fca6ea1SDimitry Andric type(c_ptr) omp_target_alloc 630*0fca6ea1SDimitry Andric integer(c_size_t), value :: size 631*0fca6ea1SDimitry Andric integer(c_int), value :: device_num 632*0fca6ea1SDimitry Andric end function omp_target_alloc 633*0fca6ea1SDimitry Andric 634*0fca6ea1SDimitry Andric subroutine omp_target_free(device_ptr, device_num) bind(c) 635*0fca6ea1SDimitry Andric use, intrinsic :: iso_c_binding, only: c_ptr, c_int 636*0fca6ea1SDimitry Andric type(c_ptr), value :: device_ptr 637*0fca6ea1SDimitry Andric integer(c_int), value :: device_num 638*0fca6ea1SDimitry Andric end subroutine omp_target_free 639*0fca6ea1SDimitry Andric 640*0fca6ea1SDimitry Andric function omp_target_is_present(ptr, device_num) bind(c) 641*0fca6ea1SDimitry Andric use, intrinsic :: iso_c_binding, only: c_ptr, c_int 642*0fca6ea1SDimitry Andric integer(c_int) omp_target_is_present 643*0fca6ea1SDimitry Andric type(c_ptr), value :: ptr 644*0fca6ea1SDimitry Andric integer(c_int), value :: device_num 645*0fca6ea1SDimitry Andric end function omp_target_is_present 646*0fca6ea1SDimitry Andric 647*0fca6ea1SDimitry Andric function omp_target_memcpy(dst, src, length, dst_offset, src_offset, & 648*0fca6ea1SDimitry Andric dst_device_num, src_device_num) bind(c) 649*0fca6ea1SDimitry Andric use, intrinsic :: iso_c_binding, only: c_ptr, c_size_t, c_int 650*0fca6ea1SDimitry Andric integer(c_int) omp_target_memcpy 651*0fca6ea1SDimitry Andric type(c_ptr), value :: dst, src 652*0fca6ea1SDimitry Andric integer(c_size_t), value :: length, dst_offset, src_offset 653*0fca6ea1SDimitry Andric integer(c_int), value :: dst_device_num, src_device_num 654*0fca6ea1SDimitry Andric end function omp_target_memcpy 655*0fca6ea1SDimitry Andric 656*0fca6ea1SDimitry Andric function omp_target_memcpy_rect(dst, src, element_size, num_dims, & 657*0fca6ea1SDimitry Andric volume, dst_offsets, src_offsets, dst_dimensions, & 658*0fca6ea1SDimitry Andric src_dimensions, dst_device_num, src_device_num) bind(c) 659*0fca6ea1SDimitry Andric use, intrinsic :: iso_c_binding, only: c_ptr, c_size_t, c_int 660*0fca6ea1SDimitry Andric integer(c_int) omp_target_memcpy_rect 661*0fca6ea1SDimitry Andric type(c_ptr), value :: dst, src 662*0fca6ea1SDimitry Andric integer(c_size_t), value :: element_size 663*0fca6ea1SDimitry Andric integer(c_int), value :: num_dims, dst_device_num, src_device_num 664*0fca6ea1SDimitry Andric integer(c_size_t), intent(in) :: volume(*), dst_offsets(*), & 665*0fca6ea1SDimitry Andric src_offsets(*), dst_dimensions(*), src_dimensions(*) 666*0fca6ea1SDimitry Andric end function omp_target_memcpy_rect 667*0fca6ea1SDimitry Andric 668*0fca6ea1SDimitry Andric function omp_target_memcpy_async(dst, src, length, dst_offset, & 669*0fca6ea1SDimitry Andric src_offset, dst_device_num, src_device_num, depobj_count, & 670*0fca6ea1SDimitry Andric depobj_list) bind(c) 671*0fca6ea1SDimitry Andric use omp_lib_kinds 672*0fca6ea1SDimitry Andric use, intrinsic :: iso_c_binding, only: c_ptr, c_size_t, c_int 673*0fca6ea1SDimitry Andric integer(c_int) omp_target_memcpy_async 674*0fca6ea1SDimitry Andric type(c_ptr), value :: dst, src 675*0fca6ea1SDimitry Andric integer(c_size_t), value :: length, dst_offset, src_offset 676*0fca6ea1SDimitry Andric integer(c_int), value :: dst_device_num, src_device_num, & 677*0fca6ea1SDimitry Andric depobj_count 678*0fca6ea1SDimitry Andric integer(omp_depend_kind), optional :: depobj_list(*) 679*0fca6ea1SDimitry Andric end function omp_target_memcpy_async 680*0fca6ea1SDimitry Andric 681*0fca6ea1SDimitry Andric function omp_target_memcpy_rect_async(dst, src, element_size, & 682*0fca6ea1SDimitry Andric num_dims, volume, dst_offsets, src_offsets, dst_dimensions, & 683*0fca6ea1SDimitry Andric src_dimensions, dst_device_num, src_device_num, depobj_count, & 684*0fca6ea1SDimitry Andric depobj_list) bind(c) 685*0fca6ea1SDimitry Andric use omp_lib_kinds 686*0fca6ea1SDimitry Andric use, intrinsic :: iso_c_binding, only: c_ptr, c_size_t, c_int 687*0fca6ea1SDimitry Andric integer(c_int) omp_target_memcpy_rect_async 688*0fca6ea1SDimitry Andric type(c_ptr), value :: dst, src 689*0fca6ea1SDimitry Andric integer(c_size_t), value :: element_size 690*0fca6ea1SDimitry Andric integer(c_int), value :: num_dims, dst_device_num, src_device_num, & 691*0fca6ea1SDimitry Andric depobj_count 692*0fca6ea1SDimitry Andric integer(c_size_t), intent(in) :: volume(*), dst_offsets(*), & 693*0fca6ea1SDimitry Andric src_offsets(*), dst_dimensions(*), src_dimensions(*) 694*0fca6ea1SDimitry Andric integer (omp_depend_kind), optional :: depobj_list(*) 695*0fca6ea1SDimitry Andric end function omp_target_memcpy_rect_async 696*0fca6ea1SDimitry Andric 697*0fca6ea1SDimitry Andric function omp_target_memset(ptr, val, count, device_num) bind(c) 698*0fca6ea1SDimitry Andric use, intrinsic :: iso_c_binding, only : c_ptr, c_int, c_size_t 699*0fca6ea1SDimitry Andric type(c_ptr) :: omp_target_memset 700*0fca6ea1SDimitry Andric type(c_ptr), value :: ptr 701*0fca6ea1SDimitry Andric integer(c_int), value :: val 702*0fca6ea1SDimitry Andric integer(c_size_t), value :: count 703*0fca6ea1SDimitry Andric integer(c_int), value :: device_num 704*0fca6ea1SDimitry Andric end function 705*0fca6ea1SDimitry Andric 706*0fca6ea1SDimitry Andric function omp_target_memset_async(ptr, val, count, device_num, & 707*0fca6ea1SDimitry Andric depobj_count, depobj_list) bind(c) 708*0fca6ea1SDimitry Andric use omp_lib_kinds 709*0fca6ea1SDimitry Andric use, intrinsic :: iso_c_binding, only : c_ptr, c_int, c_size_t 710*0fca6ea1SDimitry Andric type(c_ptr) :: omp_target_memset_async 711*0fca6ea1SDimitry Andric type(c_ptr), value :: ptr 712*0fca6ea1SDimitry Andric integer(c_int), value :: val 713*0fca6ea1SDimitry Andric integer(c_size_t), value :: count 714*0fca6ea1SDimitry Andric integer(c_int), value :: device_num 715*0fca6ea1SDimitry Andric integer(c_int), value :: depobj_count 716*0fca6ea1SDimitry Andric integer(omp_depend_kind), optional :: depobj_list(*) 717*0fca6ea1SDimitry Andric end function 718*0fca6ea1SDimitry Andric 719*0fca6ea1SDimitry Andric function omp_target_associate_ptr(host_ptr, device_ptr, size, & 720*0fca6ea1SDimitry Andric device_offset, device_num) bind(c) 721*0fca6ea1SDimitry Andric use, intrinsic :: iso_c_binding, only: c_ptr, c_size_t, c_int 722*0fca6ea1SDimitry Andric integer(c_int) omp_target_associate_ptr 723*0fca6ea1SDimitry Andric type(c_ptr), value :: host_ptr, device_ptr 724*0fca6ea1SDimitry Andric integer(c_size_t), value :: size, device_offset 725*0fca6ea1SDimitry Andric integer(c_int), value :: device_num 726*0fca6ea1SDimitry Andric end function omp_target_associate_ptr 727*0fca6ea1SDimitry Andric 728*0fca6ea1SDimitry Andric function omp_get_mapped_ptr(ptr, device_num) bind(c) 729*0fca6ea1SDimitry Andric use, intrinsic :: iso_c_binding, only: c_ptr, c_int 730*0fca6ea1SDimitry Andric type(c_ptr) omp_get_mapped_ptr 731*0fca6ea1SDimitry Andric type(c_ptr), value :: ptr 732*0fca6ea1SDimitry Andric integer(c_int), value :: device_num 733*0fca6ea1SDimitry Andric end function omp_get_mapped_ptr 734*0fca6ea1SDimitry Andric 735*0fca6ea1SDimitry Andric function omp_target_disassociate_ptr(ptr, device_num) bind(c) 736*0fca6ea1SDimitry Andric use, intrinsic :: iso_c_binding, only: c_ptr, c_int 737*0fca6ea1SDimitry Andric integer(c_int) omp_target_disassociate_ptr 738*0fca6ea1SDimitry Andric type(c_ptr), value :: ptr 739*0fca6ea1SDimitry Andric integer(c_int), value :: device_num 740*0fca6ea1SDimitry Andric end function omp_target_disassociate_ptr 741*0fca6ea1SDimitry Andric 742*0fca6ea1SDimitry Andric function omp_target_is_accessible(ptr, size, device_num) bind(c) 743*0fca6ea1SDimitry Andric use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t, c_int 744*0fca6ea1SDimitry Andric integer(c_int) omp_target_is_accessible 745*0fca6ea1SDimitry Andric type(c_ptr), value :: ptr 746*0fca6ea1SDimitry Andric integer(c_size_t), value :: size 747*0fca6ea1SDimitry Andric integer(c_int), value :: device_num 748*0fca6ea1SDimitry Andric end function omp_target_is_accessible 749*0fca6ea1SDimitry Andric 750*0fca6ea1SDimitry Andric function omp_alloc(size, allocator) bind(c) 751*0fca6ea1SDimitry Andric use omp_lib_kinds 752*0fca6ea1SDimitry Andric use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t 753*0fca6ea1SDimitry Andric type(c_ptr) omp_alloc 754*0fca6ea1SDimitry Andric integer(c_size_t), value :: size 755*0fca6ea1SDimitry Andric integer(omp_allocator_handle_kind), value :: allocator 756*0fca6ea1SDimitry Andric end function omp_alloc 757*0fca6ea1SDimitry Andric 758*0fca6ea1SDimitry Andric function omp_aligned_alloc(alignment, size, allocator) bind(c) 759*0fca6ea1SDimitry Andric use omp_lib_kinds 760*0fca6ea1SDimitry Andric use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t 761*0fca6ea1SDimitry Andric type(c_ptr) omp_aligned_alloc 762*0fca6ea1SDimitry Andric integer(c_size_t), value :: alignment, size 763*0fca6ea1SDimitry Andric integer(omp_allocator_handle_kind), value :: allocator 764*0fca6ea1SDimitry Andric end function omp_aligned_alloc 765*0fca6ea1SDimitry Andric 766*0fca6ea1SDimitry Andric function omp_calloc(nmemb, size, allocator) bind(c) 767*0fca6ea1SDimitry Andric use omp_lib_kinds 768*0fca6ea1SDimitry Andric use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t 769*0fca6ea1SDimitry Andric type(c_ptr) omp_calloc 770*0fca6ea1SDimitry Andric integer(c_size_t), value :: nmemb, size 771*0fca6ea1SDimitry Andric integer(omp_allocator_handle_kind), value :: allocator 772*0fca6ea1SDimitry Andric end function omp_calloc 773*0fca6ea1SDimitry Andric 774*0fca6ea1SDimitry Andric function omp_aligned_calloc(alignment, nmemb, size, allocator) bind(c) 775*0fca6ea1SDimitry Andric use omp_lib_kinds 776*0fca6ea1SDimitry Andric use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t 777*0fca6ea1SDimitry Andric type(c_ptr) omp_aligned_calloc 778*0fca6ea1SDimitry Andric integer(c_size_t), value :: alignment, nmemb, size 779*0fca6ea1SDimitry Andric integer(omp_allocator_handle_kind), value :: allocator 780*0fca6ea1SDimitry Andric end function omp_aligned_calloc 781*0fca6ea1SDimitry Andric 782*0fca6ea1SDimitry Andric function omp_realloc(ptr, size, allocator, free_allocator) bind(c) 783*0fca6ea1SDimitry Andric use omp_lib_kinds 784*0fca6ea1SDimitry Andric use, intrinsic :: iso_c_binding, only : c_ptr, c_size_t 785*0fca6ea1SDimitry Andric type(c_ptr) omp_realloc 786*0fca6ea1SDimitry Andric type(c_ptr), value :: ptr 787*0fca6ea1SDimitry Andric integer(c_size_t), value :: size 788*0fca6ea1SDimitry Andric integer(omp_allocator_handle_kind), value :: allocator 789*0fca6ea1SDimitry Andric integer(omp_allocator_handle_kind), value :: free_allocator 790*0fca6ea1SDimitry Andric end function omp_realloc 791*0fca6ea1SDimitry Andric 792*0fca6ea1SDimitry Andric subroutine omp_free(ptr, allocator) bind(c) 793*0fca6ea1SDimitry Andric use omp_lib_kinds 794*0fca6ea1SDimitry Andric use, intrinsic :: iso_c_binding, only : c_ptr 795*0fca6ea1SDimitry Andric type(c_ptr), value :: ptr 796*0fca6ea1SDimitry Andric integer(omp_allocator_handle_kind), value :: allocator 797*0fca6ea1SDimitry Andric end subroutine omp_free 798*0fca6ea1SDimitry Andric 799*0fca6ea1SDimitry Andric function omp_in_explicit_task() bind(c) 800*0fca6ea1SDimitry Andric use omp_lib_kinds 801*0fca6ea1SDimitry Andric logical (kind=omp_logical_kind) omp_in_explicit_task 802*0fca6ea1SDimitry Andric end function omp_in_explicit_task 803*0fca6ea1SDimitry Andric 804*0fca6ea1SDimitry Andric! *** 805*0fca6ea1SDimitry Andric! *** kmp_* entry points 806*0fca6ea1SDimitry Andric! *** 807*0fca6ea1SDimitry Andric 808*0fca6ea1SDimitry Andric subroutine kmp_set_stacksize(size) bind(c) 809*0fca6ea1SDimitry Andric use omp_lib_kinds 810*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind), value :: size 811*0fca6ea1SDimitry Andric end subroutine kmp_set_stacksize 812*0fca6ea1SDimitry Andric 813*0fca6ea1SDimitry Andric subroutine kmp_set_stacksize_s(size) bind(c) 814*0fca6ea1SDimitry Andric use omp_lib_kinds 815*0fca6ea1SDimitry Andric integer (kind=kmp_size_t_kind), value :: size 816*0fca6ea1SDimitry Andric end subroutine kmp_set_stacksize_s 817*0fca6ea1SDimitry Andric 818*0fca6ea1SDimitry Andric subroutine kmp_set_blocktime(msec) bind(c) 819*0fca6ea1SDimitry Andric use omp_lib_kinds 820*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind), value :: msec 821*0fca6ea1SDimitry Andric end subroutine kmp_set_blocktime 822*0fca6ea1SDimitry Andric 823*0fca6ea1SDimitry Andric subroutine kmp_set_library_serial() bind(c) 824*0fca6ea1SDimitry Andric end subroutine kmp_set_library_serial 825*0fca6ea1SDimitry Andric 826*0fca6ea1SDimitry Andric subroutine kmp_set_library_turnaround() bind(c) 827*0fca6ea1SDimitry Andric end subroutine kmp_set_library_turnaround 828*0fca6ea1SDimitry Andric 829*0fca6ea1SDimitry Andric subroutine kmp_set_library_throughput() bind(c) 830*0fca6ea1SDimitry Andric end subroutine kmp_set_library_throughput 831*0fca6ea1SDimitry Andric 832*0fca6ea1SDimitry Andric subroutine kmp_set_library(libnum) bind(c) 833*0fca6ea1SDimitry Andric use omp_lib_kinds 834*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind), value :: libnum 835*0fca6ea1SDimitry Andric end subroutine kmp_set_library 836*0fca6ea1SDimitry Andric 837*0fca6ea1SDimitry Andric subroutine kmp_set_defaults(string) bind(c) 838*0fca6ea1SDimitry Andric use, intrinsic :: iso_c_binding 839*0fca6ea1SDimitry Andric character (kind=c_char) :: string(*) 840*0fca6ea1SDimitry Andric end subroutine kmp_set_defaults 841*0fca6ea1SDimitry Andric 842*0fca6ea1SDimitry Andric function kmp_get_stacksize() bind(c) 843*0fca6ea1SDimitry Andric use omp_lib_kinds 844*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind) kmp_get_stacksize 845*0fca6ea1SDimitry Andric end function kmp_get_stacksize 846*0fca6ea1SDimitry Andric 847*0fca6ea1SDimitry Andric function kmp_get_stacksize_s() bind(c) 848*0fca6ea1SDimitry Andric use omp_lib_kinds 849*0fca6ea1SDimitry Andric integer (kind=kmp_size_t_kind) kmp_get_stacksize_s 850*0fca6ea1SDimitry Andric end function kmp_get_stacksize_s 851*0fca6ea1SDimitry Andric 852*0fca6ea1SDimitry Andric function kmp_get_blocktime() bind(c) 853*0fca6ea1SDimitry Andric use omp_lib_kinds 854*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind) kmp_get_blocktime 855*0fca6ea1SDimitry Andric end function kmp_get_blocktime 856*0fca6ea1SDimitry Andric 857*0fca6ea1SDimitry Andric function kmp_get_library() bind(c) 858*0fca6ea1SDimitry Andric use omp_lib_kinds 859*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind) kmp_get_library 860*0fca6ea1SDimitry Andric end function kmp_get_library 861*0fca6ea1SDimitry Andric 862*0fca6ea1SDimitry Andric subroutine kmp_set_disp_num_buffers(num) bind(c) 863*0fca6ea1SDimitry Andric use omp_lib_kinds 864*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind), value :: num 865*0fca6ea1SDimitry Andric end subroutine kmp_set_disp_num_buffers 866*0fca6ea1SDimitry Andric 867*0fca6ea1SDimitry Andric function kmp_set_affinity(mask) bind(c) 868*0fca6ea1SDimitry Andric use omp_lib_kinds 869*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind) kmp_set_affinity 870*0fca6ea1SDimitry Andric integer (kind=kmp_affinity_mask_kind) mask 871*0fca6ea1SDimitry Andric end function kmp_set_affinity 872*0fca6ea1SDimitry Andric 873*0fca6ea1SDimitry Andric function kmp_get_affinity(mask) bind(c) 874*0fca6ea1SDimitry Andric use omp_lib_kinds 875*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind) kmp_get_affinity 876*0fca6ea1SDimitry Andric integer (kind=kmp_affinity_mask_kind) mask 877*0fca6ea1SDimitry Andric end function kmp_get_affinity 878*0fca6ea1SDimitry Andric 879*0fca6ea1SDimitry Andric function kmp_get_affinity_max_proc() bind(c) 880*0fca6ea1SDimitry Andric use omp_lib_kinds 881*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind) kmp_get_affinity_max_proc 882*0fca6ea1SDimitry Andric end function kmp_get_affinity_max_proc 883*0fca6ea1SDimitry Andric 884*0fca6ea1SDimitry Andric subroutine kmp_create_affinity_mask(mask) bind(c) 885*0fca6ea1SDimitry Andric use omp_lib_kinds 886*0fca6ea1SDimitry Andric integer (kind=kmp_affinity_mask_kind) mask 887*0fca6ea1SDimitry Andric end subroutine kmp_create_affinity_mask 888*0fca6ea1SDimitry Andric 889*0fca6ea1SDimitry Andric subroutine kmp_destroy_affinity_mask(mask) bind(c) 890*0fca6ea1SDimitry Andric use omp_lib_kinds 891*0fca6ea1SDimitry Andric integer (kind=kmp_affinity_mask_kind) mask 892*0fca6ea1SDimitry Andric end subroutine kmp_destroy_affinity_mask 893*0fca6ea1SDimitry Andric 894*0fca6ea1SDimitry Andric function kmp_set_affinity_mask_proc(proc, mask) bind(c) 895*0fca6ea1SDimitry Andric use omp_lib_kinds 896*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind) kmp_set_affinity_mask_proc 897*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind), value :: proc 898*0fca6ea1SDimitry Andric integer (kind=kmp_affinity_mask_kind) mask 899*0fca6ea1SDimitry Andric end function kmp_set_affinity_mask_proc 900*0fca6ea1SDimitry Andric 901*0fca6ea1SDimitry Andric function kmp_unset_affinity_mask_proc(proc, mask) bind(c) 902*0fca6ea1SDimitry Andric use omp_lib_kinds 903*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind) kmp_unset_affinity_mask_proc 904*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind), value :: proc 905*0fca6ea1SDimitry Andric integer (kind=kmp_affinity_mask_kind) mask 906*0fca6ea1SDimitry Andric end function kmp_unset_affinity_mask_proc 907*0fca6ea1SDimitry Andric 908*0fca6ea1SDimitry Andric function kmp_get_affinity_mask_proc(proc, mask) bind(c) 909*0fca6ea1SDimitry Andric use omp_lib_kinds 910*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind) kmp_get_affinity_mask_proc 911*0fca6ea1SDimitry Andric integer (kind=omp_integer_kind), value :: proc 912*0fca6ea1SDimitry Andric integer (kind=kmp_affinity_mask_kind) mask 913*0fca6ea1SDimitry Andric end function kmp_get_affinity_mask_proc 914*0fca6ea1SDimitry Andric 915*0fca6ea1SDimitry Andric function kmp_malloc(size) bind(c) 916*0fca6ea1SDimitry Andric use omp_lib_kinds 917*0fca6ea1SDimitry Andric integer (kind=kmp_pointer_kind) kmp_malloc 918*0fca6ea1SDimitry Andric integer (kind=kmp_size_t_kind), value :: size 919*0fca6ea1SDimitry Andric end function kmp_malloc 920*0fca6ea1SDimitry Andric 921*0fca6ea1SDimitry Andric function kmp_aligned_malloc(size, alignment) bind(c) 922*0fca6ea1SDimitry Andric use omp_lib_kinds 923*0fca6ea1SDimitry Andric integer (kind=kmp_pointer_kind) kmp_aligned_malloc 924*0fca6ea1SDimitry Andric integer (kind=kmp_size_t_kind), value :: size 925*0fca6ea1SDimitry Andric integer (kind=kmp_size_t_kind), value :: alignment 926*0fca6ea1SDimitry Andric end function kmp_aligned_malloc 927*0fca6ea1SDimitry Andric 928*0fca6ea1SDimitry Andric function kmp_calloc(nelem, elsize) bind(c) 929*0fca6ea1SDimitry Andric use omp_lib_kinds 930*0fca6ea1SDimitry Andric integer (kind=kmp_pointer_kind) kmp_calloc 931*0fca6ea1SDimitry Andric integer (kind=kmp_size_t_kind), value :: nelem 932*0fca6ea1SDimitry Andric integer (kind=kmp_size_t_kind), value :: elsize 933*0fca6ea1SDimitry Andric end function kmp_calloc 934*0fca6ea1SDimitry Andric 935*0fca6ea1SDimitry Andric function kmp_realloc(ptr, size) bind(c) 936*0fca6ea1SDimitry Andric use omp_lib_kinds 937*0fca6ea1SDimitry Andric integer (kind=kmp_pointer_kind) kmp_realloc 938*0fca6ea1SDimitry Andric integer (kind=kmp_pointer_kind), value :: ptr 939*0fca6ea1SDimitry Andric integer (kind=kmp_size_t_kind), value :: size 940*0fca6ea1SDimitry Andric end function kmp_realloc 941*0fca6ea1SDimitry Andric 942*0fca6ea1SDimitry Andric subroutine kmp_free(ptr) bind(c) 943*0fca6ea1SDimitry Andric use omp_lib_kinds 944*0fca6ea1SDimitry Andric integer (kind=kmp_pointer_kind), value :: ptr 945*0fca6ea1SDimitry Andric end subroutine kmp_free 946*0fca6ea1SDimitry Andric 947*0fca6ea1SDimitry Andric subroutine kmp_set_warnings_on() bind(c) 948*0fca6ea1SDimitry Andric end subroutine kmp_set_warnings_on 949*0fca6ea1SDimitry Andric 950*0fca6ea1SDimitry Andric subroutine kmp_set_warnings_off() bind(c) 951*0fca6ea1SDimitry Andric end subroutine kmp_set_warnings_off 952*0fca6ea1SDimitry Andric 953*0fca6ea1SDimitry Andric function kmp_get_cancellation_status(cancelkind) bind(c) 954*0fca6ea1SDimitry Andric use omp_lib_kinds 955*0fca6ea1SDimitry Andric integer (kind=kmp_cancel_kind), value :: cancelkind 956*0fca6ea1SDimitry Andric logical (kind=omp_logical_kind) kmp_get_cancellation_status 957*0fca6ea1SDimitry Andric end function kmp_get_cancellation_status 958*0fca6ea1SDimitry Andric 959*0fca6ea1SDimitry Andric end interface 960*0fca6ea1SDimitry Andric 961*0fca6ea1SDimitry Andric ! make the above routine definitions public 962*0fca6ea1SDimitry Andric public :: omp_set_num_threads 963*0fca6ea1SDimitry Andric public :: omp_set_dynamic 964*0fca6ea1SDimitry Andric public :: omp_set_nested 965*0fca6ea1SDimitry Andric public :: omp_get_num_threads 966*0fca6ea1SDimitry Andric public :: omp_get_max_threads 967*0fca6ea1SDimitry Andric public :: omp_get_thread_num 968*0fca6ea1SDimitry Andric public :: omp_get_num_procs 969*0fca6ea1SDimitry Andric public :: omp_in_parallel 970*0fca6ea1SDimitry Andric public :: omp_in_final 971*0fca6ea1SDimitry Andric public :: omp_get_dynamic 972*0fca6ea1SDimitry Andric public :: omp_get_nested 973*0fca6ea1SDimitry Andric public :: omp_get_thread_limit 974*0fca6ea1SDimitry Andric public :: omp_set_max_active_levels 975*0fca6ea1SDimitry Andric public :: omp_get_max_active_levels 976*0fca6ea1SDimitry Andric public :: omp_get_level 977*0fca6ea1SDimitry Andric public :: omp_get_active_level 978*0fca6ea1SDimitry Andric public :: omp_get_ancestor_thread_num 979*0fca6ea1SDimitry Andric public :: omp_get_team_size 980*0fca6ea1SDimitry Andric public :: omp_set_schedule 981*0fca6ea1SDimitry Andric public :: omp_get_schedule 982*0fca6ea1SDimitry Andric public :: omp_get_proc_bind 983*0fca6ea1SDimitry Andric public :: omp_get_num_places 984*0fca6ea1SDimitry Andric public :: omp_get_place_num_procs 985*0fca6ea1SDimitry Andric public :: omp_get_place_proc_ids 986*0fca6ea1SDimitry Andric public :: omp_get_place_num 987*0fca6ea1SDimitry Andric public :: omp_get_partition_num_places 988*0fca6ea1SDimitry Andric public :: omp_get_partition_place_nums 989*0fca6ea1SDimitry Andric public :: omp_get_wtime 990*0fca6ea1SDimitry Andric public :: omp_get_wtick 991*0fca6ea1SDimitry Andric public :: omp_get_default_device 992*0fca6ea1SDimitry Andric public :: omp_set_default_device 993*0fca6ea1SDimitry Andric public :: omp_get_num_devices 994*0fca6ea1SDimitry Andric public :: omp_get_num_teams 995*0fca6ea1SDimitry Andric public :: omp_get_team_num 996*0fca6ea1SDimitry Andric public :: omp_get_cancellation 997*0fca6ea1SDimitry Andric public :: omp_is_initial_device 998*0fca6ea1SDimitry Andric public :: omp_get_initial_device 999*0fca6ea1SDimitry Andric public :: omp_get_device_num 1000*0fca6ea1SDimitry Andric public :: omp_pause_resource 1001*0fca6ea1SDimitry Andric public :: omp_pause_resource_all 1002*0fca6ea1SDimitry Andric public :: omp_get_supported_active_levels 1003*0fca6ea1SDimitry Andric public :: omp_fulfill_event 1004*0fca6ea1SDimitry Andric public :: omp_init_lock 1005*0fca6ea1SDimitry Andric public :: omp_destroy_lock 1006*0fca6ea1SDimitry Andric public :: omp_set_lock 1007*0fca6ea1SDimitry Andric public :: omp_unset_lock 1008*0fca6ea1SDimitry Andric public :: omp_test_lock 1009*0fca6ea1SDimitry Andric public :: omp_init_nest_lock 1010*0fca6ea1SDimitry Andric public :: omp_destroy_nest_lock 1011*0fca6ea1SDimitry Andric public :: omp_set_nest_lock 1012*0fca6ea1SDimitry Andric public :: omp_unset_nest_lock 1013*0fca6ea1SDimitry Andric public :: omp_test_nest_lock 1014*0fca6ea1SDimitry Andric public :: omp_get_max_task_priority 1015*0fca6ea1SDimitry Andric public :: omp_init_lock_with_hint 1016*0fca6ea1SDimitry Andric public :: omp_init_nest_lock_with_hint 1017*0fca6ea1SDimitry Andric public :: omp_control_tool 1018*0fca6ea1SDimitry Andric public :: omp_init_allocator 1019*0fca6ea1SDimitry Andric public :: omp_destroy_allocator 1020*0fca6ea1SDimitry Andric public :: omp_set_default_allocator 1021*0fca6ea1SDimitry Andric public :: omp_get_default_allocator 1022*0fca6ea1SDimitry Andric public :: omp_set_affinity_format 1023*0fca6ea1SDimitry Andric public :: omp_get_affinity_format 1024*0fca6ea1SDimitry Andric public :: omp_display_affinity 1025*0fca6ea1SDimitry Andric public :: omp_capture_affinity 1026*0fca6ea1SDimitry Andric public :: omp_set_num_teams 1027*0fca6ea1SDimitry Andric public :: omp_get_max_teams 1028*0fca6ea1SDimitry Andric public :: omp_set_teams_thread_limit 1029*0fca6ea1SDimitry Andric public :: omp_get_teams_thread_limit 1030*0fca6ea1SDimitry Andric public :: omp_display_env 1031*0fca6ea1SDimitry Andric public :: omp_target_alloc 1032*0fca6ea1SDimitry Andric public :: omp_target_free 1033*0fca6ea1SDimitry Andric public :: omp_target_is_present 1034*0fca6ea1SDimitry Andric public :: omp_target_memcpy 1035*0fca6ea1SDimitry Andric public :: omp_target_memcpy_rect 1036*0fca6ea1SDimitry Andric public :: omp_target_memcpy_async 1037*0fca6ea1SDimitry Andric public :: omp_target_memcpy_rect_async 1038*0fca6ea1SDimitry Andric public :: omp_target_memset 1039*0fca6ea1SDimitry Andric public :: omp_target_memset_async 1040*0fca6ea1SDimitry Andric public :: omp_target_associate_ptr 1041*0fca6ea1SDimitry Andric public :: omp_get_mapped_ptr 1042*0fca6ea1SDimitry Andric public :: omp_target_disassociate_ptr 1043*0fca6ea1SDimitry Andric public :: omp_target_is_accessible 1044*0fca6ea1SDimitry Andric public :: omp_alloc 1045*0fca6ea1SDimitry Andric public :: omp_aligned_alloc 1046*0fca6ea1SDimitry Andric public :: omp_calloc 1047*0fca6ea1SDimitry Andric public :: omp_aligned_calloc 1048*0fca6ea1SDimitry Andric public :: omp_realloc 1049*0fca6ea1SDimitry Andric public :: omp_free 1050*0fca6ea1SDimitry Andric public :: omp_in_explicit_task 1051*0fca6ea1SDimitry Andric public :: kmp_set_stacksize 1052*0fca6ea1SDimitry Andric public :: kmp_set_stacksize_s 1053*0fca6ea1SDimitry Andric public :: kmp_set_blocktime 1054*0fca6ea1SDimitry Andric public :: kmp_set_library_serial 1055*0fca6ea1SDimitry Andric public :: kmp_set_library_turnaround 1056*0fca6ea1SDimitry Andric public :: kmp_set_library_throughput 1057*0fca6ea1SDimitry Andric public :: kmp_set_library 1058*0fca6ea1SDimitry Andric public :: kmp_set_defaults 1059*0fca6ea1SDimitry Andric public :: kmp_get_stacksize 1060*0fca6ea1SDimitry Andric public :: kmp_get_stacksize_s 1061*0fca6ea1SDimitry Andric public :: kmp_get_blocktime 1062*0fca6ea1SDimitry Andric public :: kmp_get_library 1063*0fca6ea1SDimitry Andric public :: kmp_set_disp_num_buffers 1064*0fca6ea1SDimitry Andric public :: kmp_set_affinity 1065*0fca6ea1SDimitry Andric public :: kmp_get_affinity 1066*0fca6ea1SDimitry Andric public :: kmp_get_affinity_max_proc 1067*0fca6ea1SDimitry Andric public :: kmp_create_affinity_mask 1068*0fca6ea1SDimitry Andric public :: kmp_destroy_affinity_mask 1069*0fca6ea1SDimitry Andric public :: kmp_set_affinity_mask_proc 1070*0fca6ea1SDimitry Andric public :: kmp_unset_affinity_mask_proc 1071*0fca6ea1SDimitry Andric public :: kmp_get_affinity_mask_proc 1072*0fca6ea1SDimitry Andric public :: kmp_malloc 1073*0fca6ea1SDimitry Andric public :: kmp_aligned_malloc 1074*0fca6ea1SDimitry Andric public :: kmp_calloc 1075*0fca6ea1SDimitry Andric public :: kmp_realloc 1076*0fca6ea1SDimitry Andric public :: kmp_free 1077*0fca6ea1SDimitry Andric public :: kmp_set_warnings_on 1078*0fca6ea1SDimitry Andric public :: kmp_set_warnings_off 1079*0fca6ea1SDimitry Andric public :: kmp_get_cancellation_status 1080*0fca6ea1SDimitry Andric 1081*0fca6ea1SDimitry Andric end module omp_lib 1082