41 #ifdef ALPAKA_ACC_CPU_B_TBB_T_SEQ_ENABLED
45 template<
typename TDim,
typename TIdx,
typename TKernelFnObj,
typename... TArgs>
46 class TaskKernelCpuTbbBlocks;
49 template<
typename TDim,
typename TIdx>
50 class AccCpuTbbBlocks final
52 ,
public gb::IdxGbRef<TDim, TIdx>
53 ,
public bt::IdxBtZero<TDim, TIdx>
58 ,
public math::MathStdLib
59 ,
public BlockSharedMemDynMember<>
60 ,
public BlockSharedMemStMember<>
61 ,
public BlockSyncNoOp
64 # ifdef ALPAKA_DISABLE_VENDOR_RNG
65 ,
public rand::RandDefault
69 ,
public warp::WarpSingleThread
70 ,
public concepts::Implements<ConceptAcc, AccCpuTbbBlocks<TDim, TIdx>>
73 sizeof(TIdx) >=
sizeof(
int),
74 "Index type is not supported, consider using int or a larger type.");
78 template<
typename TDim2,
typename TIdx2,
typename TKernelFnObj,
typename... TArgs>
79 friend class ::alpaka::TaskKernelCpuTbbBlocks;
81 AccCpuTbbBlocks(AccCpuTbbBlocks
const&) =
delete;
82 AccCpuTbbBlocks(AccCpuTbbBlocks&&) =
delete;
83 auto operator=(AccCpuTbbBlocks
const&) -> AccCpuTbbBlocks& =
delete;
84 auto operator=(AccCpuTbbBlocks&&) -> AccCpuTbbBlocks& =
delete;
87 template<
typename TWorkDiv>
88 ALPAKA_FN_HOST AccCpuTbbBlocks(TWorkDiv
const& workDiv, std::size_t
const& blockSharedMemDynSizeBytes)
90 , gb::IdxGbRef<TDim, TIdx>(m_gridBlockIdx)
91 , BlockSharedMemDynMember<>(blockSharedMemDynSizeBytes)
92 , BlockSharedMemStMember<>(staticMemBegin(), staticMemCapacity())
93 , m_gridBlockIdx(
Vec<TDim, TIdx>::zeros())
99 Vec<TDim, TIdx>
mutable m_gridBlockIdx;
105 template<
typename TDim,
typename TIdx>
106 struct AccType<AccCpuTbbBlocks<TDim, TIdx>>
108 using type = AccCpuTbbBlocks<TDim, TIdx>;
112 template<
typename TDim,
typename TIdx>
113 struct IsSingleThreadAcc<AccCpuTbbBlocks<TDim, TIdx>> : std::true_type
118 template<
typename TDim,
typename TIdx>
119 struct IsMultiThreadAcc<AccCpuTbbBlocks<TDim, TIdx>> : std::false_type
124 template<
typename TDim,
typename TIdx>
125 struct GetAccDevProps<AccCpuTbbBlocks<TDim, TIdx>>
130 static_cast<TIdx
>(1),
138 static_cast<TIdx
>(1),
144 static_cast<size_t>(AccCpuTbbBlocks<TDim, TIdx>::staticAllocBytes()),
151 template<
typename TDim,
typename TIdx>
152 struct GetAccName<AccCpuTbbBlocks<TDim, TIdx>>
156 return "AccCpuTbbBlocks<" + std::to_string(TDim::value) +
"," + core::demangled<TIdx> +
">";
161 template<
typename TDim,
typename TIdx>
162 struct DevType<AccCpuTbbBlocks<TDim, TIdx>>
168 template<
typename TDim,
typename TIdx>
169 struct DimType<AccCpuTbbBlocks<TDim, TIdx>>
175 template<
typename TDim,
typename TIdx,
typename TWorkDiv,
typename TKernelFnObj,
typename... TArgs>
176 struct CreateTaskKernel<AccCpuTbbBlocks<TDim, TIdx>, TWorkDiv, TKernelFnObj, TArgs...>
179 TWorkDiv
const& workDiv,
180 TKernelFnObj
const& kernelFnObj,
183 return TaskKernelCpuTbbBlocks<TDim, TIdx, TKernelFnObj, TArgs...>(
186 std::forward<TArgs>(args)...);
191 template<
typename TDim,
typename TIdx>
192 struct PlatformType<AccCpuTbbBlocks<TDim, TIdx>>
194 using type = PlatformCpu;
198 template<
typename TDim,
typename TIdx>
199 struct IdxType<AccCpuTbbBlocks<TDim, TIdx>>
204 template<
typename TDim,
typename TIdx>
210 template<
typename TDim,
typename TIdx>
213 using type = alpaka::AccCpuTbbBlocks<TDim, TIdx>;
ALPAKA_NO_HOST_ACC_WARNING static constexpr ALPAKA_FN_HOST_ACC auto ones() -> Vec< TDim, TVal >
One value constructor.
ALPAKA_NO_HOST_ACC_WARNING static constexpr ALPAKA_FN_HOST_ACC auto all(TIdx const &val) -> Vec< TDim, TIdx >
Single value constructor.
ALPAKA_NO_HOST_ACC_WARNING ALPAKA_FN_HOST_ACC auto max(T const &max_ctx, Tx const &x, Ty const &y)
Returns the larger of two arguments. NaNs are treated as missing data (between a NaN and a numeric va...
TinyMersenneTwister RandStdLib
The alpaka accelerator library.
ALPAKA_NO_HOST_ACC_WARNING ALPAKA_FN_HOST_ACC WorkDivMembers(alpaka::Vec< TDim, TIdx > const &gridBlockExtent, alpaka::Vec< TDim, TIdx > const &blockThreadExtent, alpaka::Vec< TDim, TIdx > const &elemExtent) -> WorkDivMembers< TDim, TIdx >
Deduction guide for the constructor which can be called without explicit template type parameters.
ALPAKA_FN_HOST auto getAccDevProps(TDev const &dev) -> AccDevProps< Dim< TAcc >, Idx< TAcc >>
ALPAKA_FN_HOST auto createTaskKernel(TWorkDiv const &workDiv, TKernelFnObj const &kernelFnObj, TArgs &&... args)
Creates a kernel execution task.
ALPAKA_FN_HOST auto getMemBytes(TDev const &dev) -> std::size_t
Vec(TFirstIndex &&, TRestIndices &&...) -> Vec< DimInt< 1+sizeof...(TRestIndices)>, std::decay_t< TFirstIndex >>
alpaka::meta::InheritFromList< alpaka::meta::Unique< std::tuple< TGridAtomic, TBlockAtomic, TThreadAtomic, concepts::Implements< ConceptAtomicGrids, TGridAtomic >, concepts::Implements< ConceptAtomicBlocks, TBlockAtomic >, concepts::Implements< ConceptAtomicThreads, TThreadAtomic > >> > AtomicHierarchy
build a single class to inherit from different atomic implementations
typename trait::AccToTag< TAcc >::type AccToTag
maps an acc type to a tag type
typename trait::TagToAcc< TTag, TDim, TIdx >::type TagToAcc
maps a tag type to an acc type
static ALPAKA_FN_HOST auto getAccName() -> std::string