hpx/resiliency/replay_executor.hpp#

Defined in header hpx/resiliency/replay_executor.hpp.

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

template<typename BaseExecutor, typename Validator>
struct is_two_way_executor<hpx::resiliency::experimental::replay_executor<BaseExecutor, Validator>> : public true_type#
template<typename BaseExecutor, typename Validator>
struct is_bulk_two_way_executor<hpx::resiliency::experimental::replay_executor<BaseExecutor, Validator>> : public true_type#
namespace hpx
namespace execution
namespace experimental
template<typename BaseExecutor, typename Validator> replay_executor< BaseExecutor, Validator > > : public true_type
template<typename BaseExecutor, typename Validator> replay_executor< BaseExecutor, Validator > > : public true_type
namespace resiliency#
namespace experimental#

Functions

template<typename Tag, typename BaseExecutor, typename Validate, typename Property>
auto tag_invoke(Tag tag, replay_executor<BaseExecutor, Validate> const &exec, Property &&prop) -> decltype(replay_executor<BaseExecutor, Validate>(std::declval<Tag>()(std::declval<BaseExecutor>(), std::declval<Property>()), std::declval<std::size_t>(), std::declval<Validate>()))#
template<typename Tag, typename BaseExecutor, typename Validate>
auto tag_invoke(Tag tag, replay_executor<BaseExecutor, Validate> const &exec) -> decltype(std::declval<Tag>()(std::declval<BaseExecutor>()))#
template<typename BaseExecutor, typename Validate>
replay_executor<BaseExecutor, std::decay_t<Validate>> make_replay_executor(BaseExecutor &exec, std::size_t n, Validate &&validate)#
template<typename BaseExecutor>
replay_executor<BaseExecutor, detail::replay_validator> make_replay_executor(BaseExecutor &exec, std::size_t n)#
template<typename BaseExecutor, typename Validate>
class replay_executor#

Public Types

using execution_category = hpx::traits::executor_execution_category_t<BaseExecutor>#
using executor_parameters_type = hpx::traits::executor_parameters_type_t<BaseExecutor>#
template<typename Result>
using future_type = hpx::traits::executor_future_t<BaseExecutor, Result>#

Public Functions

template<typename BaseExecutor_, typename F>
inline explicit replay_executor(BaseExecutor_ &&exec, std::size_t n, F &&f)#
inline bool operator==(replay_executor const &rhs) const noexcept#
inline bool operator!=(replay_executor const &rhs) const noexcept#
inline constexpr replay_executor const &context() const noexcept#
inline BaseExecutor const &get_executor() const#
inline std::size_t get_replay_count() const#
inline Validate const &get_validator() const#

Public Static Attributes

static constexpr int num_spread = 4#
static constexpr int num_tasks = 128#

Private Functions

template<typename F, typename ...Ts>
inline decltype(auto) friend tag_invoke(hpx::parallel::execution::async_execute_t, replay_executor const &exec, F &&f, Ts&&... ts)#
template<typename F, typename S, typename ...Ts>
inline decltype(auto) friend tag_invoke(hpx::parallel::execution::bulk_async_execute_t, replay_executor const &exec, F &&f, S const &shape, Ts&&... ts)#

Private Members

BaseExecutor exec_#
std::size_t replay_count_#
Validate validator_#