Skip to main content

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

Member Functions

void begin_epoch(task_id tid)

Parameters

task_id tid

size_t get_live_instruction_count() const


void prune_before_epoch(task_id tid)

Parameters

task_id tid

void push_instruction(
    std::unique_ptr<instruction> instr)

Parameters

std::unique_ptr<instruction> instr