segmented_algorithms

The contents of this module can be included with the header hpx/modules/segmented_algorithms.hpp. These headers may be used by user-code but are not guaranteed stable (neither header location nor contents). You are using these at your own risk. If you wish to use non-public functionality from a module we strongly suggest only including the module header hpx/modules/segmented_algorithms.hpp, not the particular header in which the functionality you would like to use is defined. See Public API for a list of names that are part of the public HPX API.

namespace hpx
namespace segmented

Functions

template<typename ExPolicy, typename FwdIter1, typename FwdIter2, typename Op>
hpx::parallel::util::detail::algorithm_result_t<ExPolicy, FwdIter2> tag_invoke(hpx::adjacent_difference_t, ExPolicy &&policy, FwdIter1 first, FwdIter1 last, FwdIter2 dest, Op &&op)
template<typename InIter1, typename InIter2, typename Op>
InIter2 tag_invoke(hpx::adjacent_difference_t, InIter1 first, InIter1 last, InIter2 dest, Op &&op)
namespace hpx
namespace segmented

Functions

template<typename InIter, typename Pred>
InIter tag_invoke(hpx::adjacent_find_t, InIter first, InIter last, Pred &&pred = Pred())
template<typename ExPolicy, typename SegIter, typename Pred>
hpx::parallel::util::detail::algorithm_result<ExPolicy, SegIter>::type tag_invoke(hpx::adjacent_find_t, ExPolicy &&policy, SegIter first, SegIter last, Pred &&pred)
namespace hpx
namespace segmented

Functions

template<typename InIter, typename F>
bool tag_invoke(hpx::none_of_t, InIter first, InIter last, F &&f)
template<typename ExPolicy, typename SegIter, typename F>
hpx::parallel::util::detail::algorithm_result<ExPolicy, bool>::type tag_invoke(hpx::none_of_t, ExPolicy &&policy, SegIter first, SegIter last, F &&f)
template<typename InIter, typename F>
bool tag_invoke(hpx::any_of_t, InIter first, InIter last, F &&f)
template<typename ExPolicy, typename SegIter, typename F>
hpx::parallel::util::detail::algorithm_result<ExPolicy, bool>::type tag_invoke(hpx::any_of_t, ExPolicy &&policy, SegIter first, SegIter last, F &&f)
template<typename InIter, typename F>
bool tag_invoke(hpx::all_of_t, InIter first, InIter last, F &&f)
template<typename ExPolicy, typename SegIter, typename F>
hpx::parallel::util::detail::algorithm_result<ExPolicy, bool>::type tag_invoke(hpx::all_of_t, ExPolicy &&policy, SegIter first, SegIter last, F &&f)
namespace hpx
namespace segmented

Functions

template<typename InIter, typename T>
std::iterator_traits<InIter>::difference_type tag_invoke(hpx::count_t, InIter first, InIter last, T const &value)
template<typename ExPolicy, typename SegIter, typename T>
hpx::parallel::util::detail::algorithm_result<ExPolicy, typename std::iterator_traits<SegIter>::difference_type>::type tag_invoke(hpx::count_t, ExPolicy &&policy, SegIter first, SegIter last, T const &value)
template<typename InIter, typename F>
std::iterator_traits<InIter>::difference_type tag_invoke(hpx::count_if_t, InIter first, InIter last, F &&f)
template<typename ExPolicy, typename SegIter, typename F>
hpx::parallel::util::detail::algorithm_result<ExPolicy, typename std::iterator_traits<SegIter>::difference_type>::type tag_invoke(hpx::count_if_t, ExPolicy &&policy, SegIter first, SegIter last, F &&f)
namespace hpx
namespace segmented

Functions

template<typename InIter, typename OutIter, typename T, typename Op = std::plus<T>>
OutIter tag_invoke(hpx::exclusive_scan_t, InIter first, InIter last, OutIter dest, T init, Op &&op = Op())
template<typename ExPolicy, typename FwdIter1, typename FwdIter2, typename T, typename Op = std::plus<T>>
parallel::util::detail::algorithm_result<ExPolicy, FwdIter2>::type tag_invoke(hpx::exclusive_scan_t, ExPolicy &&policy, FwdIter1 first, FwdIter1 last, FwdIter2 dest, T init, Op &&op = Op())
namespace hpx
namespace segmented

Functions

template<typename SegIter, typename T>
SegIter tag_invoke(hpx::find_t, SegIter first, SegIter last, T const &val)
template<typename ExPolicy, typename SegIter, typename T>
parallel::util::detail::algorithm_result<ExPolicy, SegIter>::type tag_invoke(hpx::find_t, ExPolicy &&policy, SegIter first, SegIter last, T const &val)
template<typename FwdIter, typename F>
FwdIter tag_invoke(hpx::find_if_t, FwdIter first, FwdIter last, F &&f)
template<typename ExPolicy, typename FwdIter, typename F>
parallel::util::detail::algorithm_result<ExPolicy, FwdIter>::type tag_invoke(hpx::find_if_t, ExPolicy &&policy, FwdIter first, FwdIter last, F &&f)
template<typename FwdIter, typename F>
FwdIter tag_invoke(hpx::find_if_not_t, FwdIter first, FwdIter last, F &&f)
template<typename ExPolicy, typename FwdIter, typename F>
parallel::util::detail::algorithm_result<ExPolicy, FwdIter>::type tag_invoke(hpx::find_if_not_t, ExPolicy &&policy, FwdIter first, FwdIter last, F &&f)
namespace hpx
namespace segmented

Functions

template<typename InIter, typename F>
InIter tag_invoke(hpx::for_each_t, InIter first, InIter last, F &&f)
template<typename ExPolicy, typename SegIter, typename F>
hpx::parallel::util::detail::algorithm_result<ExPolicy, SegIter>::type tag_invoke(hpx::for_each_t, ExPolicy &&policy, SegIter first, SegIter last, F &&f)
template<typename InIter, typename Size, typename F>
InIter tag_invoke(hpx::for_each_n_t, InIter first, Size count, F &&f)
template<typename ExPolicy, typename SegIter, typename Size, typename F>
hpx::parallel::util::detail::algorithm_result<ExPolicy, SegIter>::type tag_invoke(hpx::for_each_n_t, ExPolicy &&policy, SegIter first, Size count, F &&f)
namespace hpx
namespace segmented

Functions

template<typename SegIter, typename F>
SegIter tag_invoke(hpx::generate_t, SegIter first, SegIter last, F &&f)
template<typename ExPolicy, typename SegIter, typename F>
parallel::util::detail::algorithm_result<ExPolicy, SegIter>::type tag_invoke(hpx::generate_t, ExPolicy &&policy, SegIter first, SegIter last, F &&f)
namespace hpx
namespace segmented

Functions

template<typename InIter, typename OutIter, typename Op = std::plus<typename std::iterator_traits<InIter>::value_type>>
OutIter tag_invoke(hpx::inclusive_scan_t, InIter first, InIter last, OutIter dest, Op &&op = Op())
template<typename ExPolicy, typename FwdIter1, typename FwdIter2, typename Op = std::plus<typename std::iterator_traits<FwdIter1>::value_type>>
parallel::util::detail::algorithm_result<ExPolicy, FwdIter2>::type tag_invoke(hpx::inclusive_scan_t, ExPolicy &&policy, FwdIter1 first, FwdIter1 last, FwdIter2 dest, Op &&op = Op())
template<typename InIter, typename OutIter, typename Op, typename T>
OutIter tag_invoke(hpx::inclusive_scan_t, InIter first, InIter last, OutIter dest, Op &&op, T &&init)
template<typename ExPolicy, typename FwdIter1, typename FwdIter2, typename Op, typename T>
parallel::util::detail::algorithm_result<ExPolicy, FwdIter2>::type tag_invoke(hpx::inclusive_scan_t, ExPolicy &&policy, FwdIter1 first, FwdIter1 last, FwdIter2 dest, Op &&op, T &&init)
namespace hpx
namespace parallel

Typedefs

template<typename T>
using minmax_element_result = hpx::parallel::util::min_max_result<T>
namespace segmented

Typedefs

template<typename T>
using minmax_element_result = hpx::parallel::util::min_max_result<T>

Functions

template<typename SegIter, typename F>
SegIter tag_dispatch(hpx::min_element_t, SegIter first, SegIter last, F &&f)
template<typename ExPolicy, typename SegIter, typename F>
hpx::parallel::util::detail::algorithm_result_t<ExPolicy, SegIter> tag_dispatch(hpx::min_element_t, ExPolicy &&policy, SegIter first, SegIter last, F &&f)
template<typename SegIter, typename F>
SegIter tag_dispatch(hpx::max_element_t, SegIter first, SegIter last, F &&f)
template<typename ExPolicy, typename SegIter, typename F>
hpx::parallel::util::detail::algorithm_result_t<ExPolicy, SegIter> tag_dispatch(hpx::max_element_t, ExPolicy &&policy, SegIter first, SegIter last, F &&f)
template<typename SegIter, typename F>
minmax_element_result<SegIter> tag_dispatch(hpx::minmax_element_t, SegIter first, SegIter last, F &&f)
template<typename ExPolicy, typename SegIter, typename F>
hpx::parallel::util::detail::algorithm_result_t<ExPolicy, minmax_element_result<SegIter>> tag_dispatch(hpx::minmax_element_t, ExPolicy &&policy, SegIter first, SegIter last, F &&f)
namespace hpx
namespace segmented

Functions

template<typename InIterB, typename InIterE, typename T, typename F>
T tag_invoke(hpx::reduce_t, InIterB first, InIterE last, T init, F &&f)
template<typename ExPolicy, typename InIterB, typename InIterE, typename T, typename F>
parallel::util::detail::algorithm_result<ExPolicy, T>::type tag_invoke(hpx::reduce_t, ExPolicy &&policy, InIterB first, InIterE last, T init, F &&f)
namespace hpx
namespace segmented

Functions

template<typename SegIter, typename OutIter, typename F>
hpx::parallel::util::in_out_result<SegIter, OutIter> tag_invoke(hpx::transform_t, SegIter first, SegIter last, OutIter dest, F &&f)
template<typename ExPolicy, typename SegIter, typename OutIter, typename F>
hpx::parallel::util::detail::algorithm_result<ExPolicy, hpx::parallel::util::in_out_result<SegIter, OutIter>>::type tag_invoke(hpx::transform_t, ExPolicy &&policy, SegIter first, SegIter last, OutIter dest, F &&f)
template<typename InIter1, typename InIter2, typename OutIter, typename F>
hpx::parallel::util::in_in_out_result<InIter1, InIter2, OutIter> tag_invoke(hpx::transform_t, InIter1 first1, InIter1 last1, InIter2 first2, OutIter dest, F &&f)
template<typename ExPolicy, typename InIter1, typename InIter2, typename OutIter, typename F>
hpx::parallel::util::detail::algorithm_result<ExPolicy, hpx::parallel::util::in_in_out_result<InIter1, InIter2, OutIter>>::type tag_invoke(hpx::transform_t, ExPolicy &&policy, InIter1 first1, InIter1 last1, InIter2 first2, OutIter dest, F &&f)
template<typename InIter1, typename InIter2, typename OutIter, typename F>
hpx::parallel::util::in_in_out_result<InIter1, InIter2, OutIter> tag_invoke(hpx::transform_t, InIter1 first1, InIter1 last1, InIter2 first2, InIter2 last2, OutIter dest, F &&f)
template<typename ExPolicy, typename InIter1, typename InIter2, typename OutIter, typename F>
hpx::parallel::util::detail::algorithm_result<ExPolicy, hpx::parallel::util::in_in_out_result<InIter1, InIter2, OutIter>>::type tag_invoke(hpx::transform_t, ExPolicy &&policy, InIter1 first1, InIter1 last1, InIter2 first2, InIter2 last2, OutIter dest, F &&f)
namespace hpx
namespace segmented

Functions

template<typename InIter, typename OutIter, typename T, typename Op, typename Conv>
OutIter tag_invoke(hpx::transform_exclusive_scan_t, InIter first, InIter last, OutIter dest, T init, Op &&op, Conv &&conv)
template<typename ExPolicy, typename FwdIter1, typename FwdIter2, typename T, typename Op, typename Conv>
parallel::util::detail::algorithm_result<ExPolicy, FwdIter2>::type tag_invoke(hpx::transform_exclusive_scan_t, ExPolicy &&policy, FwdIter1 first, FwdIter1 last, FwdIter2 dest, T init, Op &&op, Conv &&conv)
namespace hpx
namespace segmented

Functions

template<typename InIter, typename OutIter, typename Op, typename Conv>
OutIter tag_invoke(hpx::transform_inclusive_scan_t, InIter first, InIter last, OutIter dest, Op &&op, Conv &&conv)
template<typename ExPolicy, typename FwdIter1, typename FwdIter2, typename Op, typename Conv>
parallel::util::detail::algorithm_result<ExPolicy, FwdIter2>::type tag_invoke(hpx::transform_inclusive_scan_t, ExPolicy &&policy, FwdIter1 first, FwdIter1 last, FwdIter2 dest, Op &&op, Conv &&conv)
template<typename InIter, typename OutIter, typename T, typename Op, typename Conv>
OutIter tag_invoke(hpx::transform_inclusive_scan_t, InIter first, InIter last, OutIter dest, Op &&op, Conv &&conv, T init)
template<typename ExPolicy, typename FwdIter1, typename FwdIter2, typename T, typename Op, typename Conv>
parallel::util::detail::algorithm_result<ExPolicy, FwdIter2>::type tag_invoke(hpx::transform_inclusive_scan_t, ExPolicy &&policy, FwdIter1 first, FwdIter1 last, FwdIter2 dest, Op &&op, Conv &&conv, T init)
namespace hpx
namespace segmented

Functions

template<typename SegIter, typename T, typename Reduce, typename Convert>
std::decay<T> tag_invoke(hpx::transform_reduce_t, SegIter first, SegIter last, T &&init, Reduce &&red_op, Convert &&conv_op)
template<typename ExPolicy, typename SegIter, typename T, typename Reduce, typename Convert>
parallel::util::detail::algorithm_result<ExPolicy, typename std::decay<T>::type>::type tag_invoke(hpx::transform_reduce_t, ExPolicy &&policy, SegIter first, SegIter last, T &&init, Reduce &&red_op, Convert &&conv_op)
template<typename FwdIter1, typename FwdIter2, typename T, typename Reduce, typename Convert>
T tag_invoke(hpx::transform_reduce_t, FwdIter1 first1, FwdIter1 last1, FwdIter2 first2, T init, Reduce &&red_op, Convert &&conv_op)
template<typename ExPolicy, typename FwdIter1, typename FwdIter2, typename T, typename Reduce, typename Convert>
parallel::util::detail::algorithm_result<ExPolicy, T>::type tag_invoke(hpx::transform_reduce_t, ExPolicy &&policy, FwdIter1 first1, FwdIter1 last1, FwdIter2 first2, T init, Reduce &&red_op, Convert &&conv_op)
namespace hpx
namespace util
namespace functional
struct segmented_iterator_begin
template<typename Iterator>
struct apply

Public Types

template<>
using type = typename traits::segmented_iterator_traits<Iterator>::local_iterator

Public Functions

template<typename SegIter>
type operator()(SegIter iter) const
struct segmented_iterator_end
template<typename Iterator>
struct apply

Public Types

template<>
using type = typename traits::segmented_iterator_traits<Iterator>::local_iterator

Public Functions

template<typename SegIter>
type operator()(SegIter iter) const
struct segmented_iterator_local
template<typename Iterator>
struct apply

Public Types

template<>
using type = typename traits::segmented_iterator_traits<Iterator>::local_iterator

Public Functions

template<typename Iter>
type operator()(Iter iter) const
struct segmented_iterator_local_begin
template<typename Iterator>
struct apply

Public Types

template<>
using type = typename traits::segmented_iterator_traits<Iterator>::local_raw_iterator

Public Functions

template<typename LocalSegIter>
type operator()(LocalSegIter iter) const
struct segmented_iterator_local_end
template<typename Iterator>
struct apply

Public Types

template<>
using type = typename traits::segmented_iterator_traits<Iterator>::local_raw_iterator

Public Functions

template<typename LocalSegIter>
type operator()(LocalSegIter iter) const
struct segmented_iterator_segment
template<typename Iterator>
struct apply

Public Types

template<>
using type = typename traits::segmented_iterator_traits<Iterator>::segment_iterator

Public Functions

template<typename Iter>
type operator()(Iter iter) const
template<typename ...Ts>
struct segmented_iterator_traits<util::zip_iterator<Ts...>, typename std::enable_if<util::all_of<typename segmented_iterator_traits<Ts>::is_segmented_iterator...>::value>::type>

Public Types

typedef std::true_type is_segmented_iterator
typedef util::zip_iterator<Ts...> iterator
typedef util::zip_iterator<typename segmented_iterator_traits<Ts>::segment_iterator...> segment_iterator
typedef util::zip_iterator<typename segmented_iterator_traits<Ts>::local_segment_iterator...> local_segment_iterator
typedef util::zip_iterator<typename segmented_iterator_traits<Ts>::local_iterator...> local_iterator
typedef util::zip_iterator<typename segmented_iterator_traits<Ts>::local_raw_iterator...> local_raw_iterator

Public Static Functions

static segment_iterator segment(iterator iter)
static local_iterator local(iterator iter)
static local_iterator begin(segment_iterator const &iter)
static local_iterator end(segment_iterator const &iter)
static local_raw_iterator begin(local_segment_iterator const &seg_iter)
static local_raw_iterator end(local_segment_iterator const &seg_iter)
static naming::id_type get_id(segment_iterator const &iter)
template<typename ...Ts>
struct segmented_local_iterator_traits<util::zip_iterator<Ts...>, typename std::enable_if<util::all_of<typename segmented_local_iterator_traits<Ts>::is_segmented_local_iterator...>::value>::type>

Public Types

typedef std::true_type is_segmented_local_iterator
typedef util::zip_iterator<typename segmented_local_iterator_traits<Ts>::iterator...> iterator
typedef util::zip_iterator<Ts...> local_iterator
typedef util::zip_iterator<typename segmented_local_iterator_traits<Ts>::local_raw_iterator...> local_raw_iterator

Public Static Functions

static local_raw_iterator local(local_iterator const &iter)
static local_iterator remote(local_raw_iterator const &iter)
namespace hpx
namespace traits
template<typename ...Ts>
struct segmented_iterator_traits<util::zip_iterator<Ts...>, typename std::enable_if<util::all_of<typename segmented_iterator_traits<Ts>::is_segmented_iterator...>::value>::type>

Public Types

typedef std::true_type is_segmented_iterator
typedef util::zip_iterator<Ts...> iterator
typedef util::zip_iterator<typename segmented_iterator_traits<Ts>::segment_iterator...> segment_iterator
typedef util::zip_iterator<typename segmented_iterator_traits<Ts>::local_segment_iterator...> local_segment_iterator
typedef util::zip_iterator<typename segmented_iterator_traits<Ts>::local_iterator...> local_iterator
typedef util::zip_iterator<typename segmented_iterator_traits<Ts>::local_raw_iterator...> local_raw_iterator

Public Static Functions

static segment_iterator segment(iterator iter)
static local_iterator local(iterator iter)
static local_iterator begin(segment_iterator const &iter)
static local_iterator end(segment_iterator const &iter)
static local_raw_iterator begin(local_segment_iterator const &seg_iter)
static local_raw_iterator end(local_segment_iterator const &seg_iter)
static naming::id_type get_id(segment_iterator const &iter)
template<typename ...Ts>
struct segmented_local_iterator_traits<util::zip_iterator<Ts...>, typename std::enable_if<util::all_of<typename segmented_local_iterator_traits<Ts>::is_segmented_local_iterator...>::value>::type>

Public Types

typedef std::true_type is_segmented_local_iterator
typedef util::zip_iterator<typename segmented_local_iterator_traits<Ts>::iterator...> iterator
typedef util::zip_iterator<Ts...> local_iterator
typedef util::zip_iterator<typename segmented_local_iterator_traits<Ts>::local_raw_iterator...> local_raw_iterator

Public Static Functions

static local_raw_iterator local(local_iterator const &iter)
static local_iterator remote(local_raw_iterator const &iter)
namespace functional
struct get_raw_iterator
template<typename Iterator>
struct apply

Public Functions

template<typename SegIter>
segmented_iterator_traits<Iterator>::local_raw_iterator operator()(SegIter iter) const
struct get_remote_iterator
template<typename Iterator>
struct apply

Public Functions

template<typename SegIter>
segmented_iterator_traits<Iterator>::local_iterator operator()(SegIter iter) const