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 };