lib/accy/src/tensor/interpret/graph.zig
daab053ee43316e1809a84551d573ddd1e5bf3d2
1 const program_mod = @import("../root.zig").program;
2 const trace = @import("../root.zig").trace;
3 const step_mod = @import("step.zig");
4
5 pub const Graph = struct {
6 builder: *trace.Builder,
7
8 pub const Value: type = trace.Value;
9 pub const Result: type = program_mod.Program;
10
11 pub fn operation(self: *@This(), step: *step_mod.Step(Value)) !Value {
12 var buffer: [program_mod.max_operation_operands]Value = undefined;
13 return self.bind(step.op, step_mod.arguments(Value, step.op, step.values, &buffer));
14 }
15
16 pub fn bind(self: *@This(), op: *const program_mod.Operation, args: []const Value) !Value {
17 return self.builder.operation(op, args);
18 }
19
20 pub fn finish(self: *@This(), outputs: []const Value) !Result {
21 return self.builder.finish(outputs);
22 }
23
24 pub fn builderHandle(self: *@This()) *trace.Builder {
25 return self.builder;
26 }
27 };