Skip to main content

struct live_executor::impl

Declaration

struct live_executor::impl { /* full declaration omitted */ };

Declared at: src/live_executor.cc:328

Member Variables

const std::unique_ptr<detail::backend> backend
communicator* const root_communicator
double_buffered_queue<submission>* const submission_queue
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::unordered_map<instruction_id, 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
bool scheduler_is_idle = true
scheduler is currently not producing new instructions
std::atomic_uint64_t total_starvation_time = 0
total time spent waiting for new instructions while scheduler was busy, in nanoseconds
std::atomic_uint64_t total_active_time = 0
total time spent processing instructions, in nanoseconds

Member Function Overview

  • 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
  • impl(std::unique_ptr<detail::backend> backend, communicator * root_comm, double_buffered_queue<submission> & submission_queue, 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 reduce_instruction & rinstr) → void
  • issue(const split_receive_instruction & srinstr) → void
  • issue(const clone_collective_group_instruction & ccginstr) → void
  • issue(const fill_identity_instruction & fiinstr) → 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(instruction_id iid, async_instruction_state & async) → void
  • run() → void
  • try_issue_one_instruction() → void

Member Functions

void check_progress()

Declared at: src/live_executor.cc:363


void collect(const instruction_garbage& garbage)

Declared at: src/live_executor.cc:403

Parameters

const instruction_garbage& garbage

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

Declared at: src/live_executor.cc:376

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))

Declared at: src/live_executor.cc:376

Template Parameters

Instr

Parameters

const Instr& instr
const out_of_order_engine::assignment& assignment

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

Declared at: src/live_executor.cc:355

Parameters

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

void issue(const epoch_instruction& einstr)

Declared at: src/live_executor.cc:373

Parameters

const epoch_instruction& einstr

void issue(const horizon_instruction& hinstr)

Declared at: src/live_executor.cc:372

Parameters

const horizon_instruction& hinstr

void issue(const destroy_host_object_instruction&
               dhoinstr)

Declared at: src/live_executor.cc:371

Parameters

const destroy_host_object_instruction& dhoinstr

void issue(const fence_instruction& finstr)

Declared at: src/live_executor.cc:370

Parameters

const fence_instruction& finstr

void issue(const reduce_instruction& rinstr)

Declared at: src/live_executor.cc:369

Parameters

const reduce_instruction& rinstr

void issue(
    const split_receive_instruction& srinstr)

Declared at: src/live_executor.cc:367

Parameters

const split_receive_instruction& srinstr

void issue(
    const clone_collective_group_instruction&
        ccginstr)

Declared at: src/live_executor.cc:366

Parameters

const clone_collective_group_instruction& ccginstr

void issue(
    const fill_identity_instruction& fiinstr)

Declared at: src/live_executor.cc:368

Parameters

const fill_identity_instruction& fiinstr

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

Declared at: src/live_executor.cc:385

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)

Declared at: src/live_executor.cc:389

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)

Declared at: src/live_executor.cc:388

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)

Declared at: src/live_executor.cc:387

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)

Declared at: src/live_executor.cc:386

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)

Declared at: src/live_executor.cc:384

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)

Declared at: src/live_executor.cc:383

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)

Declared at: src/live_executor.cc:382

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)

Declared at: src/live_executor.cc:381

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

Declared at: src/live_executor.cc:396

Parameters

const buffer_access_allocation_map& amap

void poll_in_flight_async_instructions()

Declared at: src/live_executor.cc:359


void poll_submission_queue()

Declared at: src/live_executor.cc:360


void retire_async_instruction(
    instruction_id iid,
    async_instruction_state& async)

Declared at: src/live_executor.cc:362

Parameters

instruction_id iid
async_instruction_state& async

void run()

Declared at: src/live_executor.cc:358


void try_issue_one_instruction()

Declared at: src/live_executor.cc:361