42#ifdef ALPAKA_ACC_CPU_B_OMP2_T_SEQ_ENABLED
45# error If ALPAKA_ACC_CPU_B_OMP2_T_SEQ_ENABLED is set, the compiler has to support OpenMP 2.0 or higher!
50 template<
typename TDim,
typename TIdx,
typename TKernelFnObj,
typename... TArgs>
58 template<
typename TDim,
typename TIdx>
73# ifdef ALPAKA_DISABLE_VENDOR_RNG
82 sizeof(TIdx) >=
sizeof(
int),
83 "Index type is not supported, consider using int or a larger type.");
87 template<
typename TDim2,
typename TIdx2,
typename TKernelFnObj,
typename... TArgs>
88 friend class ::alpaka::TaskKernelCpuOmp2Blocks;
96 template<
typename TWorkDiv>
99 , gb::
IdxGbRef<TDim, TIdx>(m_gridBlockIdx)
102 , m_gridBlockIdx(
Vec<TDim, TIdx>::zeros())
114 template<
typename TDim,
typename TIdx>
121 template<
typename TDim,
typename TIdx>
127 template<
typename TDim,
typename TIdx>
133 template<
typename TDim,
typename TIdx>
143 std::numeric_limits<TIdx>::max(),
147 static_cast<TIdx
>(1),
151 std::numeric_limits<TIdx>::max(),
160 template<
typename TDim,
typename TIdx>
170 template<
typename TDim,
typename TIdx>
177 template<
typename TDim,
typename TIdx>
184 template<
typename TDim,
typename TIdx,
typename TWorkDiv,
typename TKernelFnObj,
typename... TArgs>
188 TWorkDiv
const& workDiv,
189 TKernelFnObj
const& kernelFnObj,
192 if(workDiv.m_blockThreadExtent.prod() !=
static_cast<TIdx
>(1u))
194 throw std::runtime_error(
195 "The given work division is not valid for a single thread Acc: "
202 std::forward<TArgs>(args)...);
207 template<
typename TDim,
typename TIdx>
214 template<
typename TDim,
typename TIdx>
220 template<
typename TDim,
typename TIdx>
226 template<
typename TDim,
typename TIdx>
The CPU OpenMP 2.0 block accelerator.
AccCpuOmp2Blocks(AccCpuOmp2Blocks const &)=delete
auto operator=(AccCpuOmp2Blocks const &) -> AccCpuOmp2Blocks &=delete
AccCpuOmp2Blocks(AccCpuOmp2Blocks &&)=delete
auto operator=(AccCpuOmp2Blocks &&) -> AccCpuOmp2Blocks &=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 CPU OpenMP 2.0 block memory fence.
The CPU OpenMP 2.0 block accelerator execution task.
ALPAKA_NO_HOST_ACC_WARNING static ALPAKA_FN_HOST_ACC constexpr auto ones() -> Vec< TDim, TVal >
One value constructor.
ALPAKA_NO_HOST_ACC_WARNING static ALPAKA_FN_HOST_ACC constexpr auto all(TVal const &val) -> Vec< TDim, TVal >
Single 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.
auto clipCast(V const &val) -> T
The alpaka accelerator library.
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
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.
The kernel execution task creation trait.
The dimension getter type trait.
The device properties get trait.
The accelerator name trait.
static ALPAKA_FN_HOST auto getAccName() -> std::string
The multi thread accelerator trait.
The single thread accelerator trait.