Skip to content

Commit 222091e

Browse files
committed
Fix for type-instability in findranges (#277)
TuringLang/Turing.jl#1661 With this PR: ```julia julia> using Turing, DynamicPPL, ReverseDiff julia> Turing.setadbackend(:reversediff); julia> @model function demo(x, ::Type{TV} = Vector{Float64}) where {TV} m = TV(undef, length(x)) m ~ MvNormal(length(x), 1.0) x ~ MvNormal(m, 1.0) end; julia> m = demo(randn(2)); julia> spl = DynamicPPL.Sampler(NUTS(0.65)) Sampler{NUTS{Turing.Core.ReverseDiffAD{false}, (), AdvancedHMC.DiagEuclideanMetric}}(NUTS{Turing.Core.ReverseDiffAD{false}, (), AdvancedHMC.DiagEuclideanMetric}(-1, 0.65, 10, 1000.0, 0.0), DynamicPPL.Selector(0x000f976df8fc2a48, :default, false)) julia> vi = DynamicPPL.VarInfo(m); julia> θ = vi[spl]; julia> new_vi = VarInfo(vi, spl, ReverseDiff.track(θ)); julia> eltype(new_vi, spl) # (✓) inference succeeds ReverseDiff.TrackedReal{Float64, Float64, ReverseDiff.TrackedArray{Float64, Float64, 1, Vector{Float64}, Vector{Float64}}} ```
1 parent 6c60c3b commit 222091e

File tree

2 files changed

+7
-2
lines changed

2 files changed

+7
-2
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name = "DynamicPPL"
22
uuid = "366bfd00-2699-11ea-058f-f148b4cae6d8"
3-
version = "0.12.1"
3+
version = "0.12.2"
44

55
[deps]
66
AbstractMCMC = "80f14c24-f653-4e6a-9b94-39d6b0f70001"

src/varinfo.jl

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -499,8 +499,13 @@ end
499499
length(exprs) == 0 && return :(NamedTuple())
500500
return :($(exprs...),)
501501
end
502+
502503
@inline function findranges(f_ranges, f_idcs)
503-
return mapreduce(i -> f_ranges[i], vcat, f_idcs; init=Int[])
504+
results = Int[]
505+
for i in f_idcs
506+
append!(results, f_ranges[i])
507+
end
508+
return results
504509
end
505510

506511
"""

0 commit comments

Comments
 (0)