16 template<
bool T_multiDimensional = true>
24 typename T_ThreadIdxOrOrigin,
25 typename T_NumThreadsOrUnit,
26 typename T_MultiDimensional = MultiDimensional<true>>
37 T_ThreadIdxOrOrigin threadIdxOrOrigin,
38 T_NumThreadsOrUnit numThreadsOrUnit,
40 : m_threadIdxOrOrigin{threadIdxOrOrigin}
41 , m_numThreadsOrUnit{numThreadsOrUnit}
45 constexpr auto size(
auto const& acc)
const
47 return getThreadSpace(acc).size();
50 constexpr auto idx(
auto const& acc)
const
52 return getThreadSpace(acc).idx();
56 template<
typename T_ThreadGroup,
typename T_ThreadIdxOrOriginRange>
63 constexpr auto getThreadSpace([[maybe_unused]]
auto const& acc)
const
66 if constexpr(T_MultiDimensional::value ==
false)
69 Vec{m_numThreadsOrUnit.product()}};
71 return ThreadSpace{m_threadIdxOrOrigin, m_numThreadsOrUnit};
78 constexpr auto getThreadSpace(
auto const& acc)
const
82 = internalCompute::GetIdxWithin::Op<
ALPAKA_TYPEOF(acc), T_ThreadIdxOrOrigin, T_NumThreadsOrUnit>{}(
87 = internalCompute::GetExtentsOf::Op<
ALPAKA_TYPEOF(acc), T_ThreadIdxOrOrigin, T_NumThreadsOrUnit>{}(
92 if constexpr(T_MultiDimensional::value ==
false)
95 return ThreadSpace{
idx, extent};
99 T_ThreadIdxOrOrigin m_threadIdxOrOrigin;
100 T_NumThreadsOrUnit m_numThreadsOrUnit;
#define ALPAKA_TYPEOF(...)
Get the type of instance.
constexpr auto blocksInGrid
constexpr auto threadsInGrid
constexpr auto linearWarpsInGrid
Representation of all warps in the grid as a linearized worker group.
constexpr auto linearThreadsInGrid
constexpr auto linearBlocksInGrid
constexpr auto allThreads
Represent the identity of the executor thread.
constexpr auto linearThreadsInBlock
constexpr auto linearWarpsInBlock
Representation of all warps in a thread block as a linearized worker group.
constexpr auto linearThreadsInWarp
Representation of all threads in a warp as a linearized worker group.
constexpr auto threadsInBlock
functionality which is usable on the accelerator compute device from within a kernel.
constexpr bool isOrigin_v
constexpr auto linearized
constexpr T_IntegralType linearize(Vec< T_IntegralType, T_dim - 1u, T_Storage > const &dim, Vec< T_IntegralType, T_dim, T_OtherStorage > const &idx)
Give the linear index of an N-dimensional index within an N-dimensional index space.
ALPAKA_FN_HOST_ACC Vec(T_1, T_Args...) -> Vec< T_1, uint32_t(sizeof...(T_Args)+1u), ArrayStorage< T_1, uint32_t(sizeof...(T_Args)+1u)> >
constexpr bool isVector_v
constexpr WorkerGroup(T_ThreadIdxOrOrigin threadIdxOrOrigin, T_NumThreadsOrUnit numThreadsOrUnit, T_MultiDimensional=MultiDimensional< true >{})
WorkerGroup constructor.
constexpr auto size(auto const &acc) const
constexpr auto idx(auto const &acc) const