Skip to content

Result of @report_opt depends on whether there were previous @report_opt calls #352

@nsajko

Description

@nsajko

Firstly: not sure how good the issue title is, probably you'll be able to think of a better one.

I wanted to test a function in my package-to-be with JET, however there's some weird behavior.

I have a file like this (meant to be executed from the source directory of my package):

import JET
push!(LOAD_PATH, "./")
import RealFactorizationFromComplexRoots
const R = RealFactorizationFromComplexRoots

const roots = Complex{BigFloat}[]

function main()
  # show(JET.@report_opt R.squared_error_with_indices(
  #   roots,
  #   (Int8[], (Int8[], Int8[]))))

  # show(JET.@report_opt R.min_error(
  #   roots,
  #   (Int8[], Int8[])))

  # show(JET.@report_opt R.RealFactorization_impl(
  #   roots,
  #   (Int8[], Int8[], Int8[])))

  show(JET.@report_opt R.RealFactorization(
    roots))
end

main()

So there's a single JET.@report_opt call, and three more that are commented out. When the file is executed as-is with Julia 1.8.0-rc1, JET produces ten optimization errors. But if the other three calls are commented out, JET instead proclaims "No errors detected" four times.

You can find the RealFactorizationFromComplexRoots package (just a single file) here: https://gitlab.com/nsajko/RealFactorizationFromComplexRoots.jl

This is the JET output produced when the file above is executed as-is:

═════ 10 possible errors found ═════
┌ @ /home/nsajko/src/gitlab.com/nsajko/RealFactorizationFromComplexRoots.jl/RealFactorizationFromComplexRoots.jl:195 RealFactorizationFromComplexRoots.RealFactorization_impl(roots, RealFactorizationFromComplexRoots.partition_by_sign(roots))
│┌ @ /home/nsajko/src/gitlab.com/nsajko/RealFactorizationFromComplexRoots.jl/RealFactorizationFromComplexRoots.jl:166 RealFactorizationFromComplexRoots.min_error(roots, RealFactorizationFromComplexRoots.minmax_by_length(Base.getindex(part_ind, RealFactorizationFromComplexRoots.:(1, 2))))
││┌ @ /home/nsajko/src/gitlab.com/nsajko/RealFactorizationFromComplexRoots.jl/RealFactorizationFromComplexRoots.jl:126 Core.kwfunc(RealFactorizationFromComplexRoots.minimum)(Core.apply_type(Core.NamedTuple, (:init,))(Core.tuple(RealFactorizationFromComplexRoots.ComparisonHelper(_(RealFactorizationFromComplexRoots.Inf), Core.tuple(Base.getindex(RealFactorizationFromComplexRoots.Int8), Core.tuple(Base.getindex(RealFactorizationFromComplexRoots.Int8), Base.getindex(RealFactorizationFromComplexRoots.Int8)))))), RealFactorizationFromComplexRoots.minimum, #7, Combinatorics.permutations(Base.getindex(ind, 2), RealFactorizationFromComplexRoots.length(Base.getindex(ind, 1))))
│││┌ @ reduce.jl:717 Base.#minimum#272(kw..., _3, f, a)
││││┌ @ reduce.jl:717 Core.kwfunc(Base.mapreduce)(Base.merge(Base.NamedTuple(), kw), Base.mapreduce, f, Base.min, a)
│││││┌ @ reduce.jl:294 Base.#mapreduce#263(kw..., _3, f, op, itr)
││││││┌ @ reduce.jl:294 Core.kwfunc(Base.mapfoldl)(Base.merge(Base.NamedTuple(), kw), Base.mapfoldl, f, op, itr)
│││││││┌ @ reduce.jl:162 Base.#mapfoldl#259(init, _3, f, op, itr)
││││││││┌ @ reduce.jl:162 Base.mapfoldl_impl(f, op, init, itr)
│││││││││┌ @ reduce.jl:44 Base.foldl_impl(op′, nt, itr′)
││││││││││┌ @ reduce.jl:48 v = Base._foldl_impl(op, nt, itr)
│││││││││││┌ @ reduce.jl:58 v = op(init, Base.getindex(y, 1))
││││││││││││┌ @ reduce.jl:95 Base.getproperty(op, :f)(x)
│││││││││││││┌ @ /home/nsajko/src/gitlab.com/nsajko/RealFactorizationFromComplexRoots.jl/RealFactorizationFromComplexRoots.jl:126 RealFactorizationFromComplexRoots.squared_error_with_indices(Core.getfield(#self#, Symbol("#7#roots")), RealFactorizationFromComplexRoots.partitioned_indices(Core.getfield(#self#, Symbol("#8#ind")), perm))
││││││││││││││┌ @ /home/nsajko/src/gitlab.com/nsajko/RealFactorizationFromComplexRoots.jl/RealFactorizationFromComplexRoots.jl:117 RealFactorizationFromComplexRoots.squared_error(roots, ind)
│││││││││││││││┌ @ /home/nsajko/src/gitlab.com/nsajko/RealFactorizationFromComplexRoots.jl/RealFactorizationFromComplexRoots.jl:88 RealFactorizationFromComplexRoots.squared_error_deg1(roots, Base.getindex(ind, 1))
││││││││││││││││┌ @ /home/nsajko/src/gitlab.com/nsajko/RealFactorizationFromComplexRoots.jl/RealFactorizationFromComplexRoots.jl:79 Core.kwfunc(RealFactorizationFromComplexRoots.sum)(Core.apply_type(Core.NamedTuple, (:init,))(Core.tuple(RealFactorizationFromComplexRoots.zero(_))), RealFactorizationFromComplexRoots.sum, #5, RealFactorizationFromComplexRoots.view(v, ind))
│││││││││││││││││┌ @ reducedim.jl:995 Base.#sum#773(dims, kw..., _3, f, a)
││││││││││││││││││┌ @ reducedim.jl:995 Core.kwfunc(Base._sum)(Base.merge(Base.NamedTuple(), kw), Base._sum, f, a, dims)
│││││││││││││││││││┌ @ reducedim.jl:999 Base.#_sum#775(kw..., _3, f, a, _6)
││││││││││││││││││││┌ @ reducedim.jl:999 Core.kwfunc(Base.mapreduce)(Base.merge(Base.NamedTuple(), kw), Base.mapreduce, f, Base.add_sum, a)
│││││││││││││││││││││┌ @ reducedim.jl:357 Base.#mapreduce#765(dims, init, _3, f, op, A)
││││││││││││││││││││││┌ @ reducedim.jl:357 Base._mapreduce_dim(f, op, init, A, dims)
│││││││││││││││││││││││┌ @ reducedim.jl:362 Base.mapfoldl_impl(f, op, nt, A)
││││││││││││││││││││││││┌ @ reduce.jl:42 Base.mapfoldl_impl(::RealFactorizationFromComplexRoots.var"#5#6", ::typeof(Base.add_sum), ::BigFloat, ::SubArray{Complex{BigFloat}, 1, Vector{Complex{BigFloat}}, Tuple{Vector{Int8}}, false})
│││││││││││││││││││││││││ failed to optimize: Base.mapfoldl_impl(::RealFactorizationFromComplexRoots.var"#5#6", ::typeof(Base.add_sum), ::BigFloat, ::SubArray{Complex{BigFloat}, 1, Vector{Complex{BigFloat}}, Tuple{Vector{Int8}}, false})
││││││││││││││││││││││││└────────────────
││││││││││││││││┌ @ /home/nsajko/src/gitlab.com/nsajko/RealFactorizationFromComplexRoots.jl/RealFactorizationFromComplexRoots.jl:79 RealFactorizationFromComplexRoots.squared_error_deg1(::Vector{Complex{BigFloat}}, ::Vector{Int8})
│││││││││││││││││ failed to optimize: RealFactorizationFromComplexRoots.squared_error_deg1(::Vector{Complex{BigFloat}}, ::Vector{Int8})
││││││││││││││││└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────
│││││││││││││││┌ @ /home/nsajko/src/gitlab.com/nsajko/RealFactorizationFromComplexRoots.jl/RealFactorizationFromComplexRoots.jl:88 RealFactorizationFromComplexRoots.squared_error_deg2(roots, Base.getindex(ind, 2))
││││││││││││││││┌ @ /home/nsajko/src/gitlab.com/nsajko/RealFactorizationFromComplexRoots.jl/RealFactorizationFromComplexRoots.jl:71 Core.kwfunc(RealFactorizationFromComplexRoots.sum)(Core.apply_type(Core.NamedTuple, (:init,))(Core.tuple(RealFactorizationFromComplexRoots.zero(_))), RealFactorizationFromComplexRoots.sum, #3, RealFactorizationFromComplexRoots.zip(Core.tuple(RealFactorizationFromComplexRoots.view(v, Base.getindex(ind, 1)), RealFactorizationFromComplexRoots.view(v, Base.getindex(ind, 2)))...))
│││││││││││││││││┌ @ reduce.jl:520 Base.#sum#266(kw..., _3, f, a)
││││││││││││││││││┌ @ reduce.jl:520 Core.kwfunc(Base.mapreduce)(Base.merge(Base.NamedTuple(), kw), Base.mapreduce, f, Base.add_sum, a)
│││││││││││││││││││┌ @ reduce.jl:294 Base.#mapreduce#263(kw..., _3, f, op, itr)
││││││││││││││││││││┌ @ reduce.jl:294 Base.merge(Base.NamedTuple(), kw)
│││││││││││││││││││││┌ @ namedtuple.jl:313 Core.apply_type(Base.NamedTuple, Core.tuple(names...))(Core.tuple(vals...))
││││││││││││││││││││││┌ @ boot.jl:603 Core.apply_type(Core.NamedTuple, _, Core.typeof(args))(args)
│││││││││││││││││││││││┌ @ namedtuple.jl:96 _(args)
││││││││││││││││││││││││┌ @ tuple.jl:312 Base.convert(_, x)
│││││││││││││││││││││││││┌ @ essentials.jl:339 Base.Val(_)
││││││││││││││││││││││││││┌ @ essentials.jl:714 %1()
│││││││││││││││││││││││││││ runtime dispatch detected: %1::Type{Val{_A}} where _A()
││││││││││││││││││││││││││└─────────────────────
││││││││││││││││││││┌ @ reduce.jl:294 Base.mapfoldl(f, op, itr)
│││││││││││││││││││││┌ @ reduce.jl:162 Base.#mapfoldl#259(Base._InitialValue(), #self#, f, op, itr)
││││││││││││││││││││││┌ @ reduce.jl:162 Base.mapfoldl_impl(f, op, init, itr)
│││││││││││││││││││││││┌ @ reduce.jl:42 Base.mapfoldl_impl(::RealFactorizationFromComplexRoots.var"#3#4", ::typeof(Base.add_sum), ::Base._InitialValue, ::Base.Iterators.Zip{Tuple{SubArray{Complex{BigFloat}, 1, Vector{Complex{BigFloat}}, Tuple{Vector{Int8}}, false}, SubArray{Complex{BigFloat}, 1, Vector{Complex{BigFloat}}, Tuple{Vector{Int8}}, false}}})
││││││││││││││││││││││││ failed to optimize: Base.mapfoldl_impl(::RealFactorizationFromComplexRoots.var"#3#4", ::typeof(Base.add_sum), ::Base._InitialValue, ::Base.Iterators.Zip{Tuple{SubArray{Complex{BigFloat}, 1, Vector{Complex{BigFloat}}, Tuple{Vector{Int8}}, false}, SubArray{Complex{BigFloat}, 1, Vector{Complex{BigFloat}}, Tuple{Vector{Int8}}, false}}})
│││││││││││││││││││││││└────────────────
││││││││││││││││┌ @ /home/nsajko/src/gitlab.com/nsajko/RealFactorizationFromComplexRoots.jl/RealFactorizationFromComplexRoots.jl:71 RealFactorizationFromComplexRoots.squared_error_deg2(::Vector{Complex{BigFloat}}, ::Tuple{Vector{Int8}, Vector{Int8}})
│││││││││││││││││ failed to optimize: RealFactorizationFromComplexRoots.squared_error_deg2(::Vector{Complex{BigFloat}}, ::Tuple{Vector{Int8}, Vector{Int8}})
││││││││││││││││└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────
│││││││││││││││┌ @ /home/nsajko/src/gitlab.com/nsajko/RealFactorizationFromComplexRoots.jl/RealFactorizationFromComplexRoots.jl:88 RealFactorizationFromComplexRoots.squared_error(::Vector{Complex{BigFloat}}, ::Tuple{Vector{Int8}, Tuple{Vector{Int8}, Vector{Int8}}})
││││││││││││││││ failed to optimize: RealFactorizationFromComplexRoots.squared_error(::Vector{Complex{BigFloat}}, ::Tuple{Vector{Int8}, Tuple{Vector{Int8}, Vector{Int8}}})
│││││││││││││││└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────
││││││││││││││┌ @ /home/nsajko/src/gitlab.com/nsajko/RealFactorizationFromComplexRoots.jl/RealFactorizationFromComplexRoots.jl:117 RealFactorizationFromComplexRoots.squared_error_with_indices(::Vector{Complex{BigFloat}}, ::Tuple{Vector{Int8}, Tuple{Vector{Int8}, Vector{Int8}}})
│││││││││││││││ failed to optimize: RealFactorizationFromComplexRoots.squared_error_with_indices(::Vector{Complex{BigFloat}}, ::Tuple{Vector{Int8}, Tuple{Vector{Int8}, Vector{Int8}}})
││││││││││││││└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
│││││││││││││┌ @ /home/nsajko/src/gitlab.com/nsajko/RealFactorizationFromComplexRoots.jl/RealFactorizationFromComplexRoots.jl:126 (::RealFactorizationFromComplexRoots.var"#7#8"{Vector{Complex{BigFloat}}, Tuple{Vector{Int8}, Vector{Int8}}})(::Vector{Int8})
││││││││││││││ failed to optimize: (::RealFactorizationFromComplexRoots.var"#7#8"{Vector{Complex{BigFloat}}, Tuple{Vector{Int8}, Vector{Int8}}})(::Vector{Int8})
│││││││││││││└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
││││││││││││┌ @ reduce.jl:95 (::Base.MappingRF{RealFactorizationFromComplexRoots.var"#7#8"{Vector{Complex{BigFloat}}, Tuple{Vector{Int8}, Vector{Int8}}}, Base.BottomRF{typeof(min)}})(::RealFactorizationFromComplexRoots.ComparisonHelper{BigFloat, Tuple{Vector{Int8}, Tuple{Vector{Int8}, Vector{Int8}}}}, ::Vector{Int8})
│││││││││││││ failed to optimize: (::Base.MappingRF{RealFactorizationFromComplexRoots.var"#7#8"{Vector{Complex{BigFloat}}, Tuple{Vector{Int8}, Vector{Int8}}}, Base.BottomRF{typeof(min)}})(::RealFactorizationFromComplexRoots.ComparisonHelper{BigFloat, Tuple{Vector{Int8}, Tuple{Vector{Int8}, Vector{Int8}}}}, ::Vector{Int8})
││││││││││││└────────────────
│││││││││││┌ @ reduce.jl:53 Base._foldl_impl(::Base.MappingRF{RealFactorizationFromComplexRoots.var"#7#8"{Vector{Complex{BigFloat}}, Tuple{Vector{Int8}, Vector{Int8}}}, Base.BottomRF{typeof(min)}}, ::RealFactorizationFromComplexRoots.ComparisonHelper{BigFloat, Tuple{Vector{Int8}, Tuple{Vector{Int8}, Vector{Int8}}}}, ::Combinatorics.Permutations{Vector{Int8}})
││││││││││││ failed to optimize: Base._foldl_impl(::Base.MappingRF{RealFactorizationFromComplexRoots.var"#7#8"{Vector{Complex{BigFloat}}, Tuple{Vector{Int8}, Vector{Int8}}}, Base.BottomRF{typeof(min)}}, ::RealFactorizationFromComplexRoots.ComparisonHelper{BigFloat, Tuple{Vector{Int8}, Tuple{Vector{Int8}, Vector{Int8}}}}, ::Combinatorics.Permutations{Vector{Int8}})
│││││││││││└────────────────

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions