hpx/parallel/util/prefetching.hpp

See Public API for a list of names and headers that are part of the public HPX API.

namespace hpx
namespace parallel
namespace util

Functions

template<typename Itr, typename ...Ts>
prefetching::prefetcher_context<Itr, Ts const...> make_prefetcher_context(Itr base_begin, Itr base_end, std::size_t p_factor, Ts const&... rngs)
namespace prefetching

Functions

template<typename ...Ts, std::size_t... Is>
void prefetch_containers(hpx::tuple<Ts...> const &t, hpx::util::index_pack<Is...>, std::size_t idx)
template<typename ExPolicy, typename Itr, typename ...Ts, typename F>
constexpr prefetching_iterator<Itr, Ts...> tag_invoke(hpx::parallel::util::loop_n_t<ExPolicy>, prefetching_iterator<Itr, Ts...> it, std::size_t count, F &&f)
template<typename ExPolicy, typename Itr, typename ...Ts, typename F>
constexpr prefetching_iterator<Itr, Ts...> tag_invoke(hpx::parallel::util::loop_n_ind_t<ExPolicy>, prefetching_iterator<Itr, Ts...> it, std::size_t count, F &&f)
struct loop_n_helper

Public Static Functions

template<typename Itr, typename ...Ts, typename F, typename Pred>
static constexpr prefetching_iterator<Itr, Ts...> call(prefetching_iterator<Itr, Ts...> it, std::size_t count, F &&f, Pred)
template<typename Itr, typename ...Ts, typename CancelToken, typename F, typename Pred>
static constexpr prefetching_iterator<Itr, Ts...> call(prefetching_iterator<Itr, Ts...> it, std::size_t count, CancelToken &tok, F &&f, Pred)
struct loop_n_ind_helper

Public Static Functions

template<typename Itr, typename ...Ts, typename F, typename Pred>
static constexpr prefetching_iterator<Itr, Ts...> call(prefetching_iterator<Itr, Ts...> it, std::size_t count, F &&f, Pred)
template<typename Itr, typename ...Ts, typename CancelToken, typename F, typename Pred>
static constexpr prefetching_iterator<Itr, Ts...> call(prefetching_iterator<Itr, Ts...> it, std::size_t count, CancelToken &tok, F &&f, Pred)
template<typename Itr, typename ...Ts>
struct prefetcher_context

Public Functions

prefetcher_context(Itr begin, Itr end, ranges_type const &rngs, std::size_t p_factor = 1)
prefetching_iterator<Itr, Ts...> begin()
prefetching_iterator<Itr, Ts...> end()

Private Types

typedef hpx::tuple<std::reference_wrapper<Ts>...> ranges_type

Private Members

Itr it_begin_
Itr it_end_
ranges_type rngs_
std::size_t chunk_size_
std::size_t range_size_

Private Static Attributes

constexpr std::size_t sizeof_first_value_type = sizeof(typename hpx::tuple_element<0, ranges_type>::type::type)
template<typename Itr, typename ...Ts>
class prefetching_iterator

Public Types

template<>
using base_iterator = Itr
template<>
using iterator_category = std::random_access_iterator_tag
template<>
using value_type = typename std::iterator_traits::value_type
template<>
using difference_type = std::ptrdiff_t
template<>
using pointer = value_type*
template<>
using reference = value_type&

Public Functions

prefetching_iterator(std::size_t idx, base_iterator base, std::size_t chunk_size, std::size_t range_size, ranges_type const &rngs)
ranges_type const &ranges() const
Itr base() const
std::size_t chunk_size() const
std::size_t range_size() const
std::size_t index() const
prefetching_iterator &operator+=(difference_type rhs)
prefetching_iterator &operator-=(difference_type rhs)
prefetching_iterator &operator++()
prefetching_iterator &operator--()
prefetching_iterator operator++(int)
prefetching_iterator operator--(int)
difference_type operator-(const prefetching_iterator &rhs) const
bool operator==(const prefetching_iterator &rhs) const
bool operator!=(const prefetching_iterator &rhs) const
bool operator>(const prefetching_iterator &rhs) const
bool operator<(const prefetching_iterator &rhs) const
bool operator>=(const prefetching_iterator &rhs) const
bool operator<=(const prefetching_iterator &rhs) const
std::size_t &operator[](std::size_t)
std::size_t operator*() const

Private Types

template<>
using ranges_type = hpx::tuple<std::reference_wrapper<Ts>...>

Private Members

ranges_type rngs_
base_iterator base_
std::size_t chunk_size_
std::size_t range_size_
std::size_t idx_

Friends

prefetching_iterator operator+(prefetching_iterator const &lhs, difference_type rhs)
prefetching_iterator operator-(prefetching_iterator const &lhs, difference_type rhs)