44 #ifndef KOKKOS_THREADS_HPP
45 #define KOKKOS_THREADS_HPP
47 #include <Kokkos_Macros.hpp>
48 #if defined( KOKKOS_ENABLE_THREADS )
50 #include <Kokkos_Core_fwd.hpp>
54 #include <Kokkos_HostSpace.hpp>
55 #include <Kokkos_ScratchSpace.hpp>
57 #include <Kokkos_MemoryTraits.hpp>
58 #include <impl/Kokkos_Tags.hpp>
77 typedef Threads execution_space ;
82 typedef Kokkos::Device<execution_space,memory_space> device_type;
85 typedef memory_space::size_type size_type ;
87 typedef ScratchMemorySpace< Threads > scratch_memory_space ;
97 static int in_parallel();
108 static void impl_static_fence();
110 #ifdef KOKKOS_ENABLE_DEPRECATED_CODE
117 static int concurrency();
119 #ifdef KOKKOS_ENABLE_DEPRECATED_CODE
126 static void initialize(
unsigned threads_count = 0 ,
127 unsigned use_numa_count = 0 ,
128 unsigned use_cores_per_numa = 0 ,
129 bool allow_asynchronous_threadpool =
false );
131 static int is_initialized();
133 static Threads & instance(
int = 0 );
137 static int thread_pool_size(
int depth = 0 );
138 #if defined( KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST )
139 static int thread_pool_rank();
141 KOKKOS_INLINE_FUNCTION
static int thread_pool_rank() {
return 0 ; }
144 inline static unsigned max_hardware_threads() {
return thread_pool_size(0); }
145 KOKKOS_INLINE_FUNCTION
static unsigned hardware_thread_id() {
return thread_pool_rank(); }
147 static void impl_finalize();
175 static void impl_initialize(
unsigned threads_count = 0 ,
176 unsigned use_numa_count = 0 ,
177 unsigned use_cores_per_numa = 0 ,
178 bool allow_asynchronous_threadpool =
false );
180 static int impl_is_initialized();
182 static Threads & impl_instance(
int = 0 );
186 static int impl_thread_pool_size(
int depth = 0 );
187 #if defined( KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST )
188 static int impl_thread_pool_rank();
190 KOKKOS_INLINE_FUNCTION
static int impl_thread_pool_rank() {
return 0 ; }
193 inline static unsigned impl_max_hardware_threads() {
return impl_thread_pool_size(0); }
194 KOKKOS_INLINE_FUNCTION
static unsigned impl_hardware_thread_id() {
return impl_thread_pool_rank(); }
197 static const char* name();
210 struct MemorySpaceAccess
211 < Kokkos::Threads::memory_space
212 , Kokkos::Threads::scratch_memory_space
215 enum { assignable =
false };
216 enum { accessible =
true };
217 enum { deepcopy =
false };
221 struct VerifyExecutionCanAccessMemorySpace
222 < Kokkos::Threads::memory_space
223 , Kokkos::Threads::scratch_memory_space
226 enum { value =
true };
227 inline static void verify(
void ) { }
228 inline static void verify(
const void * ) { }
236 #include <Kokkos_ExecPolicy.hpp>
238 #include <Threads/Kokkos_ThreadsExec.hpp>
239 #include <Threads/Kokkos_ThreadsTeam.hpp>
240 #include <Threads/Kokkos_Threads_Parallel.hpp>
242 #include <KokkosExp_MDRangePolicy.hpp>
void print_configuration(std::ostream &, const bool detail=false)
Print "Bill of Materials".
Memory management for host memory.
Memory layout tag indicating right-to-left (C or lexigraphical scheme) striding of multi-indices...
Declaration of various MemoryLayout options.
Declaration of parallel operators.
void finalize()
Finalize the spaces that were initialized via Kokkos::initialize.