Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BatchDuplicated fails with RefValues #1997

Open
mhauru opened this issue Oct 22, 2024 · 8 comments
Open

BatchDuplicated fails with RefValues #1997

mhauru opened this issue Oct 22, 2024 · 8 comments

Comments

@mhauru
Copy link
Contributor

mhauru commented Oct 22, 2024

Feel free to rename the issue to be more informative, I don't really understand what's going on here.

MWE:

julia> import Enzyme; using Distributions

julia> func = x -> logpdf(reshape(product_distribution([Normal(), Uniform()]), 1, 2), x)

#27 (generic function with 1 method)

julia> Enzyme.gradient(Enzyme.Forward, Enzyme.Const(func), [2.1 0.7])
ERROR: MethodError: no method matching EnzymeCore.BatchDuplicated(::Normal{Float64}, ::Tuple{Base.RefValue{Normal{Float64}}, Base.RefValue{Normal{Float64}}})

Closest candidates are:
  EnzymeCore.BatchDuplicated(::T1, ::Tuple{Vararg{T1, N}}) where {T1, N}
   @ EnzymeCore ~/projects/Enzyme.jl/lib/EnzymeCore/src/EnzymeCore.jl:134
  EnzymeCore.BatchDuplicated(::T1, ::Tuple{Vararg{T1, N}}, ::Bool) where {T1, N}
   @ EnzymeCore ~/projects/Enzyme.jl/lib/EnzymeCore/src/EnzymeCore.jl:134

Stacktrace:
  [1] runtime_generic_fwd(activity::Type{…}, runtimeActivity::Val{…}, width::Val{…}, RT::Val{…}, f::typeof(logpdf), df::Nothing, df_2::Nothing, primal_1::Normal{…}, shadow_1_1::Base.RefValue{…}, shadow_1_2::Base.RefValue{…}, primal_2::Float64, shadow_2_1::Float64, shadow_2_2::Float64)
    @ Enzyme.Compiler ~/projects/Enzyme.jl/src/rules/jitrules.jl:170
  [2] #533
    @ ~/.julia/packages/Distributions/nmUhn/src/multivariate/product.jl:46
  [3] _mapreduce
    @ ./reduce.jl:440
  [4] _mapreduce_dim
    @ ./reducedim.jl:365 [inlined]
  [5] mapreduce
    @ ./reducedim.jl:357 [inlined]
  [6] _sum
    @ ./reducedim.jl:1015 [inlined]
  [7] sum
    @ ./reducedim.jl:1011 [inlined]
  [8] _logpdf
    @ ~/.julia/packages/Distributions/nmUhn/src/multivariate/product.jl:46
  [9] logpdf
    @ ~/.julia/packages/Distributions/nmUhn/src/common.jl:263 [inlined]
 [10] __logpdf
    @ ~/.julia/packages/Distributions/nmUhn/src/reshaped.jl:55 [inlined]
 [11] _logpdf
    @ ~/.julia/packages/Distributions/nmUhn/src/reshaped.jl:52 [inlined]
 [12] logpdf
    @ ~/.julia/packages/Distributions/nmUhn/src/common.jl:263 [inlined]
 [13] #27
    @ ./REPL[126]:1 [inlined]
 [14] fwddiffe2julia__27_208218wrap
    @ ./REPL[126]:0
 [15] macro expansion
    @ ~/projects/Enzyme.jl/src/compiler.jl:8148 [inlined]
 [16] enzyme_call
    @ ~/projects/Enzyme.jl/src/compiler.jl:7714 [inlined]
 [17] ForwardModeThunk
    @ ~/projects/Enzyme.jl/src/compiler.jl:7503 [inlined]
 [18] autodiff
    @ ~/projects/Enzyme.jl/src/Enzyme.jl:647 [inlined]
 [19] macro expansion
    @ ~/projects/Enzyme.jl/src/Enzyme.jl:2068 [inlined]
 [20] gradient(::EnzymeCore.ForwardMode{…}, ::EnzymeCore.Const{…}, ::Matrix{…}; chunk::Nothing, shadows::Tuple{…})
    @ Enzyme ~/projects/Enzyme.jl/src/Enzyme.jl:1970
 [21] gradient(::EnzymeCore.ForwardMode{…}, ::EnzymeCore.Const{…}, ::Matrix{…})
    @ Enzyme ~/projects/Enzyme.jl/src/Enzyme.jl:1970
 [22] top-level scope
    @ REPL[128]:1
Some type information was truncated. Use `show(err)` to see complete types.
@wsmoses
Copy link
Member

wsmoses commented Oct 22, 2024

This is quite confusing, a further reduction would be helpful here

@mhauru
Copy link
Contributor Author

mhauru commented Oct 23, 2024

Would like to help, but unfortunately I'm too busy right now to find time to minimise further. Open for grabs for anyone to do it.

@wsmoses
Copy link
Member

wsmoses commented Nov 16, 2024

@penelopeysm @yebai or @willtebbutt any cycles to help here?

@yebai
Copy link

yebai commented Nov 16, 2024

unfortunately, I don't know how to debug this.

@wsmoses
Copy link
Member

wsmoses commented Nov 16, 2024

@mhauru or @penelopeysm may be able to provide tips, but essentially this example needs to be reduced in complexity

@yebai
Copy link

yebai commented Nov 16, 2024

I'm not sure whether they can help in the near term, but this looks like a fairly minimal case already. Can anyone from the Enzyme team help you?

@wsmoses
Copy link
Member

wsmoses commented Nov 16, 2024

I don’t think so. If you want this fixed I think you guys are going to need to help reduce it

@yebai
Copy link

yebai commented Nov 16, 2024

I think more testing infrastructure and user-friendly error messages are important for Enzyme to become mature and maintainable. Otherwise, the community risks abandoning Enzyme due to the high bar of reporting bugs.

Cc @willtebbutt who might have thoughts on this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants