35 using key_type = int32_t;
36 using mapped_type = int32_t;
37 using value_type = std::pair<key_type, mapped_type>;
38 using size_type = std::size_t;
39 using iterator = mapped_type*;
40 using const_iterator =
const mapped_type*;
54 requires std::same_as<TDev, alpaka::DevCpu>;
67 template <concepts::queue TQueue>
94 const_iterator
end()
const;
97 const_iterator
cend()
const;
102 iterator find(key_type key);
103 const_iterator find(key_type key)
const;
109 size_type
count(key_type key)
const;
148 std::pair<const_iterator, const_iterator>
equal_range(key_type key)
const;
151 device_buffer<TDev, mapped_type[]> m_indexes;
152 device_buffer<TDev, key_type[]> m_offsets;
153 AssociationMapView m_view;
156 ALPAKA_FN_HOST
void initialize(size_type nelements, size_type nbins)
157 requires std::same_as<TDev, alpaka::DevCpu>;
159 template <concepts::queue TQueue>
160 ALPAKA_FN_HOST
void initialize(size_type nelements, size_type nbins, TQueue& queue);
162 ALPAKA_FN_HOST
void reset(size_type nelements, size_type nbins)
163 requires std::same_as<TDev, alpaka::DevCpu>;
165 template <concepts::queue TQueue>
166 ALPAKA_FN_HOST
void reset(TQueue& queue, size_type nelements, size_type nbins);
168 template <concepts::accelerator TAcc,
typename TFunc, concepts::queue TQueue>
169 ALPAKA_FN_HOST
void fill(size_type
size, TFunc func, TQueue& queue);
171 ALPAKA_FN_HOST
void fill(size_type
size, std::span<key_type> associations)
172 requires std::same_as<TDev, alpaka::DevCpu>;
174 template <concepts::accelerator TAcc, concepts::queue TQueue>
175 ALPAKA_FN_HOST
void fill(size_type
size, std::span<key_type> associations, TQueue& queue);
177 const AssociationMapView& view()
const;
178 AssociationMapView& view();
180 ALPAKA_FN_HOST
const auto& indexes()
const;
181 ALPAKA_FN_HOST
auto& indexes();
183 ALPAKA_FN_ACC Span<int32_t> indexes(size_type bin_id);
184 ALPAKA_FN_HOST device_view<TDev, int32_t[]> indexes(
const TDev& dev, size_type bin_id);
185 ALPAKA_FN_ACC Span<int32_t> operator[](size_type bin_id);
187 ALPAKA_FN_HOST
const device_buffer<TDev, int32_t[]>& offsets()
const;
188 ALPAKA_FN_HOST device_buffer<TDev, int32_t[]>& offsets();
190 ALPAKA_FN_ACC int32_t offsets(size_type bin_id)
const;
192 template <concepts::device _TDev>
193 friend class Followers;
195 template <u
int8_t Ndim, concepts::device _TDev>
196 friend class TilesAlpaka;
198 template <concepts::queue _TQueue>
199 friend auto clue::internal::make_associator(_TQueue&, std::span<int32_t>, int32_t);
200 friend auto clue::internal::make_associator(std::span<int32_t>, int32_t)