45 #ifndef KOKKOS_OPENMPTARGET_HPP 46 #define KOKKOS_OPENMPTARGET_HPP 48 #include <Kokkos_Core_fwd.hpp> 50 #if defined(KOKKOS_ENABLE_OPENMPTARGET) && defined(_OPENMP) 56 #include <Kokkos_OpenMPTargetSpace.hpp> 57 #include <Kokkos_ScratchSpace.hpp> 59 #include <Kokkos_TaskPolicy.hpp> 61 #include <impl/Kokkos_Tags.hpp> 62 #include <impl/Kokkos_Profiling_Interface.hpp> 63 #include <KokkosExp_MDRangePolicy.hpp> 64 #include <impl/Kokkos_ExecSpaceInitializer.hpp> 70 class OpenMPTargetInternal;
82 using execution_space = OpenMPTarget;
83 using memory_space = OpenMPTargetSpace;
85 using device_type = Kokkos::Device<execution_space, memory_space>;
87 using array_layout = LayoutLeft;
88 using size_type = memory_space::size_type;
90 using scratch_memory_space = ScratchMemorySpace<OpenMPTarget>;
92 inline static bool in_parallel() {
return omp_in_parallel(); }
97 static int concurrency();
100 void print_configuration(std::ostream&,
const bool detail =
false);
102 static const char* name();
105 void impl_finalize();
108 static int impl_is_initialized();
111 void impl_initialize();
113 inline Impl::OpenMPTargetInternal* impl_internal_space_instance()
const {
114 return m_space_instance;
118 uint32_t impl_instance_id() const noexcept {
return 0; }
121 Impl::OpenMPTargetInternal* m_space_instance;
128 struct DeviceTypeTraits<::Kokkos::Experimental::OpenMPTarget> {
129 static constexpr DeviceType
id =
130 ::Kokkos::Profiling::Experimental::DeviceType::OpenMPTarget;
137 class OpenMPTargetSpaceInitializer :
public ExecSpaceInitializerBase {
139 OpenMPTargetSpaceInitializer() =
default;
140 ~OpenMPTargetSpaceInitializer() =
default;
141 void initialize(
const InitArguments& args)
final;
142 void finalize(
const bool)
final;
144 void print_configuration(std::ostream& msg, const
bool detail) final;
153 #include <OpenMPTarget/Kokkos_OpenMPTarget_Exec.hpp> 154 #include <OpenMPTarget/Kokkos_OpenMPTarget_Parallel.hpp> 155 #include <OpenMPTarget/Kokkos_OpenMPTarget_Parallel_MDRange.hpp> 156 #include <OpenMPTarget/Kokkos_OpenMPTarget_Task.hpp>
Declaration of various MemoryLayout options.
Declaration of parallel operators.