struct shared_data::thread_function_helper

Declaration

template <typename F, typename S, typename Tuple>
struct shared_data::thread_function_helper { /* full declaration omitted */ };

Description

This struct implements the main work loop for a single parallel for loop. The indirection through this struct is done to allow passing the original template parameters F, S, and Tuple (additional arguments packed into a tuple) given to bulk_sync_execute without wrapping it into pika::function or similar.

Declared at: libs/pika/executors/include/pika/executors/fork_join_executor.hpp:362

Method Overview

  • public static void call_dynamic(pika::execution::experimental::fork_join_executor::shared_data::region_data_type & rdata, std::size_t thread_index, std::size_t num_threads, pika::execution::experimental::fork_join_executor::shared_data::queues_type & queues, pika::lcos::local::spinlock & exception_mutex, std::exception_ptr & exception) noexcept
  • public static void call_static(pika::execution::experimental::fork_join_executor::shared_data::region_data_type & rdata, std::size_t thread_index, std::size_t num_threads, pika::execution::experimental::fork_join_executor::shared_data::queues_type &, pika::lcos::local::spinlock & exception_mutex, std::exception_ptr & exception) noexcept
  • public template <std::size_t... Is_, typename F_, typename A_, typename Tuple_>static constexpr void invoke_helper(pika::util::index_pack<Is_...>, F_ && f, A_ && a, Tuple_ && t)
  • public static void set_state(std::atomic<thread_state> & tstate, pika::execution::experimental::fork_join_executor::shared_data::thread_state state) noexcept

Methods

static void call_dynamic(
    pika::execution::experimental::
        fork_join_executor::shared_data::
            region_data_type& rdata,
    std::size_t thread_index,
    std::size_t num_threads,
    pika::execution::experimental::
        fork_join_executor::shared_data::
            queues_type& queues,
    pika::lcos::local::spinlock& exception_mutex,
    std::exception_ptr& exception) noexcept

Description

Main entry point for a single parallel region (dynamic scheduling).

Declared at: libs/pika/executors/include/pika/executors/fork_join_executor.hpp:434

Parameters

pika::execution::experimental:: fork_join_executor::shared_data:: region_data_type& rdata
std::size_t thread_index
std::size_t num_threads
pika::execution::experimental:: fork_join_executor::shared_data::queues_type& queues
pika::lcos::local::spinlock& exception_mutex
std::exception_ptr& exception

static void call_static(
    pika::execution::experimental::
        fork_join_executor::shared_data::
            region_data_type& rdata,
    std::size_t thread_index,
    std::size_t num_threads,
    pika::execution::experimental::
        fork_join_executor::shared_data::
            queues_type&,
    pika::lcos::local::spinlock& exception_mutex,
    std::exception_ptr& exception) noexcept

Description

Main entry point for a single parallel region (static scheduling).

Declared at: libs/pika/executors/include/pika/executors/fork_join_executor.hpp:385

Parameters

pika::execution::experimental:: fork_join_executor::shared_data:: region_data_type& rdata
std::size_t thread_index
std::size_t num_threads
pika::execution::experimental:: fork_join_executor::shared_data::queues_type&
pika::lcos::local::spinlock& exception_mutex
std::exception_ptr& exception

template <std::size_t... Is_,
          typename F_,
          typename A_,
          typename Tuple_>
static constexpr void invoke_helper(
    pika::util::index_pack<Is_...>,
    F_&& f,
    A_&& a,
    Tuple_&& t)

Declared at: libs/pika/executors/include/pika/executors/fork_join_executor.hpp:370

Parameters

pika::util::index_pack<Is_...>
F_&& f
A_&& a
Tuple_&& t

static void set_state(
    std::atomic<thread_state>& tstate,
    pika::execution::experimental::
        fork_join_executor::shared_data::
            thread_state state) noexcept

Declared at: libs/pika/executors/include/pika/executors/fork_join_executor.hpp:377

Parameters

std::atomic<thread_state>& tstate
pika::execution::experimental:: fork_join_executor::shared_data::thread_state state