55 template<concepts::Acc TAcc, std::
size_t Dim>
96 , first_{
std::min(first, extent)}
129 return (first_ == other.first_);
134 return not(*
this == other);
187 template<concepts::Acc TAcc,
typename... TArgs>
201 template<std::size_t
Dim, concepts::Acc TAcc,
typename... TArgs>
215 template<concepts::Acc TAcc,
typename... TArgs>
223 template<concepts::Acc TAcc,
typename... TArgs>
231 template<concepts::Acc TAcc,
typename... TArgs>
248 template<concepts::Acc TAcc, std::
size_t Dim>
250 class IndependentGroupElementsAlong
255 ALPAKA_FN_ACC inline IndependentGroupElementsAlong(TAcc
const& acc)
263 ALPAKA_FN_ACC inline IndependentGroupElementsAlong(TAcc
const& acc,
Idx extent)
279 class const_iterator;
280 using iterator = const_iterator;
284 return const_iterator(elements_, stride_, extent_, thread_);
289 return const_iterator(elements_, stride_, extent_, extent_);
294 friend class IndependentGroupElementsAlong;
297 : elements_{elements}
301 stride_{stride - elements}
303 , index_{
std::min(first, extent)}
318 if(indexElem_ >= elements_)
323 if(index_ >= extent_)
339 return (*(*
this) == *other);
344 return not(*
this == other);
369 template<concepts::Acc TAcc,
typename... TArgs>
374 return detail::IndependentGroupElementsAlong<TAcc, 0>(acc,
static_cast<Idx>(args)...);
383 template<std::size_t
Dim, concepts::Acc TAcc,
typename... TArgs>
388 return detail::IndependentGroupElementsAlong<TAcc, Dim>(acc,
static_cast<Idx>(args)...);
397 template<concepts::Acc TAcc,
typename... TArgs>
402 return detail::IndependentGroupElementsAlong<TAcc, alpaka::Dim<TAcc>::value - 1>(
404 static_cast<Idx>(args)...);
407 template<concepts::Acc TAcc,
typename... TArgs>
412 return detail::IndependentGroupElementsAlong<TAcc, alpaka::Dim<TAcc>::value - 2>(
414 static_cast<Idx>(args)...);
417 template<concepts::Acc TAcc,
typename... TArgs>
422 return detail::IndependentGroupElementsAlong<TAcc, alpaka::Dim<TAcc>::value - 3>(
424 static_cast<Idx>(args)...);
ALPAKA_FN_ACC bool operator!=(const_iterator const &other) const
ALPAKA_FN_ACC const_iterator & operator++()
ALPAKA_FN_ACC bool operator==(const_iterator const &other) const
ALPAKA_FN_ACC const_iterator operator++(int)
ALPAKA_FN_ACC Idx operator*() const
ALPAKA_FN_ACC bool operator==(const_iterator const &other) const
ALPAKA_FN_ACC const_iterator & operator++()
ALPAKA_FN_ACC Idx operator*() const
ALPAKA_FN_ACC const_iterator operator++(int)
ALPAKA_FN_ACC bool operator!=(const_iterator const &other) const
ALPAKA_FN_ACC const_iterator begin() const
ALPAKA_FN_ACC const_iterator end() const
ALPAKA_FN_ACC IndependentGroupsAlong(TAcc const &acc)
ALPAKA_FN_ACC IndependentGroupsAlong(TAcc const &acc, Idx groups)
#define ALPAKA_FN_ACC
All functions that can be used on an accelerator have to be attributed with ALPAKA_FN_ACC or ALPAKA_F...
ALPAKA_FN_HOST auto end(TView &view) -> Iterator< TView >
ALPAKA_FN_HOST auto begin(TView &view) -> Iterator< TView >
The alpaka accelerator library.
typename trait::IdxType< T >::type Idx
ALPAKA_NO_HOST_ACC_WARNING ALPAKA_FN_HOST_ACC auto getWorkDiv(TWorkDiv const &workDiv) -> Vec< Dim< TWorkDiv >, Idx< TWorkDiv > >
Get the extent requested.
ALPAKA_NO_HOST_ACC_WARNING ALPAKA_FN_HOST_ACC auto getIdx(TIdx const &idx, TWorkDiv const &workDiv) -> Vec< Dim< TWorkDiv >, Idx< TIdx > >
Get the indices requested.
ALPAKA_FN_ACC auto independentGroupsAlongY(TAcc const &acc, TArgs... args)
ALPAKA_FN_ACC auto independentGroupElementsAlongZ(TAcc const &acc, TArgs... args)
ALPAKA_FN_ACC auto independentGroupElementsAlongY(TAcc const &acc, TArgs... args)
ALPAKA_FN_ACC auto independentGroups(TAcc const &acc, TArgs... args)
ALPAKA_FN_ACC auto independentGroupElementsAlongX(TAcc const &acc, TArgs... args)
ALPAKA_FN_ACC auto independentGroupElementsAlong(TAcc const &acc, TArgs... args)
ALPAKA_FN_ACC auto independentGroupElements(TAcc const &acc, TArgs... args)
ALPAKA_FN_ACC auto independentGroupsAlongX(TAcc const &acc, TArgs... args)
ALPAKA_FN_ACC auto independentGroupsAlong(TAcc const &acc, TArgs... args)
ALPAKA_FN_ACC auto independentGroupsAlongZ(TAcc const &acc, TArgs... args)
typename trait::DimType< T >::type Dim
The dimension type trait alias template to remove the ::type.