Dataflow Bug #1098
Annotations
3 errors
docs/src/performance.md#L228
doctest failure in src/performance.md:228-312
```jldoctest example1
@finch_code (C .= 0; for j=_, i=_; C[] += f(A[i, j], B[i, j]) end)
# output
quote
C = (ex.bodies[1]).tns.bind
A_lvl = ((ex.bodies[2]).body.body.rhs.args[1]).tns.bind.lvl
A_lvl_2 = A_lvl.lvl
A_lvl_ptr = A_lvl_2.ptr
A_lvl_idx = A_lvl_2.idx
A_lvl_2_val = A_lvl_2.lvl.val
B = ((ex.bodies[2]).body.body.rhs.args[2]).tns.bind
sugar_1 = size(B)
B_mode1_stop = sugar_1[1]
B_mode2_stop = sugar_1[2]
B_mode1_stop == A_lvl_2.shape || throw(DimensionMismatch("mismatched dimension limits ($(B_mode1_stop) != $(A_lvl_2.shape))"))
B_mode2_stop == A_lvl.shape || throw(DimensionMismatch("mismatched dimension limits ($(B_mode2_stop) != $(A_lvl.shape))"))
C_val = 0
for j_4 = 1:B_mode2_stop
sugar_2 = size(B)
B_mode1_stop = sugar_2[1]
A_lvl_q = (1 - 1) * A_lvl.shape + j_4
A_lvl_2_q = A_lvl_ptr[A_lvl_q]
A_lvl_2_q_stop = A_lvl_ptr[A_lvl_q + 1]
if A_lvl_2_q < A_lvl_2_q_stop
A_lvl_2_i1 = A_lvl_idx[A_lvl_2_q_stop - 1]
else
A_lvl_2_i1 = 0
end
phase_stop = min(B_mode1_stop, A_lvl_2_i1)
if phase_stop >= 1
i = 1
if A_lvl_idx[A_lvl_2_q] < 1
A_lvl_2_q = Finch.scansearch(A_lvl_idx, 1, A_lvl_2_q, A_lvl_2_q_stop - 1)
end
while true
A_lvl_2_i = A_lvl_idx[A_lvl_2_q]
if A_lvl_2_i < phase_stop
for i_6 = i:A_lvl_2_i - 1
val = B[i_6, j_4]
C_val = f(0.0, val) + C_val
end
A_lvl_3_val = A_lvl_2_val[A_lvl_2_q]
sugar_4 = size(B)
B_mode1_stop = sugar_4[1]
val = B[A_lvl_2_i, j_4]
C_val = C_val + f(A_lvl_3_val, val)
A_lvl_2_q += 1
i = A_lvl_2_i + 1
else
phase_stop_3 = min(A_lvl_2_i, phase_stop)
if A_lvl_2_i == phase_stop_3
for i_8 = i:phase_stop_3 - 1
val = B[i_8, j_4]
C_val = C_val + f(0.0, val)
end
A_lvl_3_val = A_lvl_2_val[A_lvl_2_q]
sugar_6 = size(B)
B_mode1_stop = sugar_6[1]
val = B[phase_stop_3, j_4]
C_val = C_val + f(A_lvl_3_val, val)
A_lvl_2_q += 1
else
for i_10 = i:phase_stop_3
val = B[i_10, j_4]
C_val = C_val + f(0.0, val)
end
end
i = phase_stop_3 + 1
break
end
end
end
phase_start_3 = max(1, 1 + A_lvl_2_i1)
if B_mode1_stop >= phase_start_3
for i_12 = phase_start_3:B_mode1_stop
val = B[i_12, j_4]
C_val = C_val + f(0.0, val)
end
end
end
(C = (Scalar){0.0, Float64}(C_val),)
end
```
Subexpression:
@finch_code (C .= 0; for j=_, i=_; C[] += f(A[i, j], B[i, j]) end)
Evaluated output:
quote
C = (ex.bodies[1]).tns.bind
A_lvl = ((ex.bodies[2]).body.body.rhs.args[1]).tns.bind.lvl
A_lvl_2 = A_lvl.lvl
A_lvl_ptr = A_lvl_2.ptr
A_lvl_idx = A_lvl_2.idx
A_lvl_2_val = A_lvl_2.lvl.val
B = ((ex.bodies[2]).body.body.rhs.args[2]).tns.bind
sugar_1 = size(B)
B_mode1_stop = sugar_1[1]
B_mode2_stop = sugar_1[2]
B_mode1_stop == A_lvl_2.shape || throw(DimensionMismatch("mismatched dimension limits ($(B_mode1_stop) != $(A_lvl_2.shape))"))
B_mode2_stop == A_lvl.shape || throw(DimensionMismatch("mismatched dimension limits ($(B_mode2_stop) != $(A_lvl.shape))"))
C_val = 0
for j_4 = 1:B_mode2_stop
sugar_2 = size(B)
B_mode1_stop = sugar_2[1]
B_mode2_stop = sugar_2[2]
|
docs/src/index.md#L61
doctest failure in src/index.md:61-79
```jldoctest example1; setup=:(using Finch; A = rand(5, 5); s = Scalar(0))
julia> @finch_code for i=_, j=_ ; s[] += A[i, j] end
quote
s = ex.body.body.lhs.tns.bind
s_val = s.val
A = ex.body.body.rhs.tns.bind
sugar_1 = size(A)
A_mode1_stop = sugar_1[1]
A_mode2_stop = sugar_1[2]
@warn "Performance Warning: non-concordant traversal of A[i, j] (hint: most arrays prefer column major or first index fast, run in fast mode to ignore this warning)"
for i_3 = 1:A_mode1_stop
for j_3 = 1:A_mode2_stop
val = A[i_3, j_3]
s_val = val + s_val
end
end
(s = (Scalar){0, Int64}(s_val),)
end
```
Subexpression:
@finch_code for i=_, j=_ ; s[] += A[i, j] end
Evaluated output:
quote
s = ex.body.body.lhs.tns.bind
s_val = s.val
A = ex.body.body.rhs.tns.bind
sugar_1 = size(A)
A_mode1_stop = sugar_1[1]
A_mode2_stop = sugar_1[2]
@warn "Performance Warning: non-concordant traversal of A[i, j] (hint: most arrays prefer column major or first index fast, run in fast mode to ignore this warning)"
for i_3 = 1:A_mode1_stop
for j_3 = 1:A_mode2_stop
sugar_3 = size(A)
A_mode1_stop = sugar_3[1]
A_mode2_stop = sugar_3[2]
val = A[i_3, j_3]
s_val = val + s_val
end
end
(s = (Scalar){0, Int64}(s_val),)
end
Expected output:
quote
s = ex.body.body.lhs.tns.bind
s_val = s.val
A = ex.body.body.rhs.tns.bind
sugar_1 = size(A)
A_mode1_stop = sugar_1[1]
A_mode2_stop = sugar_1[2]
@warn "Performance Warning: non-concordant traversal of A[i, j] (hint: most arrays prefer column major or first index fast, run in fast mode to ignore this warning)"
for i_3 = 1:A_mode1_stop
for j_3 = 1:A_mode2_stop
val = A[i_3, j_3]
s_val = val + s_val
end
end
(s = (Scalar){0, Int64}(s_val),)
end
diff =
Warning: Diff output requires color.
quote
s = ex.body.body.lhs.tns.bind
s_val = s.val
A = ex.body.body.rhs.tns.bind
sugar_1 = size(A)
A_mode1_stop = sugar_1[1]
A_mode2_stop = sugar_1[2]
@warn "Performance Warning: non-concordant traversal of A[i, j] (hint: most arrays prefer column major or first index fast, run in fast mode to ignore this warning)"
for i_3 = 1:A_mode1_stop
for j_3 = 1:A_mode2_stop
sugar_3 = size(A)
A_mode1_stop = sugar_3[1]
A_mode2_stop = sugar_3[2]
val = A[i_3, j_3]
s_val = val + s_val
end
end
(s = (Scalar){0, Int64}(s_val),)
end
|
|
The logs for this run have expired and are no longer available.
Loading