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
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 check_progress()
¶void collect(const instruction_garbage& garbage)
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 <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 <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)
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)
void issue(const epoch_instruction& einstr)
Parameters
- const epoch_instruction& einstr
¶void issue(const horizon_instruction& hinstr)
void issue(const horizon_instruction& hinstr)
Parameters
- const horizon_instruction& hinstr
¶void issue(const destroy_host_object_instruction&
dhoinstr)
void issue(const destroy_host_object_instruction&
dhoinstr)
Parameters
- const destroy_host_object_instruction& dhoinstr
¶void issue(const fence_instruction& finstr)
void issue(const fence_instruction& finstr)
Parameters
- const fence_instruction& finstr
¶void issue(
const fill_identity_instruction& fiinstr)
void issue(
const fill_identity_instruction& fiinstr)
Parameters
- const fill_identity_instruction& fiinstr
¶void issue(
const split_receive_instruction& srinstr)
void issue(
const split_receive_instruction& srinstr)
Parameters
- const split_receive_instruction& srinstr
¶void issue(
const clone_collective_group_instruction&
ccginstr)
void issue(
const clone_collective_group_instruction&
ccginstr)
Parameters
- const clone_collective_group_instruction& ccginstr
¶void issue(const reduce_instruction& rinstr)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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
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_in_flight_async_instructions()
¶void poll_submission_queue()
void poll_submission_queue()
¶void retire_async_instruction(
async_instruction_state& async)
void retire_async_instruction(
async_instruction_state& async)
Parameters
- async_instruction_state& async
¶void run()
void run()
¶void try_issue_one_instruction()
void try_issue_one_instruction()