Skip to content

Commit 0c149bf

Browse files
committed
New executable read_config, and finally a better logging test setup with per-backend targets;
important: test/ocannl_config -> test/config/ocannl_config Signed-off-by: lukstafi <lukstafi@users.noreply.github.com>
1 parent 5797d27 commit 0c149bf

File tree

9 files changed

+221
-12
lines changed

9 files changed

+221
-12
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ _opam/
3333
# Local configuration
3434
ocannl_config
3535
!test/ocannl_config
36+
!test/config/ocannl_config
3637
!test_ppx/ocannl_config
3738
# Convenience for storing particular configurations, not used by OCANNL
3839
ocannl_config-*

CHANGES.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
- Setting `debug_log_to_stream_files` to neatly keep logs from routine execution in their separate files.
77
- Settings `clean_up_artifacts_on_startup`, `prefer_backend_uniformity`.
88
- Tools directory and the `minised` tool: regexp replacement file rewrite.
9+
- Directory arrayjit/bin and executable `read_config` for extracting OCANNL configuration into txt files.
910

1011
### Changed
1112

arrayjit/bin/dune

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
(executable
2+
(name read_config)
3+
(modules read_config)
4+
(libraries utils)
5+
(preprocess
6+
(pps ppx_minidebug ppx_sexp_conv))
7+
(modes exe))

arrayjit/bin/read_config.ml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
open Base
2+
open Stdio
3+
4+
let extract_config arg =
5+
let prefixes = ["--read="; "--read-"; "--read_"] in
6+
List.find_map prefixes ~f:(fun prefix ->
7+
Option.map (String.chop_prefix arg ~prefix) ~f:(fun config -> config))
8+
9+
let () =
10+
let config_opt =
11+
Array.find_map Stdlib.Sys.argv ~f:extract_config
12+
in
13+
match config_opt with
14+
| Some config ->
15+
let value = Utils.get_global_arg ~default:"" ~arg_name:config in
16+
let filename = "ocannl_" ^ config ^ ".txt" in
17+
(try
18+
Out_channel.write_all filename ~data:value;
19+
printf "Wrote value of '%s' to %s\n" config filename
20+
with exn ->
21+
eprintf "Error writing to %s: %s\n" filename (Exn.to_string exn))
22+
| None ->
23+
printf "No --read=<config>, --read-<config>, or --read_<config> argument found.\n"
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
randomness_lib=for_tests
22
log_main_domain_to_stdout=true
3-
backend=cc
3+
backend=multicore_cc
44
log_level=0
55
print_decimals_precision=2
66
prefer_backend_uniformity=true

test/dune

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,17 @@
1616
(preprocess
1717
(pps ppx_ocannl)))
1818

19+
(subdir
20+
config
21+
(rule
22+
(target ocannl_backend.txt)
23+
(deps ocannl_config)
24+
(action
25+
(run %{dep:../../arrayjit/bin/read_config.exe} "--read=backend"))))
26+
27+
(copy_files
28+
(files config/ocannl_config))
29+
1930
(rule
2031
(alias runtest)
2132
(target
@@ -29,32 +40,28 @@
2940
"--ocannl_debug_log_to_stream_files=true")))
3041

3142
(rule
32-
(alias runtest)
33-
(target micrograd_demo_logging-stream-0-0.log)
34-
(deps
35-
(:kernel_log
36-
(glob_files log_files/*-0-0.log)))
43+
(target "%{read:config/ocannl_backend.txt}-0-0.log.actual")
3744
(action
3845
(progn
3946
(run
4047
%{dep:../tools/minised.exe}
4148
"0x[0-9a-f]+"
4249
"0xNNNN"
43-
%{kernel_log}
44-
"micrograd_demo_logging-stream-0-0.log")
50+
"log_files/%{read:config/ocannl_backend.txt}-0-0.log"
51+
"%{read:config/ocannl_backend.txt}-0-0.log.actual")
4552
(run
4653
%{dep:../tools/minised.exe}
4754
"\\([a-z0-9_]+\\)\\[0\\]{=[-.e0-9]+} = "
4855
"\\1[0]{=MAYBE UNINITIALIZED} = "
49-
"micrograd_demo_logging-stream-0-0.log"
50-
"micrograd_demo_logging-stream-0-0.log"))))
56+
"%{read:config/ocannl_backend.txt}-0-0.log.actual"
57+
"%{read:config/ocannl_backend.txt}-0-0.log.actual"))))
5158

5259
(rule
5360
(alias runtest)
5461
(action
5562
(diff
56-
micrograd_demo_logging-stream-0-0.expected.log
57-
micrograd_demo_logging-stream-0-0.log)))
63+
"micrograd_demo_logging-%{read:config/ocannl_backend.txt}-0-0.log.expected"
64+
"%{read:config/ocannl_backend.txt}-0-0.log.actual")))
5865

5966
(library
6067
(name tutorials)
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
float *a &[1] = 0xNNNN
2+
float *a_grad &[1] = 0xNNNN
3+
float *b &[1] = 0xNNNN
4+
float *b_grad &[1] = 0xNNNN
5+
float *g &[1] = 0xNNNN
6+
COMMENT: g gradient update
7+
COMMENT: g fwd
8+
# n4_c[0] := (a[0] + b[0]);
9+
n4_c[0]{=MAYBE UNINITIALIZED} = -2000e-3 = (a[0]{=-4000e-3} + b[0]{=2000e-3})
10+
# n19_c[0] := ((n4_c[0] + n4_c[0]) + 1);
11+
n19_c[0]{=MAYBE UNINITIALIZED} = -3000e-3 = ((n4_c[0]{=-2000e-3} + n4_c[0]{=-2000e-3}) + (float)(1))
12+
# n42[0] := (b[0] - a[0]);
13+
n42[0]{=MAYBE UNINITIALIZED} = 6000e-3 = (b[0]{=2000e-3} - a[0]{=-4000e-3})
14+
# n31[0] := (b[0] + a[0]);
15+
n31[0]{=MAYBE UNINITIALIZED} = -2000e-3 = (b[0]{=2000e-3} + a[0]{=-4000e-3})
16+
# n14_d[0] := fma(a[0], b[0], (b[0] * (b[0] * b[0])));
17+
n14_d[0]{=MAYBE UNINITIALIZED} = 0e-3 = fma(a[0]{=-4000e-3}, b[0]{=2000e-3}, (b[0]{=2000e-3} * (b[0]{=2000e-3} * b[0]{=2000e-3})))
18+
# n40_d[0] := (fma(n14_d[0], 2, n14_d[0]) + relu(n31[0]));
19+
n40_d[0]{=MAYBE UNINITIALIZED} = 0e-3 = (fma(n14_d[0]{=0e-3}, (float)(2), n14_d[0]{=0e-3}) + max(0.0f, n31[0]{=-2000e-3}))
20+
# e[0] :=$ (fma(-1, a[0], ((n19_c[0] + 1) + n19_c[0])) -$ (fma(3, n40_d[0], n40_d[0]) + relu(n42[0])));
21+
e[0]{=MAYBE UNINITIALIZED} = -7000e-3 = (fma((float)(-1), a[0]{=-4000e-3}, ((n19_c[0]{=-3000e-3} + (float)(1)) + n19_c[0]{=-3000e-3})) - (fma((float)(3), n40_d[0]{=0e-3}, n40_d[0]{=0e-3}) + max(0.0f, n42[0]{=6000e-3})))
22+
# f[0] := (e[0] * e[0]);
23+
f[0]{=MAYBE UNINITIALIZED} = 49000e-3 = (e[0]{=-7000e-3} * e[0]{=-7000e-3})
24+
# g[0] := ((f[0] / 2) + (10 / f[0]));
25+
g[0]{=MAYBE UNINITIALIZED} = 24704e-3 = ((f[0]{=49000e-3} / (float)(2)) + ((float)(10) / f[0]{=49000e-3}))
26+
COMMENT: end
27+
COMMENT: g zero grads
28+
# a_grad := 0
29+
a_grad[0]{=MAYBE UNINITIALIZED} = 0e-3 = (float)(0)
30+
# b_grad := 0
31+
b_grad[0]{=MAYBE UNINITIALIZED} = 0e-3 = (float)(0)
32+
# n4_c_grad := 0
33+
n4_c_grad[0]{=MAYBE UNINITIALIZED} = 0e-3 = (float)(0)
34+
# n19_c_grad := 0
35+
n19_c_grad[0]{=MAYBE UNINITIALIZED} = 0e-3 = (float)(0)
36+
# n14_d_grad := 0
37+
n14_d_grad[0]{=MAYBE UNINITIALIZED} = 0e-3 = (float)(0)
38+
# n40_d_grad := 0
39+
n40_d_grad[0]{=MAYBE UNINITIALIZED} = 0e-3 = (float)(0)
40+
# f_grad := 0
41+
f_grad[0]{=MAYBE UNINITIALIZED} = 0e-3 = (float)(0)
42+
COMMENT: end
43+
COMMENT: g bprop
44+
# f.grad[0] := fma(1, (-10 / (f[0] * f[0])), f.grad[0]);
45+
f_grad[0]{=MAYBE UNINITIALIZED} = -4e-3 = fma((float)(1), ((float)(-10) / (f[0]{=49000e-3} * f[0]{=49000e-3})), f_grad[0]{=0e-3})
46+
# f.grad[0] := (f.grad[0] + 0.5);
47+
f_grad[0]{=MAYBE UNINITIALIZED} = 495e-3 = (f_grad[0]{=-4e-3} + (float)(0.5))
48+
# n40_d.grad[0] := fma(-1, ((2 * e[0]) * f.grad[0]), n40_d.grad[0]);
49+
n40_d_grad[0]{=MAYBE UNINITIALIZED} = 6941e-3 = fma((float)(-1), (((float)(2) * e[0]{=-7000e-3}) * f_grad[0]{=495e-3}), n40_d_grad[0]{=0e-3})
50+
# n40_d.grad[0] := fma(3, (-1 * ((2 * e[0]) * f.grad[0])), n40_d.grad[0]);
51+
n40_d_grad[0]{=MAYBE UNINITIALIZED} = 27766e-3 = fma((float)(3), ((float)(-1) * (((float)(2) * e[0]{=-7000e-3}) * f_grad[0]{=495e-3})), n40_d_grad[0]{=6941e-3})
52+
# n14_d.grad[0] := (n14_d.grad[0] + n40_d.grad[0]);
53+
n14_d_grad[0]{=MAYBE UNINITIALIZED} = 27766e-3 = (n14_d_grad[0]{=0e-3} + n40_d_grad[0]{=27766e-3})
54+
# n14_d.grad[0] := fma(n40_d.grad[0], 2, n14_d.grad[0]);
55+
n14_d_grad[0]{=MAYBE UNINITIALIZED} = 83300e-3 = fma(n40_d_grad[0]{=27766e-3}, (float)(2), n14_d_grad[0]{=27766e-3})
56+
# a.grad[0] := fma(n14_d.grad[0], b[0], a.grad[0]);
57+
a_grad[0]{=MAYBE UNINITIALIZED} = 166600e-3 = fma(n14_d_grad[0]{=83300e-3}, b[0]{=2000e-3}, a_grad[0]{=0e-3})
58+
# b.grad[0] := fma(a[0], n14_d.grad[0], b.grad[0]);
59+
b_grad[0]{=MAYBE UNINITIALIZED} = -333201e-3 = fma(a[0]{=-4000e-3}, n14_d_grad[0]{=83300e-3}, b_grad[0]{=0e-3})
60+
# b.grad[0] := fma((3 * (b[0] * b[0])), n14_d.grad[0], b.grad[0]);
61+
b_grad[0]{=MAYBE UNINITIALIZED} = 666402e-3 = fma(((float)(3) * (b[0]{=2000e-3} * b[0]{=2000e-3})), n14_d_grad[0]{=83300e-3}, b_grad[0]{=-333201e-3})
62+
# b.grad[0] := (b.grad[0] + relu_gate(n31[0], n40_d.grad[0]));
63+
b_grad[0]{=MAYBE UNINITIALIZED} = 666402e-3 = (b_grad[0]{=666402e-3} + ((n31[0]{=-2000e-3} > 0.0f) ? n40_d_grad[0]{=27766e-3} : 0.0f))
64+
# a.grad[0] := (a.grad[0] + relu_gate(n31[0], n40_d.grad[0]));
65+
a_grad[0]{=MAYBE UNINITIALIZED} = 166600e-3 = (a_grad[0]{=166600e-3} + ((n31[0]{=-2000e-3} > 0.0f) ? n40_d_grad[0]{=27766e-3} : 0.0f))
66+
# b.grad[0] :=$ (b.grad[0] + relu_gate(n42[0], (-1 * ((2 * e[0]) * f.grad[0]))));
67+
b_grad[0]{=MAYBE UNINITIALIZED} = 673344e-3 = (b_grad[0]{=666402e-3} + ((n42[0]{=6000e-3} > 0.0f) ? ((float)(-1) * (((float)(2) * e[0]{=-7000e-3}) * f_grad[0]{=495e-3})) : 0.0f))
68+
# a.grad[0] :=$ (a.grad[0] - relu_gate(n42[0], (-1 * ((2 * e[0]) * f.grad[0]))));
69+
a_grad[0]{=MAYBE UNINITIALIZED} = 159658e-3 = (a_grad[0]{=166600e-3} - ((n42[0]{=6000e-3} > 0.0f) ? ((float)(-1) * (((float)(2) * e[0]{=-7000e-3}) * f_grad[0]{=495e-3})) : 0.0f))
70+
# n19_c.grad[0] := fma((2 * e[0]), f.grad[0], n19_c.grad[0]);
71+
n19_c_grad[0]{=MAYBE UNINITIALIZED} = -6941e-3 = fma(((float)(2) * e[0]{=-7000e-3}), f_grad[0]{=495e-3}, n19_c_grad[0]{=0e-3})
72+
# n19_c.grad[0] := fma((2 * e[0]), f.grad[0], n19_c.grad[0]);
73+
n19_c_grad[0]{=MAYBE UNINITIALIZED} = -13883e-3 = fma(((float)(2) * e[0]{=-7000e-3}), f_grad[0]{=495e-3}, n19_c_grad[0]{=-6941e-3})
74+
# n4_c.grad[0] := (n4_c.grad[0] + n19_c.grad[0]);
75+
n4_c_grad[0]{=MAYBE UNINITIALIZED} = -13883e-3 = (n4_c_grad[0]{=0e-3} + n19_c_grad[0]{=-13883e-3})
76+
# n4_c.grad[0] := (n4_c.grad[0] + n19_c.grad[0]);
77+
n4_c_grad[0]{=MAYBE UNINITIALIZED} = -27766e-3 = (n4_c_grad[0]{=-13883e-3} + n19_c_grad[0]{=-13883e-3})
78+
# a.grad[0] := (a.grad[0] + n4_c.grad[0]);
79+
a_grad[0]{=MAYBE UNINITIALIZED} = 131892e-3 = (a_grad[0]{=159658e-3} + n4_c_grad[0]{=-27766e-3})
80+
# b.grad[0] := (b.grad[0] + n4_c.grad[0]);
81+
b_grad[0]{=MAYBE UNINITIALIZED} = 645577e-3 = (b_grad[0]{=673344e-3} + n4_c_grad[0]{=-27766e-3})
82+
# a.grad[0] := fma(-1, ((2 * e[0]) * f.grad[0]), a.grad[0]);
83+
a_grad[0]{=MAYBE UNINITIALIZED} = 138833e-3 = fma((float)(-1), (((float)(2) * e[0]{=-7000e-3}) * f_grad[0]{=495e-3}), a_grad[0]{=131892e-3})
84+
COMMENT: end
85+
COMMENT: end
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
float *a &[1] = 0000022c648e3570
2+
float *a_grad &[1] = 0000022c648e3580
3+
float *b &[1] = 0000022c648e3590
4+
float *b_grad &[1] = 0000022c648e3560
5+
float *g &[1] = 0000022c648e3540
6+
COMMENT: g gradient update
7+
COMMENT: g fwd
8+
# n4_c[0] := (a[0] + b[0]);
9+
n4_c[0]{=MAYBE UNINITIALIZED} = -2000e-3 = (a[0]{=-4000e-3} + b[0]{=2000e-3})
10+
# n19_c[0] := ((n4_c[0] + n4_c[0]) + 1);
11+
n19_c[0]{=MAYBE UNINITIALIZED} = -3000e-3 = ((n4_c[0]{=-2000e-3} + n4_c[0]{=-2000e-3}) + (float)(1))
12+
# n42[0] := (b[0] - a[0]);
13+
n42[0]{=MAYBE UNINITIALIZED} = 6000e-3 = (b[0]{=2000e-3} - a[0]{=-4000e-3})
14+
# n31[0] := (b[0] + a[0]);
15+
n31[0]{=MAYBE UNINITIALIZED} = -2000e-3 = (b[0]{=2000e-3} + a[0]{=-4000e-3})
16+
# n14_d[0] := fma(a[0], b[0], (b[0] * (b[0] * b[0])));
17+
n14_d[0]{=MAYBE UNINITIALIZED} = 0e-3 = fmaf(a[0]{=-4000e-3}, b[0]{=2000e-3}, (b[0]{=2000e-3} * (b[0]{=2000e-3} * b[0]{=2000e-3})))
18+
# n40_d[0] := (fma(n14_d[0], 2, n14_d[0]) + relu(n31[0]));
19+
n40_d[0]{=MAYBE UNINITIALIZED} = 0e-3 = (fmaf(n14_d[0]{=0e-3}, (float)(2), n14_d[0]{=0e-3}) + fmaxf(0.0, n31[0]{=-2000e-3}))
20+
# e[0] :=$ (fma(-1, a[0], ((n19_c[0] + 1) + n19_c[0])) -$ (fma(3, n40_d[0], n40_d[0]) + relu(n42[0])));
21+
e[0]{=MAYBE UNINITIALIZED} = -7000e-3 = (fmaf((float)(-1), a[0]{=-4000e-3}, ((n19_c[0]{=-3000e-3} + (float)(1)) + n19_c[0]{=-3000e-3})) - (fmaf((float)(3), n40_d[0]{=0e-3}, n40_d[0]{=0e-3}) + fmaxf(0.0, n42[0]{=6000e-3})))
22+
# f[0] := (e[0] * e[0]);
23+
f[0]{=MAYBE UNINITIALIZED} = 49000e-3 = (e[0]{=-7000e-3} * e[0]{=-7000e-3})
24+
# g[0] := ((f[0] / 2) + (10 / f[0]));
25+
g[0]{=MAYBE UNINITIALIZED} = 24704e-3 = ((f[0]{=49000e-3} / (float)(2)) + ((float)(10) / f[0]{=49000e-3}))
26+
COMMENT: end
27+
COMMENT: g zero grads
28+
# a_grad := 0
29+
a_grad[0]{=MAYBE UNINITIALIZED} = 0e-3 = (float)(0)
30+
# b_grad := 0
31+
b_grad[0]{=MAYBE UNINITIALIZED} = 0e-3 = (float)(0)
32+
# n4_c_grad := 0
33+
n4_c_grad[0]{=MAYBE UNINITIALIZED} = 0e-3 = (float)(0)
34+
# n19_c_grad := 0
35+
n19_c_grad[0]{=MAYBE UNINITIALIZED} = 0e-3 = (float)(0)
36+
# n14_d_grad := 0
37+
n14_d_grad[0]{=MAYBE UNINITIALIZED} = 0e-3 = (float)(0)
38+
# n40_d_grad := 0
39+
n40_d_grad[0]{=MAYBE UNINITIALIZED} = 0e-3 = (float)(0)
40+
# f_grad := 0
41+
f_grad[0]{=MAYBE UNINITIALIZED} = 0e-3 = (float)(0)
42+
COMMENT: end
43+
COMMENT: g bprop
44+
# f.grad[0] := fma(1, (-10 / (f[0] * f[0])), f.grad[0]);
45+
f_grad[0]{=MAYBE UNINITIALIZED} = -4e-3 = fmaf((float)(1), ((float)(-10) / (f[0]{=49000e-3} * f[0]{=49000e-3})), f_grad[0]{=0e-3})
46+
# f.grad[0] := (f.grad[0] + 0.5);
47+
f_grad[0]{=MAYBE UNINITIALIZED} = 495e-3 = (f_grad[0]{=-4e-3} + (float)(0.5))
48+
# n40_d.grad[0] := fma(-1, ((2 * e[0]) * f.grad[0]), n40_d.grad[0]);
49+
n40_d_grad[0]{=MAYBE UNINITIALIZED} = 6941e-3 = fmaf((float)(-1), (((float)(2) * e[0]{=-7000e-3}) * f_grad[0]{=495e-3}), n40_d_grad[0]{=0e-3})
50+
# n40_d.grad[0] := fma(3, (-1 * ((2 * e[0]) * f.grad[0])), n40_d.grad[0]);
51+
n40_d_grad[0]{=MAYBE UNINITIALIZED} = 27766e-3 = fmaf((float)(3), ((float)(-1) * (((float)(2) * e[0]{=-7000e-3}) * f_grad[0]{=495e-3})), n40_d_grad[0]{=6941e-3})
52+
# n14_d.grad[0] := (n14_d.grad[0] + n40_d.grad[0]);
53+
n14_d_grad[0]{=MAYBE UNINITIALIZED} = 27766e-3 = (n14_d_grad[0]{=0e-3} + n40_d_grad[0]{=27766e-3})
54+
# n14_d.grad[0] := fma(n40_d.grad[0], 2, n14_d.grad[0]);
55+
n14_d_grad[0]{=MAYBE UNINITIALIZED} = 83300e-3 = fmaf(n40_d_grad[0]{=27766e-3}, (float)(2), n14_d_grad[0]{=27766e-3})
56+
# a.grad[0] := fma(n14_d.grad[0], b[0], a.grad[0]);
57+
a_grad[0]{=MAYBE UNINITIALIZED} = 166600e-3 = fmaf(n14_d_grad[0]{=83300e-3}, b[0]{=2000e-3}, a_grad[0]{=0e-3})
58+
# b.grad[0] := fma(a[0], n14_d.grad[0], b.grad[0]);
59+
b_grad[0]{=MAYBE UNINITIALIZED} = -333201e-3 = fmaf(a[0]{=-4000e-3}, n14_d_grad[0]{=83300e-3}, b_grad[0]{=0e-3})
60+
# b.grad[0] := fma((3 * (b[0] * b[0])), n14_d.grad[0], b.grad[0]);
61+
b_grad[0]{=MAYBE UNINITIALIZED} = 666402e-3 = fmaf(((float)(3) * (b[0]{=2000e-3} * b[0]{=2000e-3})), n14_d_grad[0]{=83300e-3}, b_grad[0]{=-333201e-3})
62+
# b.grad[0] := (b.grad[0] + relu_gate(n31[0], n40_d.grad[0]));
63+
b_grad[0]{=MAYBE UNINITIALIZED} = 666402e-3 = (b_grad[0]{=666402e-3} + (n31[0]{=-2000e-3} > 0.0 ? n40_d_grad[0]{=27766e-3} : 0.0))
64+
# a.grad[0] := (a.grad[0] + relu_gate(n31[0], n40_d.grad[0]));
65+
a_grad[0]{=MAYBE UNINITIALIZED} = 166600e-3 = (a_grad[0]{=166600e-3} + (n31[0]{=-2000e-3} > 0.0 ? n40_d_grad[0]{=27766e-3} : 0.0))
66+
# b.grad[0] :=$ (b.grad[0] + relu_gate(n42[0], (-1 * ((2 * e[0]) * f.grad[0]))));
67+
b_grad[0]{=MAYBE UNINITIALIZED} = 673344e-3 = (b_grad[0]{=666402e-3} + (n42[0]{=6000e-3} > 0.0 ? ((float)(-1) * (((float)(2) * e[0]{=-7000e-3}) * f_grad[0]{=495e-3})) : 0.0))
68+
# a.grad[0] :=$ (a.grad[0] - relu_gate(n42[0], (-1 * ((2 * e[0]) * f.grad[0]))));
69+
a_grad[0]{=MAYBE UNINITIALIZED} = 159658e-3 = (a_grad[0]{=166600e-3} - (n42[0]{=6000e-3} > 0.0 ? ((float)(-1) * (((float)(2) * e[0]{=-7000e-3}) * f_grad[0]{=495e-3})) : 0.0))
70+
# n19_c.grad[0] := fma((2 * e[0]), f.grad[0], n19_c.grad[0]);
71+
n19_c_grad[0]{=MAYBE UNINITIALIZED} = -6941e-3 = fmaf(((float)(2) * e[0]{=-7000e-3}), f_grad[0]{=495e-3}, n19_c_grad[0]{=0e-3})
72+
# n19_c.grad[0] := fma((2 * e[0]), f.grad[0], n19_c.grad[0]);
73+
n19_c_grad[0]{=MAYBE UNINITIALIZED} = -13883e-3 = fmaf(((float)(2) * e[0]{=-7000e-3}), f_grad[0]{=495e-3}, n19_c_grad[0]{=-6941e-3})
74+
# n4_c.grad[0] := (n4_c.grad[0] + n19_c.grad[0]);
75+
n4_c_grad[0]{=MAYBE UNINITIALIZED} = -13883e-3 = (n4_c_grad[0]{=0e-3} + n19_c_grad[0]{=-13883e-3})
76+
# n4_c.grad[0] := (n4_c.grad[0] + n19_c.grad[0]);
77+
n4_c_grad[0]{=MAYBE UNINITIALIZED} = -27766e-3 = (n4_c_grad[0]{=-13883e-3} + n19_c_grad[0]{=-13883e-3})
78+
# a.grad[0] := (a.grad[0] + n4_c.grad[0]);
79+
a_grad[0]{=MAYBE UNINITIALIZED} = 131892e-3 = (a_grad[0]{=159658e-3} + n4_c_grad[0]{=-27766e-3})
80+
# b.grad[0] := (b.grad[0] + n4_c.grad[0]);
81+
b_grad[0]{=MAYBE UNINITIALIZED} = 645577e-3 = (b_grad[0]{=673344e-3} + n4_c_grad[0]{=-27766e-3})
82+
# a.grad[0] := fma(-1, ((2 * e[0]) * f.grad[0]), a.grad[0]);
83+
a_grad[0]{=MAYBE UNINITIALIZED} = 138833e-3 = fmaf((float)(-1), (((float)(2) * e[0]{=-7000e-3}) * f_grad[0]{=495e-3}), a_grad[0]{=131892e-3})
84+
COMMENT: end
85+
COMMENT: end

0 commit comments

Comments
 (0)