Kbd small finch logic changes #2088
Annotations
3 errors, 1 warning, and 1 notice
Run julia-actions/julia-docdeploy@v1:
docs/src/reference/internals/virtualization.md#L65
doctest failure in src/reference/internals/virtualization.md:65-76
```jldoctest example1
julia> using Finch: @finch_program_instance
julia> prgm = Finch.@finch_program_instance (C .= 0; for i=_; C[i] = A[i] * B[i] end; return C)
Finch program instance: begin
tag(C, Tensor(SparseList(Element(0)))) .= 0
for i = Dimensionless()
tag(C, Tensor(SparseList(Element(0))))[tag(i, i)] <<initwrite>>= tag(*, *)(tag(A, Tensor(SparseList(Element(0))))[tag(i, i)], tag(B, Tensor(Dense(Element(0))))[tag(i, i)])
end
return (tag(C, Tensor(SparseList(Element(0)))))
end
```
Subexpression:
prgm = Finch.@finch_program_instance (C .= 0; for i=_; C[i] = A[i] * B[i] end; return C)
Evaluated output:
Finch program instancequote
C .= 0
for i = _
C[i] << initwrite >>= A[i] * B[i]
end
return C
end
Expected output:
Finch program instance: begin
tag(C, Tensor(SparseList(Element(0)))) .= 0
for i = Dimensionless()
tag(C, Tensor(SparseList(Element(0))))[tag(i, i)] <<initwrite>>= tag(*, *)(tag(A, Tensor(SparseList(Element(0))))[tag(i, i)], tag(B, Tensor(Dense(Element(0))))[tag(i, i)])
end
return (tag(C, Tensor(SparseList(Element(0)))))
end
diff =
Warning: Diff output requires color.
Finch program instance: begin
tag(C, Tensor(SparseList(Element(0)))) instancequote
C .= 0
0
for i = Dimensionless()
tag(C, Tensor(SparseList(Element(0))))[tag(i, i)] <<initwrite>>= tag(*, *)(tag(A, Tensor(SparseList(Element(0))))[tag(i, i)], tag(B, Tensor(Dense(Element(0))))[tag(i, i)])
end
_
C[i] << initwrite >>= A[i] * B[i]
end
return (tag(C, Tensor(SparseList(Element(0)))))
C
end
|
Run julia-actions/julia-docdeploy@v1:
docs/src/reference/internals/virtualization.md#L140
doctest failure in src/reference/internals/virtualization.md:140-235
```jldoctest example2; setup = :(using Finch)
julia> A = Tensor(SparseList(Element(0)), [0, 2, 0, 0, 3]);
julia> B = Tensor(Dense(Element(0)), [11, 12, 13, 14, 15]);
julia> s = Scalar(0);
julia> typeof(A)
Tensor{SparseListLevel{Int64, Vector{Int64}, Vector{Int64}, ElementLevel{0, Int64, Int64, Vector{Int64}}}}
julia> typeof(B)
Tensor{DenseLevel{Int64, ElementLevel{0, Int64, Int64, Vector{Int64}}}}
julia> inst = Finch.@finch_program_instance begin
for i = _
s[] += A[i]
end
end
Finch program instance: for i = Dimensionless()
tag(s, Scalar{0, Int64})[] <<tag(+, +)>>= tag(A, Tensor(SparseList(Element(0))))[tag(i, i)]
end
julia> typeof(inst)
Finch.FinchNotation.LoopInstance{Finch.FinchNotation.IndexInstance{:i}, Finch.FinchNotation.Dimensionless, Finch.FinchNotation.AssignInstance{Finch.FinchNotation.AccessInstance{Finch.FinchNotation.TagInstance{Finch.FinchNotation.VariableInstance{:s}, Scalar{0, Int64}}, Finch.FinchNotation.LiteralInstance{Finch.FinchNotation.Updater()}, Tuple{}}, Finch.FinchNotation.TagInstance{Finch.FinchNotation.VariableInstance{:+}, Finch.FinchNotation.LiteralInstance{+}}, Finch.FinchNotation.AccessInstance{Finch.FinchNotation.TagInstance{Finch.FinchNotation.VariableInstance{:A}, Tensor{SparseListLevel{Int64, Vector{Int64}, Vector{Int64}, ElementLevel{0, Int64, Int64, Vector{Int64}}}}}, Finch.FinchNotation.LiteralInstance{Finch.FinchNotation.Reader()}, Tuple{Finch.FinchNotation.TagInstance{Finch.FinchNotation.VariableInstance{:i}, Finch.FinchNotation.IndexInstance{:i}}}}}}
julia> Finch.virtualize(Finch.JuliaContext(), :inst, typeof(inst))
Finch program: for i = virtual(Finch.FinchNotation.Dimensionless)
tag(s, virtual(Finch.VirtualScalar))[] <<tag(+, +)>>= tag(A, virtual(Finch.VirtualFiber{Finch.VirtualSparseListLevel}))[tag(i, i)]
end
julia> @finch_code begin
for i = _
s[] += A[i]
end
end
quote
s = (ex.bodies[1]).body.lhs.tns.bind
s_val = s.val
A_lvl = (ex.bodies[1]).body.rhs.tns.bind.lvl
A_lvl_ptr = A_lvl.ptr
A_lvl_idx = A_lvl.idx
A_lvl_val = A_lvl.lvl.val
A_lvl_q = A_lvl_ptr[1]
A_lvl_q_stop = A_lvl_ptr[1 + 1]
if A_lvl_q < A_lvl_q_stop
A_lvl_i1 = A_lvl_idx[A_lvl_q_stop - 1]
else
A_lvl_i1 = 0
end
phase_stop = min(A_lvl_i1, A_lvl.shape)
if phase_stop >= 1
if A_lvl_idx[A_lvl_q] < 1
A_lvl_q = Finch.scansearch(A_lvl_idx, 1, A_lvl_q, A_lvl_q_stop - 1)
end
while true
A_lvl_i = A_lvl_idx[A_lvl_q]
if A_lvl_i < phase_stop
A_lvl_2_val = A_lvl_val[A_lvl_q]
s_val = A_lvl_2_val + s_val
A_lvl_q += 1
else
phase_stop_3 = min(phase_stop, A_lvl_i)
if A_lvl_i == phase_stop_3
A_lvl_2_val = A_lvl_val[A_lvl_q]
s_val += A_lvl_2_val
A_lvl_q += 1
end
break
end
end
end
result = ()
s.val = s_val
result
end
julia> @finch_code begin
for i = _
s[] += B[i]
end
end
quote
s = (ex.bodies[1]).body.lhs.tns.bind
s_val = s.val
B_lvl = (ex.bodies[1]).body.rhs.tns.bind.lvl
B_lvl_val = B_lvl.lvl.val
for i_3 = 1:B_lvl.shape
B_lvl_q = (1 - 1) * B_lvl.shape + i_3
B_lvl_2_val = B_lvl_val[B_lvl_q]
s_val = B_lvl_2_val + s_val
end
result = ()
s.val = s_val
result
end
```
Subexpression:
inst = Finch.@finch_program_instance begin
for i = _
s[] += A[i]
end
end
Evaluated output:
Finch program instance:(for i = _
s[] << (+) >>= A[i]
end)
Expected output:
Finch program instance: for i = Dimensionless()
tag(s, Scalar{0, Int64})[] <<tag(+, +)>>= tag(A, Tensor(SparseList(Element(0))))[tag(i, i)]
end
diff =
Warning: Diff output requires color.
Finch program instance: for instance:(for i = Dimensionless(
|
Run julia-actions/julia-docdeploy@v1
Process completed with exit code 1.
|
The following actions use a deprecated Node.js version and will be forced to run on node20: actions/checkout@v3, julia-actions/setup-julia@v1. For more info: https://github.blog/changelog/2024-03-07-github-actions-all-actions-will-run-on-node20-instead-of-node16-by-default/
|
Run julia-actions/julia-buildpkg@v1
Consider using `julia-actions/cache` to speed up runs https://github.com/julia-actions/cache. To ignore, set input `ignore-no-cache: true`
|
Loading