Skip to main content

segment_exec_program

Function segment_exec_program 

Source
pub fn segment_exec_program(program: &ExecProgram) -> Vec<Segment>
Expand description

Compile an ExecProgram into execution segments.

ยงExamples

use tenferro::segment::{segment_exec_program, Segment};
use tenferro::exec::{ExecInstruction, ExecOp, ExecProgram};
use tenferro::DType;

let program = ExecProgram {
    instructions: vec![
        ExecInstruction {
            op: ExecOp::Add,
            input_slots: vec![0, 1],
            output_slots: vec![2],
            dtype: DType::F64,
            output_shapes: vec![vec![]],
            last_use: vec![false, true],
        },
        ExecInstruction {
            op: ExecOp::ShapeOf { axis: 0 },
            input_slots: vec![2],
            output_slots: vec![3],
            dtype: DType::F64,
            output_shapes: vec![vec![]],
            last_use: vec![true],
        },
    ],
    input_slots: vec![0, 1],
    output_slots: vec![2, 3],
    n_slots: 4,
};

let segments = segment_exec_program(&program);
assert!(matches!(&segments[0], Segment::Fused { .. }));
assert!(matches!(&segments[1], Segment::Host(_)));