40 #ifdef ALPAKA_ACC_CPU_B_SEQ_T_SEQ_ENABLED
44 template<
typename TDim,
typename TIdx,
typename TKernelFnObj,
typename... TArgs>
45 class TaskKernelCpuSerial;
51 template<
typename TDim,
typename TIdx>
66 # ifdef ALPAKA_DISABLE_VENDOR_RNG
75 sizeof(TIdx) >=
sizeof(
int),
76 "Index type is not supported, consider using int or a larger type.");
80 template<
typename TDim2,
typename TIdx2,
typename TKernelFnObj,
typename... TArgs>
81 friend class ::alpaka::TaskKernelCpuSerial;
89 template<
typename TWorkDiv>
92 , gb::
IdxGbRef<TDim, TIdx>(m_gridBlockIdx)
95 , m_gridBlockIdx(
Vec<TDim, TIdx>::zeros())
107 template<
typename TDim,
typename TIdx>
114 template<
typename TDim,
typename TIdx>
120 template<
typename TDim,
typename TIdx>
126 template<
typename TDim,
typename TIdx>
132 static_cast<TIdx
>(1),
140 static_cast<TIdx
>(1),
153 template<
typename TDim,
typename TIdx>
158 return "AccCpuSerial<" + std::to_string(TDim::value) +
"," + core::demangled<TIdx> +
">";
163 template<
typename TDim,
typename TIdx>
170 template<
typename TDim,
typename TIdx>
177 template<
typename TDim,
typename TIdx,
typename TWorkDiv,
typename TKernelFnObj,
typename... TArgs>
181 TWorkDiv
const& workDiv,
182 TKernelFnObj
const& kernelFnObj,
185 if(workDiv.m_blockThreadExtent.prod() !=
static_cast<TIdx
>(1u))
187 throw std::runtime_error(
188 "The given work division is not valid for a single thread Acc: "
195 std::forward<TArgs>(args)...);
200 template<
typename TDim,
typename TIdx>
207 template<
typename TDim,
typename TIdx>
213 template<
typename TDim,
typename TIdx>
219 template<
typename TDim,
typename TIdx>
The CPU serial accelerator.
auto operator=(AccCpuSerial &&) -> AccCpuSerial &=delete
auto operator=(AccCpuSerial const &) -> AccCpuSerial &=delete
AccCpuSerial(AccCpuSerial &&)=delete
AccCpuSerial(AccCpuSerial const &)=delete
Dynamic block shared memory provider using fixed-size member array to allocate memory on the stack or...
static constexpr auto staticAllocBytes() -> std::uint32_t
auto staticMemBegin() const -> uint8_t *
auto staticMemCapacity() const -> std::uint32_t
Static block shared memory provider using a pointer to externally allocated fixed-size memory,...
The no op block synchronization.
The serial CPU memory fence.
The CPU serial execution task implementation.
ALPAKA_NO_HOST_ACC_WARNING static constexpr ALPAKA_FN_HOST_ACC auto ones() -> Vec< TDim, TVal >
One value constructor.
A basic class holding the work division as grid block extent, block thread and thread element extent.
A zero block thread index provider.
A IdxGbRef grid block index.
IdxGbRef(Vec< TDim, TIdx > const &gridBlockIdx)
The standard library math trait specializations.
"Tiny" state mersenne twister implementation
The single-threaded warp to emulate it on CPUs.
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...
The alpaka accelerator library.
ALPAKA_FN_HOST auto getMemBytes(TDev const &dev) -> std::size_t
ALPAKA_FN_HOST auto getAccName() -> std::string
The acceleration properties on a device.
Tag used in class inheritance hierarchies that describes that a specific interface (TInterface) is im...
The accelerator type trait.
static ALPAKA_FN_HOST auto createTaskKernel(TWorkDiv const &workDiv, TKernelFnObj const &kernelFnObj, TArgs &&... args)
The kernel execution task creation trait.
The dimension getter type trait.
static ALPAKA_FN_HOST auto getAccDevProps(DevCpu const &dev) -> AccDevProps< TDim, TIdx >
The device properties get trait.
static ALPAKA_FN_HOST auto getAccName() -> std::string
The accelerator name trait.
The multi thread accelerator trait.
The single thread accelerator trait.