98 , first_{
std::min(first, extent)}
131 return (first_ == other.first_);
136 return not(*
this == other);
265 class IndependentGroupElementsAlong
270 ALPAKA_FN_ACC inline IndependentGroupElementsAlong(TAcc
const& acc)
278 ALPAKA_FN_ACC inline IndependentGroupElementsAlong(TAcc
const& acc, Idx extent)
286 ALPAKA_FN_ACC inline IndependentGroupElementsAlong(TAcc
const& acc, Idx first, Idx extent)
294 class const_iterator;
295 using iterator = const_iterator;
299 return const_iterator(elements_, stride_, extent_, thread_);
304 return const_iterator(elements_, stride_, extent_, extent_);
312 : elements_{elements}
316 stride_{stride - elements}
318 , index_{
std::min(first, extent)}
333 if(indexElem_ >= elements_)
338 if(index_ >= extent_)
354 return (*(*
this) == *other);
359 return not(*
this == other);
391 return detail::IndependentGroupElementsAlong<TAcc, 0>(acc,
static_cast<Idx>(args)...);
408 return detail::IndependentGroupElementsAlong<TAcc, Dim>(acc,
static_cast<Idx>(args)...);
424 return detail::IndependentGroupElementsAlong<TAcc, alpaka::Dim<TAcc>::value - 1>(
426 static_cast<Idx>(args)...);
436 return detail::IndependentGroupElementsAlong<TAcc, alpaka::Dim<TAcc>::value - 2>(
438 static_cast<Idx>(args)...);
448 return detail::IndependentGroupElementsAlong<TAcc, alpaka::Dim<TAcc>::value - 3>(
450 static_cast<Idx>(args)...);
ALPAKA_FN_ACC const_iterator & operator++()
friend class IndependentGroupElementsAlong
ALPAKA_FN_ACC bool operator!=(const_iterator const &other) const
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 const_iterator operator++(int)
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 Idx operator*() const
ALPAKA_FN_ACC IndependentGroupsAlong(TAcc const &acc)
ALPAKA_FN_ACC const_iterator begin() const
ALPAKA_FN_ACC IndependentGroupsAlong(TAcc const &acc, Idx groups)
ALPAKA_FN_ACC const_iterator end() const
#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 independentGroupsAlongZ(TAcc const &acc, TArgs... args)
ALPAKA_FN_ACC auto independentGroups(TAcc const &acc, TArgs... args)
ALPAKA_FN_ACC auto independentGroupElements(TAcc const &acc, TArgs... args)
ALPAKA_FN_ACC auto independentGroupElementsAlongX(TAcc const &acc, TArgs... args)
ALPAKA_FN_ACC auto independentGroupsAlongX(TAcc const &acc, TArgs... args)
ALPAKA_FN_ACC auto independentGroupElementsAlong(TAcc const &acc, TArgs... args)
ALPAKA_FN_ACC auto independentGroupElementsAlongY(TAcc const &acc, TArgs... args)
ALPAKA_FN_ACC auto independentGroupsAlongY(TAcc const &acc, TArgs... args)
ALPAKA_FN_ACC auto independentGroupsAlong(TAcc const &acc, TArgs... args)
ALPAKA_FN_ACC auto independentGroupElementsAlongZ(TAcc const &acc, TArgs... args)
typename trait::DimType< T >::type Dim
The dimension type trait alias template to remove the ::type.