17#ifndef KOKKOS_IMPL_PUBLIC_INCLUDE
18#include <Kokkos_Macros.hpp>
20 "Including non-public Kokkos header files is not allowed.");
22#ifndef KOKKOS_TASKSCHEDULER_FWD_HPP
23#define KOKKOS_TASKSCHEDULER_FWD_HPP
28#include <Kokkos_Macros.hpp>
29#if defined(KOKKOS_ENABLE_TASKDAG)
31#include <Kokkos_Core_fwd.hpp>
34#ifdef KOKKOS_ENABLE_DEPRECATION_WARNINGS
36KOKKOS_IMPL_DISABLE_DEPRECATED_WARNINGS_PUSH()
43template <
typename ValueType,
typename Scheduler>
44class KOKKOS_DEPRECATED BasicFuture;
46template <
class Space,
class Queue>
47class KOKKOS_DEPRECATED SimpleTaskScheduler;
49template <
class Space,
class Queue>
50class KOKKOS_DEPRECATED BasicTaskScheduler;
52template <
typename Space>
53struct KOKKOS_DEPRECATED is_scheduler :
public std::false_type {};
55template <
class Space,
class Queue>
56struct KOKKOS_DEPRECATED is_scheduler<BasicTaskScheduler<Space, Queue>>
57 :
public std::true_type {};
59template <
class Space,
class Queue>
60struct KOKKOS_DEPRECATED is_scheduler<SimpleTaskScheduler<Space, Queue>>
61 :
public std::true_type {};
63enum class KOKKOS_DEPRECATED TaskPriority :
int {
75template <
class Device>
80template <
class TaskQueueTraits>
99template <
typename Space,
typename ResultType,
typename FunctorType>
104template <
typename Space,
typename MemorySpace>
107template <
typename ExecSpace,
typename MemorySpace>
108class TaskQueueMultiple;
110template <
typename ExecSpace,
typename MemSpace,
typename TaskQueueTraits,
113class SingleTaskQueue;
115template <
typename ExecSpace,
typename MemSpace,
typename TaskQueueTraits,
117class MultipleTaskQueue;
119struct TaskQueueTraitsLockBased;
121template <
size_t CircularBufferSize = 64>
122struct TaskQueueTraitsChaseLev;
124template <
typename ResultType>
127struct TaskSchedulerBase;
129template <
class ExecSpace>
130struct default_tasking_memory_space_for_execution_space {
131 using type =
typename ExecSpace::memory_space;
134#if defined(KOKKOS_ENABLE_CUDA)
136struct default_tasking_memory_space_for_execution_space<Kokkos::Cuda> {
141template <
class ExecSpace>
142using default_tasking_memory_space_for_execution_space_t =
143 typename default_tasking_memory_space_for_execution_space<ExecSpace>::type;
152template <
typename Space>
153using DeprecatedTaskScheduler KOKKOS_DEPRECATED = BasicTaskScheduler<
157 Impl::default_tasking_memory_space_for_execution_space_t<Space>>>;
159template <
typename Space>
160using DeprecatedTaskSchedulerMultiple KOKKOS_DEPRECATED = BasicTaskScheduler<
162 Impl::TaskQueueMultiple<
164 Impl::default_tasking_memory_space_for_execution_space_t<Space>>>;
166template <
typename Space>
167using TaskScheduler KOKKOS_DEPRECATED = SimpleTaskScheduler<
169 Impl::SingleTaskQueue<
170 Space, Impl::default_tasking_memory_space_for_execution_space_t<Space>,
171 Impl::TaskQueueTraitsLockBased>>;
173template <
typename Space>
174using TaskSchedulerMultiple KOKKOS_DEPRECATED = SimpleTaskScheduler<
176 Impl::MultipleTaskQueue<
177 Space, Impl::default_tasking_memory_space_for_execution_space_t<Space>,
178 Impl::TaskQueueTraitsLockBased,
179 Kokkos::MemoryPool<Kokkos::Device<
181 Impl::default_tasking_memory_space_for_execution_space_t<Space>>>>>;
183template <
typename Space>
184using ChaseLevTaskScheduler KOKKOS_DEPRECATED = SimpleTaskScheduler<
186 Impl::MultipleTaskQueue<
187 Space, Impl::default_tasking_memory_space_for_execution_space_t<Space>,
188 Impl::TaskQueueTraitsChaseLev<>,
189 Kokkos::MemoryPool<Kokkos::Device<
191 Impl::default_tasking_memory_space_for_execution_space_t<Space>>>>>;
193template <
class Space,
class QueueType>
194KOKKOS_DEPRECATED
void wait(BasicTaskScheduler<Space, QueueType>
const&);
198struct TaskSchedulerBase {};
200class TaskQueueBase {};
202template <
typename Scheduler,
typename EnableIfConstra
int =
void>
203class TaskQueueSpecializationConstrained {};
205template <
typename Scheduler>
206struct TaskQueueSpecialization : TaskQueueSpecializationConstrained<Scheduler> {
209template <
int,
typename>
210struct TaskPolicyData;
216#ifdef KOKKOS_ENABLE_DEPRECATION_WARNINGS
217KOKKOS_IMPL_DISABLE_DEPRECATED_WARNINGS_POP()
A thread safe view to a bitset.