|
4 | 4 |
|
5 | 5 | const std = @import("std"); |
6 | 6 | const kiwigrad = @import("kiwigrad"); |
| 7 | +const zbench = @import("zbench"); |
7 | 8 |
|
8 | 9 | const print = std.debug.print; |
9 | 10 |
|
10 | | -/// Write the computational graph to a Graphviz file |
11 | | -pub fn draw_graph(comptime T: type, graph: *kiwigrad.engine.Value(T), name: []const u8, writer: anytype) !void { |
12 | | - const dot_name = try std.fmt.allocPrint(std.heap.page_allocator, "{s}.dot", .{name}); |
13 | | - defer std.heap.page_allocator.free(dot_name); |
14 | | - const png_name = try std.fmt.allocPrint(std.heap.page_allocator, "{s}.png", .{name}); |
15 | | - defer std.heap.page_allocator.free(png_name); |
16 | | - |
17 | | - const file = try std.fs.cwd().createFile(dot_name, .{}); |
18 | | - defer file.close(); |
19 | | - const file_writer = file.writer(); |
20 | | - try graph.draw_dot(file_writer, std.heap.page_allocator); |
21 | | - |
22 | | - try writer.print("Computational graph written to {s}\n", .{dot_name}); |
23 | | - try writer.print("You can visualize it by running: dot -Tpng {s} -o {s}\n", .{ dot_name, png_name }); |
24 | | -} |
25 | | - |
26 | 11 | pub fn main() !void { |
27 | 12 | const stdout_file = std.io.getStdOut().writer(); |
28 | 13 | var bw = std.io.bufferedWriter(stdout_file); |
@@ -71,6 +56,6 @@ pub fn main() !void { |
71 | 56 | print("output.data: {d:.4}\n", .{output.data}); |
72 | 57 | print("output.grad: {d:.4}\n", .{output.grad}); |
73 | 58 |
|
74 | | - try draw_graph(f64, output, "assets/img/train", stdout); |
| 59 | + output.draw_graph("assets/img/train", stdout); |
75 | 60 | try bw.flush(); // Don't forget to flush! |
76 | 61 | } |
0 commit comments