hpx/executors/parallel_executor.hpp#
Defined in header hpx/executors/parallel_executor.hpp.
See Public API for a list of names and headers that are part of the public HPX API.
-
namespace hpx
-
namespace execution
Typedefs
-
using parallel_executor = parallel_policy_executor<hpx::launch>#
-
using parallel_executor_spawn_hierarchically = parallel_policy_executor<hpx::launch, true>#
Functions
-
template<typename Policy>
constexpr parallel_policy_executor<Policy, true> to_hierarchical_spawning(parallel_policy_executor<Policy> &exec) noexcept#
-
template<typename Policy>
constexpr parallel_policy_executor<Policy, true> to_hierarchical_spawning(parallel_policy_executor<Policy> &&exec) noexcept#
-
template<typename Policy>
constexpr parallel_policy_executor<Policy, true> to_hierarchical_spawning(parallel_policy_executor<Policy> const &exec) noexcept#
-
template<typename Policy>
constexpr parallel_policy_executor<Policy> to_non_hierarchical_spawning(parallel_policy_executor<Policy, true> &exec) noexcept#
-
template<typename Policy>
constexpr parallel_policy_executor<Policy> to_non_hierarchical_spawning(parallel_policy_executor<Policy, true> &&exec) noexcept#
-
template<typename Policy>
constexpr parallel_policy_executor<Policy> to_non_hierarchical_spawning(parallel_policy_executor<Policy, true> const &exec) noexcept#
-
template<typename Policy, bool HierarchicalSpawning = false>
struct parallel_policy_executor : public hpx::execution::parallel_policy_executor_base<Policy># Public Types
-
using base_type = parallel_policy_executor_base<Policy>#
Public Functions
-
inline explicit constexpr parallel_policy_executor(threads::thread_priority priority, threads::thread_stacksize stacksize = threads::thread_stacksize::default_, threads::thread_schedule_hint schedulehint = {}, Policy l = parallel::execution::detail::get_default_policy<Policy>::call()) noexcept#
-
inline explicit constexpr parallel_policy_executor(threads::thread_stacksize stacksize, threads::thread_schedule_hint schedulehint = {}, Policy l = parallel::execution::detail::get_default_policy<Policy>::call()) noexcept#
-
inline explicit constexpr parallel_policy_executor(threads::thread_schedule_hint schedulehint, Policy l = parallel::execution::detail::get_default_policy<Policy>::call()) noexcept#
-
constexpr parallel_policy_executor() noexcept = default#
-
inline explicit constexpr parallel_policy_executor(threads::thread_pool_base *pool, Policy l) noexcept#
-
inline explicit constexpr parallel_policy_executor(threads::thread_pool_base *pool, threads::thread_priority priority = threads::thread_priority::default_, threads::thread_stacksize stacksize = threads::thread_stacksize::default_, threads::thread_schedule_hint schedulehint = {}, Policy l = parallel::execution::detail::get_default_policy<Policy>::call()) noexcept#
-
parallel_policy_executor(parallel_policy_executor const&) = default#
-
parallel_policy_executor(parallel_policy_executor&&) = default#
-
parallel_policy_executor &operator=(parallel_policy_executor const&) = default#
-
parallel_policy_executor &operator=(parallel_policy_executor&&) = default#
-
inline auto query(experimental::with_processing_units_count_t, std::size_t num_cores) const#
-
template<typename Parameters>
inline std::size_t query(experimental::processing_units_count_t, Parameters &¶ms, hpx::chrono::steady_duration const &iter_dur = hpx::chrono::null_duration, std::size_t num_tasks = 0) const#
-
inline auto query(experimental::with_first_core_t, std::size_t first_core) const noexcept#
-
inline constexpr std::size_t query(experimental::get_first_core_t) const noexcept#
-
inline auto query(experimental::get_processing_units_mask_t) const#
-
inline auto query(experimental::get_cores_mask_t) const#
-
template<typename F, typename Future, typename ...Ts>
inline decltype(auto) then_execute(F &&f, Future &&predecessor, Ts&&... ts) const#
-
template<typename F, typename S, typename Future, typename ...Ts>
inline decltype(auto) bulk_then_execute(F &&f, S const &shape, Future &&predecessor, Ts&&... ts) const#
-
template<typename F, typename S, typename ...Ts>
inline decltype(auto) bulk_sync_execute(F &&f, S const &shape, Ts&&... ts) const#
-
template<typename F, typename S, typename ...Ts>
inline decltype(auto) bulk_async_execute(F &&f, S const &shape, Ts&&... ts) const#
-
inline decltype(auto) to_non_par() const#
-
template<typename Policy, bool HierarchicalSpawning>
constexpr hpx::execution::experimental::executor_scheduler<parallel_policy_executor<Policy, HierarchicalSpawning>> query(hpx::execution::experimental::get_scheduler_t) const noexcept#
-
using base_type = parallel_policy_executor_base<Policy>#
-
template<typename Policy>
struct parallel_policy_executor<Policy, true> : public hpx::execution::parallel_policy_executor_base<Policy># Public Types
-
using base_type = parallel_policy_executor_base<Policy>#
Public Functions
-
inline explicit constexpr parallel_policy_executor(threads::thread_priority priority, threads::thread_stacksize stacksize = threads::thread_stacksize::default_, threads::thread_schedule_hint schedulehint = {}, Policy l = parallel::execution::detail::get_default_policy<Policy>::call(), std::size_t const hierarchical_threshold = hierarchical_threshold_default_) noexcept#
-
inline explicit constexpr parallel_policy_executor(threads::thread_stacksize stacksize, threads::thread_schedule_hint schedulehint = {}, Policy l = parallel::execution::detail::get_default_policy<Policy>::call()) noexcept#
-
inline explicit constexpr parallel_policy_executor(threads::thread_schedule_hint schedulehint, Policy l = parallel::execution::detail::get_default_policy<Policy>::call()) noexcept#
-
constexpr parallel_policy_executor() noexcept = default#
-
inline explicit constexpr parallel_policy_executor(threads::thread_pool_base *pool, Policy l, std::size_t const hierarchical_threshold = hierarchical_threshold_default_) noexcept#
-
inline explicit constexpr parallel_policy_executor(threads::thread_pool_base *pool, threads::thread_priority priority = threads::thread_priority::default_, threads::thread_stacksize stacksize = threads::thread_stacksize::default_, threads::thread_schedule_hint schedulehint = {}, Policy l = parallel::execution::detail::get_default_policy<Policy>::call(), std::size_t const hierarchical_threshold = hierarchical_threshold_default_) noexcept#
-
parallel_policy_executor(parallel_policy_executor const&) = default#
-
parallel_policy_executor(parallel_policy_executor&&) = default#
-
parallel_policy_executor &operator=(parallel_policy_executor const&) = default#
-
parallel_policy_executor &operator=(parallel_policy_executor&&) = default#
-
~parallel_policy_executor() = default#
-
inline auto query(experimental::with_processing_units_count_t, std::size_t num_cores) const#
-
template<typename Parameters>
inline std::size_t query(experimental::processing_units_count_t, Parameters &¶ms, hpx::chrono::steady_duration const &iter_dur = hpx::chrono::null_duration, std::size_t num_tasks = 0) const#
-
inline auto query(experimental::with_first_core_t, std::size_t first_core) const noexcept#
-
inline constexpr std::size_t query(experimental::get_first_core_t) const noexcept#
-
inline auto query(experimental::get_processing_units_mask_t) const#
-
inline auto query(experimental::get_cores_mask_t) const#
-
template<typename F, typename Future, typename ...Ts>
inline decltype(auto) then_execute(F &&f, Future &&predecessor, Ts&&... ts) const#
-
template<typename F, typename S, typename Future, typename ...Ts>
inline decltype(auto) bulk_then_execute(F &&f, S const &shape, Future &&predecessor, Ts&&... ts) const#
-
template<typename F, typename S, typename ...Ts>
inline decltype(auto) bulk_sync_execute(F &&f, S const &shape, Ts&&... ts) const#
-
template<typename F, typename S, typename ...Ts>
inline decltype(auto) bulk_async_execute(F &&f, S const &shape, Ts&&... ts) const#
-
inline decltype(auto) to_non_par() const#
-
using base_type = parallel_policy_executor_base<Policy>#
-
template<typename Policy>
struct parallel_policy_executor_base# - #include <parallel_executor.hpp>
A parallel_executor creates groups of parallel execution agents which execute in threads implicitly created by the executor. This executor prefers continuing with the creating thread first before executing newly created threads.
This executor conforms to the concepts of a TwoWayExecutor, and a BulkTwoWayExecutor
Subclassed by hpx::execution::parallel_policy_executor< Policy, HierarchicalSpawning >, hpx::execution::parallel_policy_executor< Policy, true >, hpx::execution::parallel_policy_executor< Policy >
Public Types
-
using execution_category = std::conditional_t<std::is_same_v<Policy, launch::sync_policy>, sequenced_execution_tag, parallel_execution_tag>#
Associate the parallel_execution_tag executor tag type as a default with this executor, except if the given launch policy is sync.
-
using executor_parameters_type = experimental::default_parameters#
Associate the default_parameters executor parameters type as a default with this executor.
Public Functions
-
inline parallel_policy_executor_base(parallel_policy_executor_base const &rhs) noexcept#
-
inline parallel_policy_executor_base &operator=(parallel_policy_executor_base const &rhs) noexcept#
-
constexpr ~parallel_policy_executor_base() = default#
Public Static Functions
Protected Functions
-
inline explicit constexpr parallel_policy_executor_base(threads::thread_priority priority, threads::thread_stacksize stacksize = threads::thread_stacksize::default_, threads::thread_schedule_hint schedulehint = {}, Policy l = parallel::execution::detail::get_default_policy<Policy>::call()) noexcept#
Create a new parallel executor.
-
inline explicit constexpr parallel_policy_executor_base(threads::thread_stacksize stacksize, threads::thread_schedule_hint schedulehint = {}, Policy l = parallel::execution::detail::get_default_policy<Policy>::call()) noexcept#
-
inline explicit constexpr parallel_policy_executor_base(threads::thread_schedule_hint schedulehint, Policy l = parallel::execution::detail::get_default_policy<Policy>::call()) noexcept#
-
inline constexpr parallel_policy_executor_base() noexcept#
-
inline explicit constexpr parallel_policy_executor_base(threads::thread_pool_base *pool, Policy l) noexcept#
-
inline explicit constexpr parallel_policy_executor_base(threads::thread_pool_base *pool, threads::thread_priority priority = threads::thread_priority::default_, threads::thread_stacksize stacksize = threads::thread_stacksize::default_, threads::thread_schedule_hint schedulehint = {}, Policy l = parallel::execution::detail::get_default_policy<Policy>::call())#
-
using execution_category = std::conditional_t<std::is_same_v<Policy, launch::sync_policy>, sequenced_execution_tag, parallel_execution_tag>#
-
namespace experimental
-
template<typename Executor>
struct executor_scheduler
-
template<typename Executor>
-
using parallel_executor = parallel_policy_executor<hpx::launch>#
-
namespace parallel
-
namespace execution
-
namespace execution
-
namespace execution