Skip to main content

struct executor_impl

Declaration

struct executor_impl { /* full declaration omitted */ };

Member Variables

const std::unique_ptr<detail::backend> backend
communicator* const root_communicator
double_buffered_queue<submission>* const submission_queue
live_executor::delegate* const delegate
const live_executor::policy_set policy
receive_arbiter recv_arbiter = {*this->root_communicator}
out_of_order_engine engine = {this->backend->get_system_info()}
bool expecting_more_submissions = true
shutdown epoch has not been executed yet
std::vector<async_instruction_state> in_flight_async_instructions
std::unordered_map<allocation_id, void*> allocations = {{null_allocation_id, nullptr}}
obtained from alloc_instruction or track_user_allocation
std::unordered_map< host_object_id, std::unique_ptr<host_object_instance>> host_object_instances
passed in through track_host_object_instance
std::unordered_map<collective_group_id, std::unique_ptr<communicator>> cloned_communicators
transitive clones of root_communicator
std::unordered_map<reduction_id, std::unique_ptr<reducer>> reducers
passed in through track_reducer, erased on epochs / horizons
std::optional< std::chrono::steady_clock::time_point> last_progress_timestamp
last successful call to check_progress
bool made_progress = false
progress was made since `last_progress_timestamp`
bool progress_warning_emitted = false
no progress was made since warning was emitted
std::unique_ptr<tracy_integration> tracy

Member Function Overview

  • attach_boundary_check_info(std::vector<closure_hydrator::accessor_info> & accessor_infos, const buffer_access_allocation_map & amap, task_type tt, task_id tid, const std::string & task_name) const → std::unique_ptr<boundary_check_info>
  • check_progress() → void
  • collect(const instruction_garbage & garbage) → void
  • template <typename Instr>
    dispatch(const Instr & instr, const out_of_order_engine::assignment & assignment) -> decltype(issue(instr)) → auto
  • template <typename Instr>
    dispatch(const Instr & instr, const out_of_order_engine::assignment & assignment) -> decltype(issue(instr)) → auto
  • executor_impl(std::unique_ptr<detail::backend> backend, communicator * root_comm, double_buffered_queue<submission> & submission_queue, live_executor::delegate * dlg, const live_executor::policy_set & policy)
  • issue(const epoch_instruction & einstr) → void
  • issue(const horizon_instruction & hinstr) → void
  • issue(const destroy_host_object_instruction & dhoinstr) → void
  • issue(const fence_instruction & finstr) → void
  • issue(const fill_identity_instruction & fiinstr) → void
  • issue(const split_receive_instruction & srinstr) → void
  • issue(const clone_collective_group_instruction & ccginstr) → void
  • issue(const reduce_instruction & rinstr) → void
  • issue_async(const host_task_instruction & htinstr, const out_of_order_engine::assignment & assignment, async_instruction_state & async) → void
  • issue_async(const gather_receive_instruction & grinstr, const out_of_order_engine::assignment & assignment, async_instruction_state & async) → void
  • issue_async(const await_receive_instruction & arinstr, const out_of_order_engine::assignment & assignment, async_instruction_state & async) → void
  • issue_async(const receive_instruction & rinstr, const out_of_order_engine::assignment & assignment, async_instruction_state & async) → void
  • issue_async(const send_instruction & sinstr, const out_of_order_engine::assignment & assignment, async_instruction_state & async) → void
  • issue_async(const device_kernel_instruction & dkinstr, const out_of_order_engine::assignment & assignment, async_instruction_state & async) → void
  • issue_async(const copy_instruction & cinstr, const out_of_order_engine::assignment & assignment, async_instruction_state & async) → void
  • issue_async(const free_instruction & finstr, const out_of_order_engine::assignment & assignment, async_instruction_state & async) → void
  • issue_async(const alloc_instruction & ainstr, const out_of_order_engine::assignment & assignment, async_instruction_state & async) → void
  • make_accessor_infos(const buffer_access_allocation_map & amap) const → std::vector<closure_hydrator::accessor_info>
  • poll_in_flight_async_instructions() → void
  • poll_submission_queue() → void
  • retire_async_instruction(async_instruction_state & async) → void
  • run() → void
  • try_issue_one_instruction() → void

Member Functions

std::unique_ptr<boundary_check_info>
attach_boundary_check_info(
    std::vector<closure_hydrator::accessor_info>&
        accessor_infos,
    const buffer_access_allocation_map& amap,
    task_type tt,
    task_id tid,
    const std::string& task_name) const

Parameters

std::vector<closure_hydrator::accessor_info>& accessor_infos
const buffer_access_allocation_map& amap
task_type tt
task_id tid
const std::string& task_name

void check_progress()


void collect(const instruction_garbage& garbage)

Parameters

const instruction_garbage& garbage

template <typename Instr>
auto dispatch(
    const Instr& instr,
    const out_of_order_engine::assignment&
        assignment) -> decltype(issue(instr))

Template Parameters

Instr

Parameters

const Instr& instr
const out_of_order_engine::assignment& assignment

template <typename Instr>
auto dispatch(
    const Instr& instr,
    const out_of_order_engine::assignment&
        assignment) -> decltype(issue(instr))

Template Parameters

Instr

Parameters

const Instr& instr
const out_of_order_engine::assignment& assignment

executor_impl(
    std::unique_ptr<detail::backend> backend,
    communicator* root_comm,
    double_buffered_queue<submission>&
        submission_queue,
    live_executor::delegate* dlg,
    const live_executor::policy_set& policy)

Parameters

std::unique_ptr<detail::backend> backend
communicator* root_comm
double_buffered_queue<submission>& submission_queue
live_executor::delegate* dlg
const live_executor::policy_set& policy

void issue(const epoch_instruction& einstr)

Parameters

const epoch_instruction& einstr

void issue(const horizon_instruction& hinstr)

Parameters

const horizon_instruction& hinstr

void issue(const destroy_host_object_instruction&
               dhoinstr)

Parameters

const destroy_host_object_instruction& dhoinstr

void issue(const fence_instruction& finstr)

Parameters

const fence_instruction& finstr

void issue(
    const fill_identity_instruction& fiinstr)

Parameters

const fill_identity_instruction& fiinstr

void issue(
    const split_receive_instruction& srinstr)

Parameters

const split_receive_instruction& srinstr

void issue(
    const clone_collective_group_instruction&
        ccginstr)

Parameters

const clone_collective_group_instruction& ccginstr

void issue(const reduce_instruction& rinstr)

Parameters

const reduce_instruction& rinstr

void issue_async(
    const host_task_instruction& htinstr,
    const out_of_order_engine::assignment&
        assignment,
    async_instruction_state& async)

Parameters

const host_task_instruction& htinstr
const out_of_order_engine::assignment& assignment
async_instruction_state& async

void issue_async(
    const gather_receive_instruction& grinstr,
    const out_of_order_engine::assignment&
        assignment,
    async_instruction_state& async)

Parameters

const gather_receive_instruction& grinstr
const out_of_order_engine::assignment& assignment
async_instruction_state& async

void issue_async(
    const await_receive_instruction& arinstr,
    const out_of_order_engine::assignment&
        assignment,
    async_instruction_state& async)

Parameters

const await_receive_instruction& arinstr
const out_of_order_engine::assignment& assignment
async_instruction_state& async

void issue_async(
    const receive_instruction& rinstr,
    const out_of_order_engine::assignment&
        assignment,
    async_instruction_state& async)

Parameters

const receive_instruction& rinstr
const out_of_order_engine::assignment& assignment
async_instruction_state& async

void issue_async(
    const send_instruction& sinstr,
    const out_of_order_engine::assignment&
        assignment,
    async_instruction_state& async)

Parameters

const send_instruction& sinstr
const out_of_order_engine::assignment& assignment
async_instruction_state& async

void issue_async(
    const device_kernel_instruction& dkinstr,
    const out_of_order_engine::assignment&
        assignment,
    async_instruction_state& async)

Parameters

const device_kernel_instruction& dkinstr
const out_of_order_engine::assignment& assignment
async_instruction_state& async

void issue_async(
    const copy_instruction& cinstr,
    const out_of_order_engine::assignment&
        assignment,
    async_instruction_state& async)

Parameters

const copy_instruction& cinstr
const out_of_order_engine::assignment& assignment
async_instruction_state& async

void issue_async(
    const free_instruction& finstr,
    const out_of_order_engine::assignment&
        assignment,
    async_instruction_state& async)

Parameters

const free_instruction& finstr
const out_of_order_engine::assignment& assignment
async_instruction_state& async

void issue_async(
    const alloc_instruction& ainstr,
    const out_of_order_engine::assignment&
        assignment,
    async_instruction_state& async)

Parameters

const alloc_instruction& ainstr
const out_of_order_engine::assignment& assignment
async_instruction_state& async

std::vector<closure_hydrator::accessor_info>
make_accessor_infos(
    const buffer_access_allocation_map& amap)
    const

Parameters

const buffer_access_allocation_map& amap

void poll_in_flight_async_instructions()


void poll_submission_queue()


void retire_async_instruction(
    async_instruction_state& async)

Parameters

async_instruction_state& async

void run()


void try_issue_one_instruction()