class instruction_graph
Declaration
class instruction_graph { /* full declaration omitted */ };
Description
The instruction graph (IDAG) provides a static, parallel schedule of operations executed on a single Celerity node. It manages allocation and transfer operations between host- and all device memories installed in the node and issues kernel launches, inter-node data transfers and reductions. Unlike the higher-level task and command graphs which track data dependencies in terms of buffers, it operates on the lower level of allocations, which (among other uses) can back sub-regions of the (virtual) global buffer. The instruction_graph
struct keeps ownership of all instructions that have not yet been pruned by epoch or horizon application.
Member Variables
- std::vector<instruction_epoch> m_epochs
Member Function Overview
- begin_epoch(task_id tid) → void
- get_live_instruction_count() const → size_t
- prune_before_epoch(task_id tid) → void
- push_instruction(std::unique_ptr<instruction> instr) → void
Member Functions
¶void begin_epoch(task_id tid)
void begin_epoch(task_id tid)
Parameters
- task_id tid
¶size_t get_live_instruction_count() const
size_t get_live_instruction_count() const
¶void prune_before_epoch(task_id tid)
void prune_before_epoch(task_id tid)
Parameters
- task_id tid
¶void push_instruction(
std::unique_ptr<instruction> instr)
void push_instruction(
std::unique_ptr<instruction> instr)
Parameters
- std::unique_ptr<instruction> instr