39#ifdef __cpp_lib_format
45#ifdef ALPAKA_ACC_CPU_B_OMP2_T_SEQ_ENABLED
48# error If ALPAKA_ACC_CPU_B_OMP2_T_SEQ_ENABLED is set, the compiler has to support OpenMP 2.0 or higher!
53 template<
typename TDim,
typename TIdx,
typename TKernelFnObj,
typename... TArgs>
61 template<
typename TDim,
typename TIdx>
76# ifdef ALPAKA_DISABLE_VENDOR_RNG
85 sizeof(TIdx) >=
sizeof(
int),
86 "Index type is not supported, consider using int or a larger type.");
90 template<
typename TDim2,
typename TIdx2,
typename TKernelFnObj,
typename... TArgs>
91 friend class ::alpaka::TaskKernelCpuOmp2Blocks;
99 template<
typename TWorkDiv>
102 , gb::
IdxGbRef<TDim, TIdx>(m_gridBlockIdx)
105 , m_gridBlockIdx(
Vec<TDim, TIdx>::zeros())
117 template<
typename TDim,
typename TIdx>
124 template<
typename TDim,
typename TIdx>
130 template<
typename TDim,
typename TIdx>
136 template<
typename TDim,
typename TIdx>
146 std::numeric_limits<TIdx>::max(),
150 static_cast<TIdx
>(1),
154 std::numeric_limits<TIdx>::max(),
163 template<
typename TDim,
typename TIdx>
168# if ALPAKA_COMP_CLANG
169# pragma clang diagnostic push
170# pragma clang diagnostic ignored "-Wexit-time-destructors"
172 using namespace std::literals;
173 static std::string
const accName =
174# ifdef __cpp_lib_format
181# if ALPAKA_COMP_CLANG
182# pragma clang diagnostic pop
188 template<
typename TDim,
typename TIdx>
195 template<
typename TDim,
typename TIdx>
202 template<
typename TDim,
typename TIdx,
typename TWorkDiv,
typename TKernelFnObj,
typename... TArgs>
206 TWorkDiv
const& workDiv,
207 TKernelFnObj
const& kernelFnObj,
210 if(workDiv.m_blockThreadExtent.prod() !=
static_cast<TIdx
>(1u))
212 throw std::runtime_error(
213 "The given work division is not valid for a single thread Acc: "
220 std::forward<TArgs>(args)...);
225 template<
typename TDim,
typename TIdx>
232 template<
typename TDim,
typename TIdx>
238 template<
typename TDim,
typename TIdx>
244 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.