! 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, intrinsic :: 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_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_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_all = 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_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_default_mem_space = 0 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_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 integer (kind=omp_integer_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, intrinsic :: 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, intrinsic :: 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, intrinsic :: 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, intrinsic :: 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, intrinsic :: 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, intrinsic :: 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, intrinsic :: 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, intrinsic :: 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, intrinsic :: 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, intrinsic :: 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, intrinsic :: 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, intrinsic :: 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, intrinsic :: 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, intrinsic :: 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, intrinsic :: 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, intrinsic :: 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, intrinsic :: 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, intrinsic :: 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, intrinsic :: 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 ! *** ! *** 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) bind(c) use, intrinsic :: iso_c_binding character (kind=c_char) :: 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