10000 Access to undefined reference · Issue #513 · chalk-lab/Mooncake.jl · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
Access to undefined reference #513
Closed
@mhauru

Description

@mhauru

Repro:

module MWE

using DynamicPPL
using Distributions
using Mooncake
using ADTypes
using LogDensityProblems

@model function lda(K, d, w)
    V = length(unique(w))
    D = length(unique(d))
    N = length(d)
    @assert length(w) == N

    ϕ = Vector{Vector{Real}}(undef, K)
    for i in 1:K
        ϕ[i] ~ Dirichlet(ones(V) / V)
    end

    θ = Vector{Vector{Real}}(undef, D)
    for i in 1:D
        θ[i] ~ Dirichlet(ones(K) / K)
    end

    z = zeros(Int, N)

    for i in 1:N
        z[i] ~ Categorical(θ[d[i]])
        w[i] ~ Categorical(ϕ[d[i]])
    end
    return (; ϕ=ϕ, θ=θ, z=z)
end

model = begin
    w = [1, 2, 3, 2, 1, 1]
    d = [1, 1, 1, 2, 2, 2]
    lda(2, d, w)
end
vi = DynamicPPL.link(VarInfo(model), model)
x = randn(length(vi[:]))

ldf_mooncake = LogDensityFunction(
    model, vi, DefaultContext(); adtype=AutoMooncake(; config=nothing)
)

LogDensityProblems.logdensity_and_gradient(ldf_mooncake, x)

end
ERROR: LoadError: UndefRefError: access to undefined reference
Stacktrace:
  [1] getindex
    @ ./essentials.jl:13 [inlined]
  [2] getindex
    @ ./subarray.jl:323 [inlined]
  [3] _broadcast_getindex
    @ ./broadcast.jl:675 [inlined]
  [4] _getindex
    @ ./broadcast.jl:705 [inlined]
  [5] _broadcast_getindex
    @ ./broadcast.jl:681 [inlined]
  [6] getindex
    @ ./broadcast.jl:636 [inlined]
  [7] macro expansion
    @ ./broadcast.jl:1004 [inlined]
  [8] macro expansion
    @ ./simdloop.jl:77 [inlined]
  [9] copyto!
    @ ./broadcast.jl:1003 [inlined]
 [10] copyto!
    @ ./broadcast.jl:956 [inlined]
 [11] materialize!
    @ ./broadcast.jl:914 [inlined]
 [12] materialize!
    @ ./broadcast.jl:911 [inlined]
 [13] (::Mooncake.var"#unsafe_copyto_pb!!#638"{…})(::Mooncake.NoRData)
    @ Mooncake ~/.julia/packages/Mooncake/hkc4e/src/rrules/array_legacy.jl:265
 [14] _copyto_impl!
    @ ./array.jl:372 [inlined]
 [15] (::Tuple{…})(none::Mooncake.NoRData)
    @ Base.Experimental ./<missing>:0
 [16] Pullback
    @ ~/.julia/packages/Mooncake/hkc4e/src/interpreter/s2s_reverse_mode_ad.jl:916 [inlined]
 [17] _setindex
    @ ~/.julia/packages/BangBang/VnHxZ/src/NoBang/base.jl:130 [inlined]
 [18] (::Tuple{…})(none::Mooncake.NoRData)
    @ Base.Experimental ./<missing>:0
 [19] Pullback
    @ ~/.julia/packages/Mooncake/hkc4e/src/interpreter/s2s_reverse_mode_ad.jl:916 [inlined]
 [20] lda
    @ /tmp/mwe2.jl:9 [inlined]
 [21] (::Tuple{…})(none::Union{…})
    @ Base.Experimental ./<missing>:0
 [22] Pullback
    @ ~/.julia/packages/Mooncake/hkc4e/src/interpreter/s2s_reverse_mode_ad.jl:916 [inlined]
 [23] (::Mooncake.RRuleWrapperPb{Mooncake.Pullback{…}, Mooncake.LazyZeroRData{…}})(dy::Mooncake.NoRData)
    @ Mooncake ~/.julia/packages/Mooncake/hkc4e/src/interpreter/s2s_reverse_mode_ad.jl:299
 [24] logdensity_at
    @ ~/.julia/packages/DynamicPPL/3OIqq/src/logdensityfunction.jl:183 [inlined]
 [25] (::Tuple{…})(none::Float64)
    @ Base.Experimental ./<missing>:0
 [26] Pullback
    @ ~/.julia/packages/Mooncake/hkc4e/src/interpreter/s2s_reverse_mode_ad.jl:916 [inlined]
 [27] __value_and_gradient!!(::Mooncake.DerivedRule{…}, ::Mooncake.CoDual{…}, ::Mooncake.CoDual{…}, ::Mooncake.CoDual{…}, ::Mooncake.CoDual{…}, ::Mooncake.CoDual{…})
    @ Mooncake ~/.julia/packages/Mooncake/hkc4e/src/interface.jl:85
 [28] value_and_gradient!!
    @ ~/.julia/packages/Mooncake/hkc4e/src/interface.jl:300 [inlined]
 [29] value_and_gradient(::typeof(DynamicPPL.logdensity_at), ::DifferentiationInterfaceMooncakeExt.MooncakeGradientPrep{…}, ::AutoMooncake{…}, ::Vector{…}, ::Constant{…}, ::Constant{…}, ::Constant{…})
    @ DifferentiationInterfaceMooncakeExt ~/.julia/packages/DifferentiationInterface/qrWdQ/ext/DifferentiationInterfaceMooncakeExt/onearg.jl:130
 [30] prepare_gradient(::typeof(DynamicPPL.logdensity_at), ::AutoMooncake{…}, ::Vector{…}, ::Constant{…}, ::Constant{…}, ::Constant{…})
    @ DifferentiationInterfaceMooncakeExt ~/.julia/packages/DifferentiationInterface/qrWdQ/ext/DifferentiationInterfaceMooncakeExt/onearg.jl:123
 [31] _
    @ ~/.julia/packages/DynamicPPL/3OIqq/src/logdensityfunction.jl:131 [inlined]
 [32] top-level scope
    @ /tmp/mwe2.jl:42
 [33] include(fname::String)
    @ Base.MainInclude ./client.jl:494
 [34] top-level scope
    @ REPL[34]:1
julia> versioninfo()
Julia Version 1.10.8
Commit 4c16ff44be8 (2025-01-22 10:06 UTC)
Build Info:
  Official https://julialang.org/ release
Platform Info:
  OS: macOS (arm64-apple-darwin24.0.0)
  CPU: 10 × Apple M1 Pro
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-15.0.7 (ORCJIT, apple-m1)
Threads: 1 default, 0 interactive, 1 GC (on 8 virtual cores)

Mooncake v0.4.103

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0