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(_)));