33class ARCCORE_COMMON_EXPORT StridedLoopRangesBase
37 constexpr StridedLoopRangesBase(
Int32 nb_stride,
Int64 nb_orig_element)
38 : m_stride_value((nb_orig_element + (nb_stride - 1)) / nb_stride)
39 , m_nb_original_element(nb_orig_element)
40 , m_nb_stride(nb_stride)
43 constexpr StridedLoopRangesBase(
Int64 nb_orig_element)
44 : m_stride_value(nb_orig_element)
45 , m_nb_original_element(nb_orig_element)
52 constexpr Int32 nbStride()
const {
return m_nb_stride; }
53 constexpr Int64 nbOriginalElement()
const {
return m_nb_original_element; }
54 constexpr Int64 strideValue()
const {
return m_stride_value; }
56 void setNbStride(
Int32 nb_stride) { _setNbStride(nb_stride); }
61 Int64 m_stride_value = 0;
63 Int64 m_nb_original_element = 0;
65 Int32 m_nb_stride = 0;
69 void _setNbStride(
Int32 nb_stride)
71 m_nb_stride = nb_stride;
72 m_stride_value = (m_nb_original_element + (nb_stride - 1)) / nb_stride;
82class StridedLoopRanges
83:
public StridedLoopRangesBase
87 using LoopBoundType = LoopBoundType_;
91 StridedLoopRanges(
Int32 nb_grid_stride,
const LoopBoundType& orig_loop)
92 : StridedLoopRangesBase(nb_grid_stride, orig_loop.nbElement())
93 , m_orig_loop(orig_loop)
96 StridedLoopRanges(
const LoopBoundType& orig_loop)
97 : StridedLoopRangesBase(orig_loop.nbElement())
98 , m_orig_loop(orig_loop)
101 constexpr const LoopBoundType& originalLoop()
const {
return m_orig_loop; }
105 LoopBoundType m_orig_loop;