Two build failures reported after #204260 * Unix Makefiles generator stops working: The cause is that the rules for building each OBJECT library lands in its own Makefile, e.g. `flang_rt.mod.fortran.builtins.dir/build.make` and `libomp-mod.dir/build.make`. Trying to inject dependencies directly for build rules in the other file does not work. * `__ppc_types.f90` not tracked: Forgotten in #204260 due to being only conditionally enabled for PowerPC targets. The solution for both is to just remove the workaround for CMake not recognizing modules uses declared using `intrinsic` which caused these problems. This PR promotes the `use` constructs in the module sources to normal dependencies that are not ignored by CMake. The `intrinsic` modifier changes the search path to only look for such a module in `-fintrinsic-modules-path`. The difference is only theoretical: 1. When compiling the intrinsic modules, there are no other search paths than for the intrinsics anyway 2. Users should strongly avoid naming their modules the same as an intrinsic module 3. Most of our intrinsic sources don't even use the `intrinsic` modifier in the first place (e.g. https://github.com/llvm/llvm-project/blob/1c9412432ff9f897d5fb096d31b945e50fbbb61d/flang-rt/lib/runtime/__cuda_builtins.f90#L13). That is, if there was a problem with lookup ambiguity, these would have already been a problem for those. 4. The checksum of used modules is only added into the .mod file (the only reason why modules would need to be transitively rebuilt) when a `use` statement appears. Many intrinsic modules don't explicitly use the modules that are added implicitly by the compiler, such as `__fortran_builtins`, and hence do not even need to be rebuilt. I started this PR with a tested-working fix ([71c5e7f0ffcf2ebd58812d2e2812b22663be1631](https://github.com/llvm/llvm-project/pull/205634/changes/BASE..71c5e7f0ffcf2ebd58812d2e2812b22663be1631)) to the workaround code. But given the points above, there seems to be no benefit of keeping the workaround code handling CMake version < 4.5 around just for some intrinsic modules to keep the `intrinsic` modifier with no practical effect. A non-workaround path using CMake's `Fortran_BUILDING_IN(S)TRINSIC_MODULES` setting had to be added in any case for Unix Makefile generators (reported issue 1.) because injecting dependencies is not possible with Unix Makefiles as stated, but `Fortran_BUILDING_IN(S)TRINSIC_MODULES` also does not work with the Ninja generator. Avoiding `use, intrinsic` keeps just one configuration path. I tested that modules are properly updated with Ninja and Unix Makefiles: * Build from scratch * Modifying `__fortran_builtins.f90` rebuilds its dependent modules * Modifying `iso_c_binding.f90` rebuilds its dependent modules (omp_lib.mod)
1187 lines
52 KiB
Plaintext
1187 lines
52 KiB
Plaintext
! include/omp_lib.f90.var
|
|
|
|
!
|
|
!//===----------------------------------------------------------------------===//
|
|
!//
|
|
!// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
!// See https://llvm.org/LICENSE.txt for license information.
|
|
!// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
!//
|
|
!//===----------------------------------------------------------------------===//
|
|
!
|
|
|
|
module omp_lib_kinds
|
|
|
|
use :: iso_c_binding
|
|
|
|
! Set PRIVATE by default to explicitly only export what is meant
|
|
! to be exported by this MODULE.
|
|
private
|
|
|
|
integer, parameter, public :: omp_integer_kind = c_int
|
|
integer, parameter, public :: omp_logical_kind = 4
|
|
integer, parameter, public :: omp_real_kind = c_float
|
|
integer, parameter, public :: kmp_double_kind = c_double
|
|
integer, parameter, public :: omp_lock_kind = c_intptr_t
|
|
integer, parameter, public :: omp_nest_lock_kind = c_intptr_t
|
|
integer, parameter, public :: omp_sched_kind = omp_integer_kind
|
|
integer, parameter, public :: omp_proc_bind_kind = omp_integer_kind
|
|
integer, parameter, public :: kmp_pointer_kind = c_intptr_t
|
|
integer, parameter, public :: kmp_size_t_kind = c_size_t
|
|
integer, parameter, public :: kmp_affinity_mask_kind = c_intptr_t
|
|
integer, parameter, public :: kmp_cancel_kind = omp_integer_kind
|
|
integer, parameter, public :: omp_sync_hint_kind = omp_integer_kind
|
|
integer, parameter, public :: omp_lock_hint_kind = omp_sync_hint_kind
|
|
integer, parameter, public :: omp_control_tool_kind = omp_integer_kind
|
|
integer, parameter, public :: omp_control_tool_result_kind = omp_integer_kind
|
|
integer, parameter, public :: omp_allocator_handle_kind = c_intptr_t
|
|
integer, parameter, public :: omp_memspace_handle_kind = c_intptr_t
|
|
integer, parameter, public :: omp_alloctrait_key_kind = omp_integer_kind
|
|
integer, parameter, public :: omp_alloctrait_val_kind = c_intptr_t
|
|
integer, parameter, public :: omp_interop_kind = c_intptr_t
|
|
integer, parameter, public :: omp_interop_fr_kind = omp_integer_kind
|
|
|
|
type omp_alloctrait
|
|
integer(kind=omp_alloctrait_key_kind) key
|
|
integer(kind=omp_alloctrait_val_kind) value
|
|
end type omp_alloctrait
|
|
public :: omp_alloctrait
|
|
|
|
integer, parameter, public :: omp_pause_resource_kind = omp_integer_kind
|
|
integer, parameter, public :: omp_depend_kind = c_intptr_t
|
|
integer, parameter, public :: omp_event_handle_kind = c_intptr_t
|
|
|
|
end module omp_lib_kinds
|
|
|
|
module omp_lib
|
|
|
|
use omp_lib_kinds
|
|
|
|
! Set PRIVATE by default to explicitly only export what is meant
|
|
! to be exported by this MODULE.
|
|
private
|
|
|
|
! Re-export definitions in omp_lib_kinds
|
|
public :: omp_integer_kind
|
|
public :: omp_logical_kind
|
|
public :: omp_real_kind
|
|
public :: kmp_double_kind
|
|
public :: omp_lock_kind
|
|
public :: omp_nest_lock_kind
|
|
public :: omp_sched_kind
|
|
public :: omp_proc_bind_kind
|
|
public :: kmp_pointer_kind
|
|
public :: kmp_size_t_kind
|
|
public :: kmp_affinity_mask_kind
|
|
public :: kmp_cancel_kind
|
|
public :: omp_sync_hint_kind
|
|
public :: omp_lock_hint_kind
|
|
public :: omp_control_tool_kind
|
|
public :: omp_control_tool_result_kind
|
|
public :: omp_allocator_handle_kind
|
|
public :: omp_memspace_handle_kind
|
|
public :: omp_alloctrait_key_kind
|
|
public :: omp_alloctrait_val_kind
|
|
public :: omp_interop_kind
|
|
public :: omp_interop_fr_kind
|
|
public :: omp_alloctrait
|
|
public :: omp_pause_resource_kind
|
|
public :: omp_depend_kind
|
|
public :: omp_event_handle_kind
|
|
|
|
integer (kind=omp_integer_kind), parameter, public :: openmp_version = @LIBOMP_OMP_YEAR_MONTH@
|
|
integer (kind=omp_integer_kind), parameter, public :: kmp_version_major = @LIBOMP_VERSION_MAJOR@
|
|
integer (kind=omp_integer_kind), parameter, public :: kmp_version_minor = @LIBOMP_VERSION_MINOR@
|
|
integer (kind=omp_integer_kind), parameter, public :: kmp_version_build = @LIBOMP_VERSION_BUILD@
|
|
character(*) kmp_build_date
|
|
parameter( kmp_build_date = '@LIBOMP_BUILD_DATE@' )
|
|
|
|
integer(kind=omp_sched_kind), parameter, public :: omp_sched_static = 1
|
|
integer(kind=omp_sched_kind), parameter, public :: omp_sched_dynamic = 2
|
|
integer(kind=omp_sched_kind), parameter, public :: omp_sched_guided = 3
|
|
integer(kind=omp_sched_kind), parameter, public :: omp_sched_auto = 4
|
|
integer(kind=omp_sched_kind), parameter, public :: omp_sched_monotonic = int(Z'80000000', kind=omp_sched_kind)
|
|
|
|
integer (kind=omp_integer_kind), parameter, public :: omp_initial_device = -1
|
|
integer (kind=omp_integer_kind), parameter, public :: omp_invalid_device = -2
|
|
|
|
integer (kind=omp_proc_bind_kind), parameter, public :: omp_proc_bind_false = 0
|
|
integer (kind=omp_proc_bind_kind), parameter, public :: omp_proc_bind_true = 1
|
|
integer (kind=omp_proc_bind_kind), parameter, public :: omp_proc_bind_master = 2
|
|
integer (kind=omp_proc_bind_kind), parameter, public :: omp_proc_bind_close = 3
|
|
integer (kind=omp_proc_bind_kind), parameter, public :: omp_proc_bind_spread = 4
|
|
|
|
integer (kind=kmp_cancel_kind), parameter, public :: kmp_cancel_parallel = 1
|
|
integer (kind=kmp_cancel_kind), parameter, public :: kmp_cancel_loop = 2
|
|
integer (kind=kmp_cancel_kind), parameter, public :: kmp_cancel_sections = 3
|
|
integer (kind=kmp_cancel_kind), parameter, public :: kmp_cancel_taskgroup = 4
|
|
|
|
integer (kind=omp_sync_hint_kind), parameter, public :: omp_sync_hint_none = 0
|
|
integer (kind=omp_sync_hint_kind), parameter, public :: omp_sync_hint_uncontended = 1
|
|
integer (kind=omp_sync_hint_kind), parameter, public :: omp_sync_hint_contended = 2
|
|
integer (kind=omp_sync_hint_kind), parameter, public :: omp_sync_hint_nonspeculative = 4
|
|
integer (kind=omp_sync_hint_kind), parameter, public :: omp_sync_hint_speculative = 8
|
|
integer (kind=omp_lock_hint_kind), parameter, public :: omp_lock_hint_none = omp_sync_hint_none
|
|
integer (kind=omp_lock_hint_kind), parameter, public :: omp_lock_hint_uncontended = omp_sync_hint_uncontended
|
|
integer (kind=omp_lock_hint_kind), parameter, public :: omp_lock_hint_contended = omp_sync_hint_contended
|
|
integer (kind=omp_lock_hint_kind), parameter, public :: omp_lock_hint_nonspeculative = omp_sync_hint_nonspeculative
|
|
integer (kind=omp_lock_hint_kind), parameter, public :: omp_lock_hint_speculative = omp_sync_hint_speculative
|
|
integer (kind=omp_lock_hint_kind), parameter, public :: kmp_lock_hint_hle = 65536
|
|
integer (kind=omp_lock_hint_kind), parameter, public :: kmp_lock_hint_rtm = 131072
|
|
integer (kind=omp_lock_hint_kind), parameter, public :: kmp_lock_hint_adaptive = 262144
|
|
|
|
integer (kind=omp_control_tool_kind), parameter, public :: omp_control_tool_start = 1
|
|
integer (kind=omp_control_tool_kind), parameter, public :: omp_control_tool_pause = 2
|
|
integer (kind=omp_control_tool_kind), parameter, public :: omp_control_tool_flush = 3
|
|
integer (kind=omp_control_tool_kind), parameter, public :: omp_control_tool_end = 4
|
|
|
|
integer (kind=omp_control_tool_result_kind), parameter, public :: omp_control_tool_notool = -2
|
|
integer (kind=omp_control_tool_result_kind), parameter, public :: omp_control_tool_nocallback = -1
|
|
integer (kind=omp_control_tool_result_kind), parameter, public :: omp_control_tool_success = 0
|
|
integer (kind=omp_control_tool_result_kind), parameter, public :: omp_control_tool_ignored = 1
|
|
|
|
integer (kind=omp_alloctrait_key_kind), parameter, public :: omp_atk_sync_hint = 1
|
|
integer (kind=omp_alloctrait_key_kind), parameter, public :: omp_atk_alignment = 2
|
|
integer (kind=omp_alloctrait_key_kind), parameter, public :: omp_atk_access = 3
|
|
integer (kind=omp_alloctrait_key_kind), parameter, public :: omp_atk_pool_size = 4
|
|
integer (kind=omp_alloctrait_key_kind), parameter, public :: omp_atk_fallback = 5
|
|
integer (kind=omp_alloctrait_key_kind), parameter, public :: omp_atk_fb_data = 6
|
|
integer (kind=omp_alloctrait_key_kind), parameter, public :: omp_atk_pinned = 7
|
|
integer (kind=omp_alloctrait_key_kind), parameter, public :: omp_atk_partition = 8
|
|
integer (kind=omp_alloctrait_key_kind), parameter, public :: omp_atk_pin_device = 9
|
|
integer (kind=omp_alloctrait_key_kind), parameter, public :: omp_atk_preferred_device = 10
|
|
integer (kind=omp_alloctrait_key_kind), parameter, public :: omp_atk_device_access = 11
|
|
integer (kind=omp_alloctrait_key_kind), parameter, public :: omp_atk_target_access = 12
|
|
integer (kind=omp_alloctrait_key_kind), parameter, public :: omp_atk_atomic_scope = 13
|
|
integer (kind=omp_alloctrait_key_kind), parameter, public :: omp_atk_part_size = 14
|
|
|
|
integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_default = -1
|
|
integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_false = 0
|
|
integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_true = 1
|
|
integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_contended = 3
|
|
integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_uncontended = 4
|
|
integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_serialized = 5
|
|
integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_sequential = omp_atv_serialized
|
|
integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_private = 6
|
|
integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_device = 7
|
|
integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_thread = 8
|
|
integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_pteam = 9
|
|
integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_cgroup = 10
|
|
integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_default_mem_fb = 11
|
|
integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_null_fb = 12
|
|
integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_abort_fb = 13
|
|
integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_allocator_fb = 14
|
|
integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_environment = 15
|
|
integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_nearest = 16
|
|
integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_blocked = 17
|
|
integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_interleaved = 18
|
|
integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_all = 19
|
|
integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_single = 20
|
|
integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_multiple = 21
|
|
integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_memspace = 22
|
|
|
|
integer (kind=omp_allocator_handle_kind), parameter, public :: omp_null_allocator = 0
|
|
integer (kind=omp_allocator_handle_kind), parameter, public :: omp_default_mem_alloc = 1
|
|
integer (kind=omp_allocator_handle_kind), parameter, public :: omp_large_cap_mem_alloc = 2
|
|
integer (kind=omp_allocator_handle_kind), parameter, public :: omp_const_mem_alloc = 3
|
|
integer (kind=omp_allocator_handle_kind), parameter, public :: omp_high_bw_mem_alloc = 4
|
|
integer (kind=omp_allocator_handle_kind), parameter, public :: omp_low_lat_mem_alloc = 5
|
|
integer (kind=omp_allocator_handle_kind), parameter, public :: omp_cgroup_mem_alloc = 6
|
|
integer (kind=omp_allocator_handle_kind), parameter, public :: omp_pteam_mem_alloc = 7
|
|
integer (kind=omp_allocator_handle_kind), parameter, public :: omp_thread_mem_alloc = 8
|
|
integer (kind=omp_allocator_handle_kind), parameter, public :: llvm_omp_target_host_mem_alloc = 100
|
|
integer (kind=omp_allocator_handle_kind), parameter, public :: llvm_omp_target_shared_mem_alloc = 101
|
|
integer (kind=omp_allocator_handle_kind), parameter, public :: llvm_omp_target_device_mem_alloc = 102
|
|
|
|
integer (kind=omp_memspace_handle_kind), parameter, public :: omp_null_mem_space = 0
|
|
integer (kind=omp_memspace_handle_kind), parameter, public :: omp_default_mem_space = 99
|
|
integer (kind=omp_memspace_handle_kind), parameter, public :: omp_large_cap_mem_space = 1
|
|
integer (kind=omp_memspace_handle_kind), parameter, public :: omp_const_mem_space = 2
|
|
integer (kind=omp_memspace_handle_kind), parameter, public :: omp_high_bw_mem_space = 3
|
|
integer (kind=omp_memspace_handle_kind), parameter, public :: omp_low_lat_mem_space = 4
|
|
integer (kind=omp_memspace_handle_kind), parameter, public :: llvm_omp_target_host_mem_space = 100
|
|
integer (kind=omp_memspace_handle_kind), parameter, public :: llvm_omp_target_shared_mem_space = 101
|
|
integer (kind=omp_memspace_handle_kind), parameter, public :: llvm_omp_target_device_mem_space = 102
|
|
|
|
integer (kind=omp_pause_resource_kind), parameter, public :: omp_pause_resume = 0
|
|
integer (kind=omp_pause_resource_kind), parameter, public :: omp_pause_soft = 1
|
|
integer (kind=omp_pause_resource_kind), parameter, public :: omp_pause_hard = 2
|
|
integer (kind=omp_pause_resource_kind), parameter, public :: omp_pause_stop_tool = 3
|
|
|
|
integer (kind=omp_interop_fr_kind), parameter, public :: omp_ifr_cuda = 1
|
|
integer (kind=omp_interop_fr_kind), parameter, public :: omp_ifr_cuda_driver = 2
|
|
integer (kind=omp_interop_fr_kind), parameter, public :: omp_ifr_opencl = 3
|
|
integer (kind=omp_interop_fr_kind), parameter, public :: omp_ifr_sycl = 4
|
|
integer (kind=omp_interop_fr_kind), parameter, public :: omp_ifr_hip = 5
|
|
integer (kind=omp_interop_fr_kind), parameter, public :: omp_ifr_level_zero = 6
|
|
integer (kind=omp_interop_fr_kind), parameter, public :: omp_ifr_last = 7
|
|
|
|
integer (kind=omp_interop_kind), parameter, public :: omp_interop_none = 0
|
|
|
|
interface
|
|
|
|
! ***
|
|
! *** omp_* entry points
|
|
! ***
|
|
|
|
subroutine omp_set_num_threads(num_threads) bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_integer_kind), value :: num_threads
|
|
end subroutine omp_set_num_threads
|
|
|
|
subroutine omp_set_dynamic(dynamic_threads) bind(c)
|
|
use omp_lib_kinds
|
|
logical (kind=omp_logical_kind), value :: dynamic_threads
|
|
end subroutine omp_set_dynamic
|
|
|
|
subroutine omp_set_nested(nested) bind(c)
|
|
use omp_lib_kinds
|
|
logical (kind=omp_logical_kind), value :: nested
|
|
end subroutine omp_set_nested
|
|
|
|
function omp_get_num_threads() bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_integer_kind) omp_get_num_threads
|
|
end function omp_get_num_threads
|
|
|
|
function omp_get_max_threads() bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_integer_kind) omp_get_max_threads
|
|
end function omp_get_max_threads
|
|
|
|
function omp_get_thread_num() bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_integer_kind) omp_get_thread_num
|
|
end function omp_get_thread_num
|
|
|
|
function omp_get_num_procs() bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_integer_kind) omp_get_num_procs
|
|
end function omp_get_num_procs
|
|
|
|
function omp_in_parallel() bind(c)
|
|
use omp_lib_kinds
|
|
logical (kind=omp_logical_kind) omp_in_parallel
|
|
end function omp_in_parallel
|
|
|
|
function omp_in_final() bind(c)
|
|
use omp_lib_kinds
|
|
logical (kind=omp_logical_kind) omp_in_final
|
|
end function omp_in_final
|
|
|
|
function omp_get_dynamic() bind(c)
|
|
use omp_lib_kinds
|
|
logical (kind=omp_logical_kind) omp_get_dynamic
|
|
end function omp_get_dynamic
|
|
|
|
function omp_get_nested() bind(c)
|
|
use omp_lib_kinds
|
|
logical (kind=omp_logical_kind) omp_get_nested
|
|
end function omp_get_nested
|
|
|
|
function omp_get_thread_limit() bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_integer_kind) omp_get_thread_limit
|
|
end function omp_get_thread_limit
|
|
|
|
subroutine omp_set_max_active_levels(max_levels) bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_integer_kind), value :: max_levels
|
|
end subroutine omp_set_max_active_levels
|
|
|
|
function omp_get_max_active_levels() bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_integer_kind) omp_get_max_active_levels
|
|
end function omp_get_max_active_levels
|
|
|
|
function omp_get_level() bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_integer_kind) omp_get_level
|
|
end function omp_get_level
|
|
|
|
function omp_get_active_level() bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_integer_kind) omp_get_active_level
|
|
end function omp_get_active_level
|
|
|
|
function omp_get_ancestor_thread_num(level) bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_integer_kind) omp_get_ancestor_thread_num
|
|
integer (kind=omp_integer_kind), value :: level
|
|
end function omp_get_ancestor_thread_num
|
|
|
|
function omp_get_team_size(level) bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_integer_kind) omp_get_team_size
|
|
integer (kind=omp_integer_kind), value :: level
|
|
end function omp_get_team_size
|
|
|
|
subroutine omp_set_schedule(kind, chunk_size) bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_sched_kind), value :: kind
|
|
integer (kind=omp_integer_kind), value :: chunk_size
|
|
end subroutine omp_set_schedule
|
|
|
|
subroutine omp_get_schedule(kind, chunk_size) bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_sched_kind) kind
|
|
integer (kind=omp_integer_kind) chunk_size
|
|
end subroutine omp_get_schedule
|
|
|
|
function omp_get_proc_bind() bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_proc_bind_kind) omp_get_proc_bind
|
|
end function omp_get_proc_bind
|
|
|
|
function omp_get_num_places() bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_integer_kind) omp_get_num_places
|
|
end function omp_get_num_places
|
|
|
|
function omp_get_place_num_procs(place_num) bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_integer_kind), value :: place_num
|
|
integer (kind=omp_integer_kind) omp_get_place_num_procs
|
|
end function omp_get_place_num_procs
|
|
|
|
subroutine omp_get_place_proc_ids(place_num, ids) bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_integer_kind), value :: place_num
|
|
integer (kind=omp_integer_kind) ids(*)
|
|
end subroutine omp_get_place_proc_ids
|
|
|
|
function omp_get_place_num() bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_integer_kind) omp_get_place_num
|
|
end function omp_get_place_num
|
|
|
|
function omp_get_partition_num_places() bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_integer_kind) omp_get_partition_num_places
|
|
end function omp_get_partition_num_places
|
|
|
|
subroutine omp_get_partition_place_nums(place_nums) bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_integer_kind) place_nums(*)
|
|
end subroutine omp_get_partition_place_nums
|
|
|
|
function omp_get_wtime() bind(c)
|
|
use omp_lib_kinds
|
|
real (kind=kmp_double_kind) omp_get_wtime
|
|
end function omp_get_wtime
|
|
|
|
function omp_get_wtick() bind(c)
|
|
use omp_lib_kinds
|
|
real (kind=kmp_double_kind) omp_get_wtick
|
|
end function omp_get_wtick
|
|
|
|
function omp_get_default_device() bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_integer_kind) omp_get_default_device
|
|
end function omp_get_default_device
|
|
|
|
subroutine omp_set_default_device(device_num) bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_integer_kind), value :: device_num
|
|
end subroutine omp_set_default_device
|
|
|
|
function omp_get_num_devices() bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_integer_kind) omp_get_num_devices
|
|
end function omp_get_num_devices
|
|
|
|
function omp_get_num_teams() bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_integer_kind) omp_get_num_teams
|
|
end function omp_get_num_teams
|
|
|
|
function omp_get_team_num() bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_integer_kind) omp_get_team_num
|
|
end function omp_get_team_num
|
|
|
|
function omp_get_cancellation() bind(c)
|
|
use omp_lib_kinds
|
|
logical (kind=omp_logical_kind) omp_get_cancellation
|
|
end function omp_get_cancellation
|
|
|
|
function omp_is_initial_device() bind(c)
|
|
use omp_lib_kinds
|
|
logical (kind=omp_logical_kind) omp_is_initial_device
|
|
end function omp_is_initial_device
|
|
|
|
function omp_get_initial_device() bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_integer_kind) omp_get_initial_device
|
|
end function omp_get_initial_device
|
|
|
|
function omp_get_device_num() bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_integer_kind) omp_get_device_num
|
|
end function omp_get_device_num
|
|
|
|
function omp_pause_resource(kind, device_num) bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_pause_resource_kind), value :: kind
|
|
integer (kind=omp_integer_kind), value :: device_num
|
|
integer (kind=omp_integer_kind) omp_pause_resource
|
|
end function omp_pause_resource
|
|
|
|
function omp_pause_resource_all(kind) bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_pause_resource_kind), value :: kind
|
|
integer (kind=omp_integer_kind) omp_pause_resource_all
|
|
end function omp_pause_resource_all
|
|
|
|
function omp_get_supported_active_levels() bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_integer_kind) omp_get_supported_active_levels
|
|
end function omp_get_supported_active_levels
|
|
|
|
subroutine omp_fulfill_event(event) bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_event_handle_kind), value :: event
|
|
end subroutine omp_fulfill_event
|
|
|
|
subroutine omp_init_lock(svar) bind(c)
|
|
#ifdef __INTEL_COMPILER
|
|
!DIR$ IF(__INTEL_COMPILER.GE.1400)
|
|
!DIR$ attributes known_intrinsic :: omp_init_lock
|
|
!DIR$ ENDIF
|
|
#endif
|
|
use omp_lib_kinds
|
|
integer (kind=omp_lock_kind) svar
|
|
end subroutine omp_init_lock
|
|
|
|
subroutine omp_destroy_lock(svar) bind(c)
|
|
#ifdef __INTEL_COMPILER
|
|
!DIR$ IF(__INTEL_COMPILER.GE.1400)
|
|
!DIR$ attributes known_intrinsic :: omp_destroy_lock
|
|
!DIR$ ENDIF
|
|
#endif
|
|
use omp_lib_kinds
|
|
integer (kind=omp_lock_kind) svar
|
|
end subroutine omp_destroy_lock
|
|
|
|
subroutine omp_set_lock(svar) bind(c)
|
|
#ifdef __INTEL_COMPILER
|
|
!DIR$ IF(__INTEL_COMPILER.GE.1400)
|
|
!DIR$ attributes known_intrinsic :: omp_set_lock
|
|
!DIR$ ENDIF
|
|
#endif
|
|
use omp_lib_kinds
|
|
integer (kind=omp_lock_kind) svar
|
|
end subroutine omp_set_lock
|
|
|
|
subroutine omp_unset_lock(svar) bind(c)
|
|
#ifdef __INTEL_COMPILER
|
|
!DIR$ IF(__INTEL_COMPILER.GE.1400)
|
|
!DIR$ attributes known_intrinsic :: omp_unset_lock
|
|
!DIR$ ENDIF
|
|
#endif
|
|
use omp_lib_kinds
|
|
integer (kind=omp_lock_kind) svar
|
|
end subroutine omp_unset_lock
|
|
|
|
function omp_test_lock(svar) bind(c)
|
|
#ifdef __INTEL_COMPILER
|
|
!DIR$ IF(__INTEL_COMPILER.GE.1400)
|
|
!DIR$ attributes known_intrinsic :: omp_test_lock
|
|
!DIR$ ENDIF
|
|
#endif
|
|
use omp_lib_kinds
|
|
logical (kind=omp_logical_kind) omp_test_lock
|
|
integer (kind=omp_lock_kind) svar
|
|
end function omp_test_lock
|
|
|
|
subroutine omp_init_nest_lock(nvar) bind(c)
|
|
#ifdef __INTEL_COMPILER
|
|
!DIR$ IF(__INTEL_COMPILER.GE.1400)
|
|
!DIR$ attributes known_intrinsic :: omp_init_nest_lock
|
|
!DIR$ ENDIF
|
|
#endif
|
|
use omp_lib_kinds
|
|
integer (kind=omp_nest_lock_kind) nvar
|
|
end subroutine omp_init_nest_lock
|
|
|
|
subroutine omp_destroy_nest_lock(nvar) bind(c)
|
|
#ifdef __INTEL_COMPILER
|
|
!DIR$ IF(__INTEL_COMPILER.GE.1400)
|
|
!DIR$ attributes known_intrinsic :: omp_destroy_nest_lock
|
|
!DIR$ ENDIF
|
|
#endif
|
|
use omp_lib_kinds
|
|
integer (kind=omp_nest_lock_kind) nvar
|
|
end subroutine omp_destroy_nest_lock
|
|
|
|
subroutine omp_set_nest_lock(nvar) bind(c)
|
|
#ifdef __INTEL_COMPILER
|
|
!DIR$ IF(__INTEL_COMPILER.GE.1400)
|
|
!DIR$ attributes known_intrinsic :: omp_set_nest_lock
|
|
!DIR$ ENDIF
|
|
#endif
|
|
use omp_lib_kinds
|
|
integer (kind=omp_nest_lock_kind) nvar
|
|
end subroutine omp_set_nest_lock
|
|
|
|
subroutine omp_unset_nest_lock(nvar) bind(c)
|
|
#ifdef __INTEL_COMPILER
|
|
!DIR$ IF(__INTEL_COMPILER.GE.1400)
|
|
!DIR$ attributes known_intrinsic :: omp_unset_nest_lock
|
|
!DIR$ ENDIF
|
|
#endif
|
|
use omp_lib_kinds
|
|
integer (kind=omp_nest_lock_kind) nvar
|
|
end subroutine omp_unset_nest_lock
|
|
|
|
function omp_test_nest_lock(nvar) bind(c)
|
|
#ifdef __INTEL_COMPILER
|
|
!DIR$ IF(__INTEL_COMPILER.GE.1400)
|
|
!DIR$ attributes known_intrinsic :: omp_test_nest_lock
|
|
!DIR$ ENDIF
|
|
#endif
|
|
use omp_lib_kinds
|
|
integer (kind=omp_integer_kind) omp_test_nest_lock
|
|
integer (kind=omp_nest_lock_kind) nvar
|
|
end function omp_test_nest_lock
|
|
|
|
function omp_get_max_task_priority() bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_integer_kind) omp_get_max_task_priority
|
|
end function omp_get_max_task_priority
|
|
|
|
subroutine omp_init_lock_with_hint(svar, hint) bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_lock_kind) svar
|
|
integer (kind=omp_lock_hint_kind), value :: hint
|
|
end subroutine omp_init_lock_with_hint
|
|
|
|
subroutine omp_init_nest_lock_with_hint(nvar, hint) bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_nest_lock_kind) nvar
|
|
integer (kind=omp_lock_hint_kind), value :: hint
|
|
end subroutine omp_init_nest_lock_with_hint
|
|
|
|
function omp_control_tool(command, modifier, arg) bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_integer_kind) omp_control_tool
|
|
integer (kind=omp_control_tool_kind), value :: command
|
|
integer (kind=omp_control_tool_kind), value :: modifier
|
|
integer (kind=kmp_pointer_kind), optional :: arg
|
|
end function omp_control_tool
|
|
|
|
function omp_init_allocator(memspace, ntraits, traits)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_allocator_handle_kind) omp_init_allocator
|
|
integer (kind=omp_memspace_handle_kind) :: memspace
|
|
integer (kind=omp_integer_kind) :: ntraits
|
|
type(omp_alloctrait), intent(in) :: traits(*)
|
|
end function omp_init_allocator
|
|
|
|
subroutine omp_destroy_allocator(allocator) bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_allocator_handle_kind), value :: allocator
|
|
end subroutine omp_destroy_allocator
|
|
|
|
subroutine omp_set_default_allocator(allocator) bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_allocator_handle_kind), value :: allocator
|
|
end subroutine omp_set_default_allocator
|
|
|
|
function omp_get_default_allocator() bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_allocator_handle_kind) omp_get_default_allocator
|
|
end function omp_get_default_allocator
|
|
|
|
subroutine omp_set_affinity_format(format)
|
|
character (len=*) :: format
|
|
end subroutine omp_set_affinity_format
|
|
|
|
function omp_get_affinity_format(buffer)
|
|
use omp_lib_kinds
|
|
character (len=*) :: buffer
|
|
integer (kind=kmp_size_t_kind) :: omp_get_affinity_format
|
|
end function omp_get_affinity_format
|
|
|
|
subroutine omp_display_affinity(format)
|
|
character (len=*) :: format
|
|
end subroutine omp_display_affinity
|
|
|
|
function omp_capture_affinity(buffer, format)
|
|
use omp_lib_kinds
|
|
character (len=*) :: format
|
|
character (len=*) :: buffer
|
|
integer (kind=kmp_size_t_kind) :: omp_capture_affinity
|
|
end function omp_capture_affinity
|
|
|
|
subroutine omp_set_num_teams(num_teams) bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_integer_kind), value :: num_teams
|
|
end subroutine omp_set_num_teams
|
|
|
|
function omp_get_max_teams() bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_integer_kind) omp_get_max_teams
|
|
end function omp_get_max_teams
|
|
|
|
subroutine omp_set_teams_thread_limit(thread_limit) bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_integer_kind), value :: thread_limit
|
|
end subroutine omp_set_teams_thread_limit
|
|
|
|
function omp_get_teams_thread_limit() bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_integer_kind) omp_get_teams_thread_limit
|
|
end function omp_get_teams_thread_limit
|
|
|
|
subroutine omp_display_env(verbose) bind(c)
|
|
use omp_lib_kinds
|
|
logical (kind=omp_logical_kind), value :: verbose
|
|
end subroutine omp_display_env
|
|
|
|
function omp_target_alloc(size, device_num) bind(c)
|
|
use :: iso_c_binding, only: c_ptr, c_size_t, c_int
|
|
type(c_ptr) omp_target_alloc
|
|
integer(c_size_t), value :: size
|
|
integer(c_int), value :: device_num
|
|
end function omp_target_alloc
|
|
|
|
subroutine omp_target_free(device_ptr, device_num) bind(c)
|
|
use :: iso_c_binding, only: c_ptr, c_int
|
|
type(c_ptr), value :: device_ptr
|
|
integer(c_int), value :: device_num
|
|
end subroutine omp_target_free
|
|
|
|
function omp_target_is_present(ptr, device_num) bind(c)
|
|
use :: iso_c_binding, only: c_ptr, c_int
|
|
integer(c_int) omp_target_is_present
|
|
type(c_ptr), value :: ptr
|
|
integer(c_int), value :: device_num
|
|
end function omp_target_is_present
|
|
|
|
function omp_target_memcpy(dst, src, length, dst_offset, src_offset, &
|
|
dst_device_num, src_device_num) bind(c)
|
|
use :: iso_c_binding, only: c_ptr, c_size_t, c_int
|
|
integer(c_int) omp_target_memcpy
|
|
type(c_ptr), value :: dst, src
|
|
integer(c_size_t), value :: length, dst_offset, src_offset
|
|
integer(c_int), value :: dst_device_num, src_device_num
|
|
end function omp_target_memcpy
|
|
|
|
function omp_target_memcpy_rect(dst, src, element_size, num_dims, &
|
|
volume, dst_offsets, src_offsets, dst_dimensions, &
|
|
src_dimensions, dst_device_num, src_device_num) bind(c)
|
|
use :: iso_c_binding, only: c_ptr, c_size_t, c_int
|
|
integer(c_int) omp_target_memcpy_rect
|
|
type(c_ptr), value :: dst, src
|
|
integer(c_size_t), value :: element_size
|
|
integer(c_int), value :: num_dims, dst_device_num, src_device_num
|
|
integer(c_size_t), intent(in) :: volume(*), dst_offsets(*), &
|
|
src_offsets(*), dst_dimensions(*), src_dimensions(*)
|
|
end function omp_target_memcpy_rect
|
|
|
|
function omp_target_memcpy_async(dst, src, length, dst_offset, &
|
|
src_offset, dst_device_num, src_device_num, depobj_count, &
|
|
depobj_list) bind(c)
|
|
use omp_lib_kinds
|
|
use :: iso_c_binding, only: c_ptr, c_size_t, c_int
|
|
integer(c_int) omp_target_memcpy_async
|
|
type(c_ptr), value :: dst, src
|
|
integer(c_size_t), value :: length, dst_offset, src_offset
|
|
integer(c_int), value :: dst_device_num, src_device_num, &
|
|
depobj_count
|
|
integer(omp_depend_kind), optional :: depobj_list(*)
|
|
end function omp_target_memcpy_async
|
|
|
|
function omp_target_memcpy_rect_async(dst, src, element_size, &
|
|
num_dims, volume, dst_offsets, src_offsets, dst_dimensions, &
|
|
src_dimensions, dst_device_num, src_device_num, depobj_count, &
|
|
depobj_list) bind(c)
|
|
use omp_lib_kinds
|
|
use :: iso_c_binding, only: c_ptr, c_size_t, c_int
|
|
integer(c_int) omp_target_memcpy_rect_async
|
|
type(c_ptr), value :: dst, src
|
|
integer(c_size_t), value :: element_size
|
|
integer(c_int), value :: num_dims, dst_device_num, src_device_num, &
|
|
depobj_count
|
|
integer(c_size_t), intent(in) :: volume(*), dst_offsets(*), &
|
|
src_offsets(*), dst_dimensions(*), src_dimensions(*)
|
|
integer (omp_depend_kind), optional :: depobj_list(*)
|
|
end function omp_target_memcpy_rect_async
|
|
|
|
function omp_target_memset(ptr, val, count, device_num) bind(c)
|
|
use :: iso_c_binding, only : c_ptr, c_int, c_size_t
|
|
type(c_ptr) :: omp_target_memset
|
|
type(c_ptr), value :: ptr
|
|
integer(c_int), value :: val
|
|
integer(c_size_t), value :: count
|
|
integer(c_int), value :: device_num
|
|
end function
|
|
|
|
function omp_target_memset_async(ptr, val, count, device_num, &
|
|
depobj_count, depobj_list) bind(c)
|
|
use omp_lib_kinds
|
|
use :: iso_c_binding, only : c_ptr, c_int, c_size_t
|
|
type(c_ptr) :: omp_target_memset_async
|
|
type(c_ptr), value :: ptr
|
|
integer(c_int), value :: val
|
|
integer(c_size_t), value :: count
|
|
integer(c_int), value :: device_num
|
|
integer(c_int), value :: depobj_count
|
|
integer(omp_depend_kind), optional :: depobj_list(*)
|
|
end function
|
|
|
|
function omp_target_associate_ptr(host_ptr, device_ptr, size, &
|
|
device_offset, device_num) bind(c)
|
|
use :: iso_c_binding, only: c_ptr, c_size_t, c_int
|
|
integer(c_int) omp_target_associate_ptr
|
|
type(c_ptr), value :: host_ptr, device_ptr
|
|
integer(c_size_t), value :: size, device_offset
|
|
integer(c_int), value :: device_num
|
|
end function omp_target_associate_ptr
|
|
|
|
function omp_get_mapped_ptr(ptr, device_num) bind(c)
|
|
use :: iso_c_binding, only: c_ptr, c_int
|
|
type(c_ptr) omp_get_mapped_ptr
|
|
type(c_ptr), value :: ptr
|
|
integer(c_int), value :: device_num
|
|
end function omp_get_mapped_ptr
|
|
|
|
function omp_target_disassociate_ptr(ptr, device_num) bind(c)
|
|
use :: iso_c_binding, only: c_ptr, c_int
|
|
integer(c_int) omp_target_disassociate_ptr
|
|
type(c_ptr), value :: ptr
|
|
integer(c_int), value :: device_num
|
|
end function omp_target_disassociate_ptr
|
|
|
|
function omp_target_is_accessible(ptr, size, device_num) bind(c)
|
|
use :: iso_c_binding, only : c_ptr, c_size_t, c_int
|
|
integer(c_int) omp_target_is_accessible
|
|
type(c_ptr), value :: ptr
|
|
integer(c_size_t), value :: size
|
|
integer(c_int), value :: device_num
|
|
end function omp_target_is_accessible
|
|
|
|
function omp_alloc(size, allocator) bind(c)
|
|
use omp_lib_kinds
|
|
use :: iso_c_binding, only : c_ptr, c_size_t
|
|
type(c_ptr) omp_alloc
|
|
integer(c_size_t), value :: size
|
|
integer(omp_allocator_handle_kind), value :: allocator
|
|
end function omp_alloc
|
|
|
|
function omp_aligned_alloc(alignment, size, allocator) bind(c)
|
|
use omp_lib_kinds
|
|
use :: iso_c_binding, only : c_ptr, c_size_t
|
|
type(c_ptr) omp_aligned_alloc
|
|
integer(c_size_t), value :: alignment, size
|
|
integer(omp_allocator_handle_kind), value :: allocator
|
|
end function omp_aligned_alloc
|
|
|
|
function omp_calloc(nmemb, size, allocator) bind(c)
|
|
use omp_lib_kinds
|
|
use :: iso_c_binding, only : c_ptr, c_size_t
|
|
type(c_ptr) omp_calloc
|
|
integer(c_size_t), value :: nmemb, size
|
|
integer(omp_allocator_handle_kind), value :: allocator
|
|
end function omp_calloc
|
|
|
|
function omp_aligned_calloc(alignment, nmemb, size, allocator) bind(c)
|
|
use omp_lib_kinds
|
|
use :: iso_c_binding, only : c_ptr, c_size_t
|
|
type(c_ptr) omp_aligned_calloc
|
|
integer(c_size_t), value :: alignment, nmemb, size
|
|
integer(omp_allocator_handle_kind), value :: allocator
|
|
end function omp_aligned_calloc
|
|
|
|
function omp_realloc(ptr, size, allocator, free_allocator) bind(c)
|
|
use omp_lib_kinds
|
|
use :: iso_c_binding, only : c_ptr, c_size_t
|
|
type(c_ptr) omp_realloc
|
|
type(c_ptr), value :: ptr
|
|
integer(c_size_t), value :: size
|
|
integer(omp_allocator_handle_kind), value :: allocator
|
|
integer(omp_allocator_handle_kind), value :: free_allocator
|
|
end function omp_realloc
|
|
|
|
subroutine omp_free(ptr, allocator) bind(c)
|
|
use omp_lib_kinds
|
|
use :: iso_c_binding, only : c_ptr
|
|
type(c_ptr), value :: ptr
|
|
integer(omp_allocator_handle_kind), value :: allocator
|
|
end subroutine omp_free
|
|
|
|
function omp_in_explicit_task() bind(c)
|
|
use omp_lib_kinds
|
|
logical (kind=omp_logical_kind) omp_in_explicit_task
|
|
end function omp_in_explicit_task
|
|
|
|
function omp_get_devices_memspace(ndevs, devs, memspace)
|
|
use omp_lib_kinds
|
|
integer(omp_memspace_handle_kind) :: omp_get_devices_memspace
|
|
integer, intent(in) :: ndevs
|
|
integer, intent(in) :: devs(*)
|
|
integer(omp_memspace_handle_kind), intent(in) :: memspace
|
|
end function omp_get_devices_memspace
|
|
|
|
function omp_get_device_memspace(dev, memspace)
|
|
use omp_lib_kinds
|
|
integer(omp_memspace_handle_kind) :: omp_get_device_memspace
|
|
integer, intent(in) :: dev
|
|
integer(omp_memspace_handle_kind), intent(in) :: memspace
|
|
end function omp_get_device_memspace
|
|
|
|
function omp_get_devices_and_host_memspace(ndevs, devs, memspace)
|
|
use omp_lib_kinds
|
|
integer(omp_memspace_handle_kind) :: &
|
|
omp_get_devices_and_host_memspace
|
|
integer, intent(in) :: ndevs
|
|
integer, intent(in) :: devs(*)
|
|
integer(omp_memspace_handle_kind), intent(in) :: memspace
|
|
end function omp_get_devices_and_host_memspace
|
|
|
|
function omp_get_device_and_host_memspace(dev, memspace)
|
|
use omp_lib_kinds
|
|
integer(omp_memspace_handle_kind) :: &
|
|
omp_get_device_and_host_memspace
|
|
integer, intent(in) :: dev
|
|
integer(omp_memspace_handle_kind), intent(in) :: memspace
|
|
end function omp_get_device_and_host_memspace
|
|
|
|
function omp_get_devices_all_memspace(memspace)
|
|
use omp_lib_kinds
|
|
integer(omp_memspace_handle_kind) :: omp_get_devices_all_memspace
|
|
integer(omp_memspace_handle_kind), intent(in) :: memspace
|
|
end function omp_get_devices_all_memspace
|
|
|
|
function omp_get_devices_allocator(ndevs, devs, memspace)
|
|
use omp_lib_kinds
|
|
integer(omp_allocator_handle_kind) :: omp_get_devices_allocator
|
|
integer, intent(in) :: ndevs
|
|
integer, intent(in) :: devs(*)
|
|
integer(omp_memspace_handle_kind), intent(in) :: memspace
|
|
end function omp_get_devices_allocator
|
|
|
|
function omp_get_device_allocator(dev, memspace)
|
|
use omp_lib_kinds
|
|
integer(omp_allocator_handle_kind) :: omp_get_device_allocator
|
|
integer, intent(in) :: dev
|
|
integer(omp_memspace_handle_kind), intent(in) :: memspace
|
|
end function omp_get_device_allocator
|
|
|
|
function omp_get_devices_and_host_allocator(ndevs, devs, memspace)
|
|
use omp_lib_kinds
|
|
integer(omp_allocator_handle_kind) :: &
|
|
omp_get_devices_and_host_allocator
|
|
integer, intent(in) :: ndevs
|
|
integer, intent(in) :: devs(*)
|
|
integer(omp_memspace_handle_kind), intent(in) :: memspace
|
|
end function omp_get_devices_and_host_allocator
|
|
|
|
function omp_get_device_and_host_allocator(dev, memspace)
|
|
use omp_lib_kinds
|
|
integer(omp_allocator_handle_kind) :: &
|
|
omp_get_device_and_host_allocator
|
|
integer, intent(in) :: dev
|
|
integer(omp_memspace_handle_kind), intent(in) :: memspace
|
|
end function omp_get_device_and_host_allocator
|
|
|
|
function omp_get_devices_all_allocator(memspace)
|
|
use omp_lib_kinds
|
|
integer(omp_allocator_handle_kind) :: &
|
|
omp_get_devices_all_allocator
|
|
integer(omp_memspace_handle_kind), intent(in) :: memspace
|
|
end function omp_get_devices_all_allocator
|
|
|
|
function omp_get_memspace_num_resources(memspace)
|
|
use omp_lib_kinds
|
|
integer omp_get_memspace_num_resources
|
|
integer(omp_memspace_handle_kind), intent(in) :: memspace
|
|
end function omp_get_memspace_num_resources
|
|
|
|
function omp_get_submemspace(memspace, num_resources, resources)
|
|
use omp_lib_kinds
|
|
integer(omp_memspace_handle_kind) omp_get_submemspace
|
|
integer(omp_memspace_handle_kind), intent(in) :: memspace
|
|
integer, intent(in) :: num_resources
|
|
integer, intent(in) :: resources(*)
|
|
end function omp_get_submemspace
|
|
|
|
! ***
|
|
! *** kmp_* entry points
|
|
! ***
|
|
|
|
subroutine kmp_set_stacksize(size) bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_integer_kind), value :: size
|
|
end subroutine kmp_set_stacksize
|
|
|
|
subroutine kmp_set_stacksize_s(size) bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=kmp_size_t_kind), value :: size
|
|
end subroutine kmp_set_stacksize_s
|
|
|
|
subroutine kmp_set_blocktime(msec) bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_integer_kind), value :: msec
|
|
end subroutine kmp_set_blocktime
|
|
|
|
subroutine kmp_set_library_serial() bind(c)
|
|
end subroutine kmp_set_library_serial
|
|
|
|
subroutine kmp_set_library_turnaround() bind(c)
|
|
end subroutine kmp_set_library_turnaround
|
|
|
|
subroutine kmp_set_library_throughput() bind(c)
|
|
end subroutine kmp_set_library_throughput
|
|
|
|
subroutine kmp_set_library(libnum) bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_integer_kind), value :: libnum
|
|
end subroutine kmp_set_library
|
|
|
|
subroutine kmp_set_defaults(string)
|
|
character (len=*) :: string
|
|
end subroutine kmp_set_defaults
|
|
|
|
function kmp_get_stacksize() bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_integer_kind) kmp_get_stacksize
|
|
end function kmp_get_stacksize
|
|
|
|
function kmp_get_stacksize_s() bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=kmp_size_t_kind) kmp_get_stacksize_s
|
|
end function kmp_get_stacksize_s
|
|
|
|
function kmp_get_blocktime() bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_integer_kind) kmp_get_blocktime
|
|
end function kmp_get_blocktime
|
|
|
|
function kmp_get_library() bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_integer_kind) kmp_get_library
|
|
end function kmp_get_library
|
|
|
|
subroutine kmp_set_disp_num_buffers(num) bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_integer_kind), value :: num
|
|
end subroutine kmp_set_disp_num_buffers
|
|
|
|
function kmp_set_affinity(mask) bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_integer_kind) kmp_set_affinity
|
|
integer (kind=kmp_affinity_mask_kind) mask
|
|
end function kmp_set_affinity
|
|
|
|
function kmp_get_affinity(mask) bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_integer_kind) kmp_get_affinity
|
|
integer (kind=kmp_affinity_mask_kind) mask
|
|
end function kmp_get_affinity
|
|
|
|
function kmp_get_affinity_max_proc() bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_integer_kind) kmp_get_affinity_max_proc
|
|
end function kmp_get_affinity_max_proc
|
|
|
|
subroutine kmp_create_affinity_mask(mask) bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=kmp_affinity_mask_kind) mask
|
|
end subroutine kmp_create_affinity_mask
|
|
|
|
subroutine kmp_destroy_affinity_mask(mask) bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=kmp_affinity_mask_kind) mask
|
|
end subroutine kmp_destroy_affinity_mask
|
|
|
|
function kmp_set_affinity_mask_proc(proc, mask) bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_integer_kind) kmp_set_affinity_mask_proc
|
|
integer (kind=omp_integer_kind), value :: proc
|
|
integer (kind=kmp_affinity_mask_kind) mask
|
|
end function kmp_set_affinity_mask_proc
|
|
|
|
function kmp_unset_affinity_mask_proc(proc, mask) bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_integer_kind) kmp_unset_affinity_mask_proc
|
|
integer (kind=omp_integer_kind), value :: proc
|
|
integer (kind=kmp_affinity_mask_kind) mask
|
|
end function kmp_unset_affinity_mask_proc
|
|
|
|
function kmp_get_affinity_mask_proc(proc, mask) bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=omp_integer_kind) kmp_get_affinity_mask_proc
|
|
integer (kind=omp_integer_kind), value :: proc
|
|
integer (kind=kmp_affinity_mask_kind) mask
|
|
end function kmp_get_affinity_mask_proc
|
|
|
|
function kmp_malloc(size) bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=kmp_pointer_kind) kmp_malloc
|
|
integer (kind=kmp_size_t_kind), value :: size
|
|
end function kmp_malloc
|
|
|
|
function kmp_aligned_malloc(size, alignment) bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=kmp_pointer_kind) kmp_aligned_malloc
|
|
integer (kind=kmp_size_t_kind), value :: size
|
|
integer (kind=kmp_size_t_kind), value :: alignment
|
|
end function kmp_aligned_malloc
|
|
|
|
function kmp_calloc(nelem, elsize) bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=kmp_pointer_kind) kmp_calloc
|
|
integer (kind=kmp_size_t_kind), value :: nelem
|
|
integer (kind=kmp_size_t_kind), value :: elsize
|
|
end function kmp_calloc
|
|
|
|
function kmp_realloc(ptr, size) bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=kmp_pointer_kind) kmp_realloc
|
|
integer (kind=kmp_pointer_kind), value :: ptr
|
|
integer (kind=kmp_size_t_kind), value :: size
|
|
end function kmp_realloc
|
|
|
|
subroutine kmp_free(ptr) bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=kmp_pointer_kind), value :: ptr
|
|
end subroutine kmp_free
|
|
|
|
subroutine kmp_set_warnings_on() bind(c)
|
|
end subroutine kmp_set_warnings_on
|
|
|
|
subroutine kmp_set_warnings_off() bind(c)
|
|
end subroutine kmp_set_warnings_off
|
|
|
|
function kmp_get_cancellation_status(cancelkind) bind(c)
|
|
use omp_lib_kinds
|
|
integer (kind=kmp_cancel_kind), value :: cancelkind
|
|
logical (kind=omp_logical_kind) kmp_get_cancellation_status
|
|
end function kmp_get_cancellation_status
|
|
|
|
end interface
|
|
|
|
! make the above routine definitions public
|
|
public :: omp_set_num_threads
|
|
public :: omp_set_dynamic
|
|
public :: omp_set_nested
|
|
public :: omp_get_num_threads
|
|
public :: omp_get_max_threads
|
|
public :: omp_get_thread_num
|
|
public :: omp_get_num_procs
|
|
public :: omp_in_parallel
|
|
public :: omp_in_final
|
|
public :: omp_get_dynamic
|
|
public :: omp_get_nested
|
|
public :: omp_get_thread_limit
|
|
public :: omp_set_max_active_levels
|
|
public :: omp_get_max_active_levels
|
|
public :: omp_get_level
|
|
public :: omp_get_active_level
|
|
public :: omp_get_ancestor_thread_num
|
|
public :: omp_get_team_size
|
|
public :: omp_set_schedule
|
|
public :: omp_get_schedule
|
|
public :: omp_get_proc_bind
|
|
public :: omp_get_num_places
|
|
public :: omp_get_place_num_procs
|
|
public :: omp_get_place_proc_ids
|
|
public :: omp_get_place_num
|
|
public :: omp_get_partition_num_places
|
|
public :: omp_get_partition_place_nums
|
|
public :: omp_get_wtime
|
|
public :: omp_get_wtick
|
|
public :: omp_get_default_device
|
|
public :: omp_set_default_device
|
|
public :: omp_get_num_devices
|
|
public :: omp_get_num_teams
|
|
public :: omp_get_team_num
|
|
public :: omp_get_cancellation
|
|
public :: omp_is_initial_device
|
|
public :: omp_get_initial_device
|
|
public :: omp_get_device_num
|
|
public :: omp_pause_resource
|
|
public :: omp_pause_resource_all
|
|
public :: omp_get_supported_active_levels
|
|
public :: omp_fulfill_event
|
|
public :: omp_init_lock
|
|
public :: omp_destroy_lock
|
|
public :: omp_set_lock
|
|
public :: omp_unset_lock
|
|
public :: omp_test_lock
|
|
public :: omp_init_nest_lock
|
|
public :: omp_destroy_nest_lock
|
|
public :: omp_set_nest_lock
|
|
public :: omp_unset_nest_lock
|
|
public :: omp_test_nest_lock
|
|
public :: omp_get_max_task_priority
|
|
public :: omp_init_lock_with_hint
|
|
public :: omp_init_nest_lock_with_hint
|
|
public :: omp_control_tool
|
|
public :: omp_init_allocator
|
|
public :: omp_destroy_allocator
|
|
public :: omp_set_default_allocator
|
|
public :: omp_get_default_allocator
|
|
public :: omp_set_affinity_format
|
|
public :: omp_get_affinity_format
|
|
public :: omp_display_affinity
|
|
public :: omp_capture_affinity
|
|
public :: omp_set_num_teams
|
|
public :: omp_get_max_teams
|
|
public :: omp_set_teams_thread_limit
|
|
public :: omp_get_teams_thread_limit
|
|
public :: omp_display_env
|
|
public :: omp_target_alloc
|
|
public :: omp_target_free
|
|
public :: omp_target_is_present
|
|
public :: omp_target_memcpy
|
|
public :: omp_target_memcpy_rect
|
|
public :: omp_target_memcpy_async
|
|
public :: omp_target_memcpy_rect_async
|
|
public :: omp_target_memset
|
|
public :: omp_target_memset_async
|
|
public :: omp_target_associate_ptr
|
|
public :: omp_get_mapped_ptr
|
|
public :: omp_target_disassociate_ptr
|
|
public :: omp_target_is_accessible
|
|
public :: omp_alloc
|
|
public :: omp_aligned_alloc
|
|
public :: omp_calloc
|
|
public :: omp_aligned_calloc
|
|
public :: omp_realloc
|
|
public :: omp_free
|
|
public :: omp_in_explicit_task
|
|
public :: kmp_set_stacksize
|
|
public :: kmp_set_stacksize_s
|
|
public :: kmp_set_blocktime
|
|
public :: kmp_set_library_serial
|
|
public :: kmp_set_library_turnaround
|
|
public :: kmp_set_library_throughput
|
|
public :: kmp_set_library
|
|
public :: kmp_set_defaults
|
|
public :: kmp_get_stacksize
|
|
public :: kmp_get_stacksize_s
|
|
public :: kmp_get_blocktime
|
|
public :: kmp_get_library
|
|
public :: kmp_set_disp_num_buffers
|
|
public :: kmp_set_affinity
|
|
public :: kmp_get_affinity
|
|
public :: kmp_get_affinity_max_proc
|
|
public :: kmp_create_affinity_mask
|
|
public :: kmp_destroy_affinity_mask
|
|
public :: kmp_set_affinity_mask_proc
|
|
public :: kmp_unset_affinity_mask_proc
|
|
public :: kmp_get_affinity_mask_proc
|
|
public :: kmp_malloc
|
|
public :: kmp_aligned_malloc
|
|
public :: kmp_calloc
|
|
public :: kmp_realloc
|
|
public :: kmp_free
|
|
public :: kmp_set_warnings_on
|
|
public :: kmp_set_warnings_off
|
|
public :: kmp_get_cancellation_status
|
|
|
|
end module omp_lib
|