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

[WIP] Add support for Enzyme #1887

Open
wants to merge 54 commits into
base: master
Choose a base branch
from
Open

[WIP] Add support for Enzyme #1887

wants to merge 54 commits into from

Conversation

devmotion
Copy link
Member

@devmotion devmotion commented Sep 28, 2022

Note: This does not work yet


I opened this PR to make it easier to debug (and possibly fix) issues with Enzyme.

Currently, the following example does not work (note that the snippet does not require the PR which solely reexports AutoEnzyme at this point):

using Turing
using Enzyme
using ADTypes
Enzyme.API.runtimeActivity!(true);
Enzyme.API.typeWarning!(false);

@model function model()
    m ~ Normal(0, 1)
    s ~ InverseGamma()
    x ~ Normal(m, s)
end

sample(model() | (; x=0.5), NUTS(; adtype = ADTypes.AutoEnzyme()), 10)

With Enzyme#main my Julia (1.8.1) segfaults. An incomplete (it filled my whole terminal) output: https://gist.github.com/devmotion/1352197f2354c6fecddd7b778ec4bcf7#file-log-txt

The example works (latest releases of Turing, Enzyme, and ADTypes on Julia 1.10.0) but the following warnings show up:

warning: didn't implement memmove, using memcpy as fallback which can result in errors
warning: didn't implement memmove, using memcpy as fallback which can result in errors

@coveralls
Copy link

coveralls commented Nov 13, 2022

Pull Request Test Coverage Report for Build 3800188054

  • 0 of 0 changed or added relevant lines in 0 files are covered.
  • 42 unchanged lines in 1 file lost coverage.
  • Overall coverage remained the same at 0.0%

Files with Coverage Reduction New Missed Lines %
src/essential/ad.jl 42 0%
Totals Coverage Status
Change from base Build 3663908235: 0.0%
Covered Lines: 0
Relevant Lines: 1437

💛 - Coveralls

@codecov
Copy link

codecov bot commented Nov 13, 2022

Codecov Report

Attention: Patch coverage is 0% with 5 lines in your changes are missing coverage. Please review.

Project coverage is 0.00%. Comparing base (c29d36e) to head (3e5841f).

❗ Current head 3e5841f differs from pull request most recent head 0385250. Consider uploading reports for the commit 0385250 to get more accurate results

Files Patch % Lines
src/essential/ad.jl 0.00% 5 Missing ⚠️
Additional details and impacted files
@@          Coverage Diff           @@
##           master   #1887   +/-   ##
======================================
  Coverage    0.00%   0.00%           
======================================
  Files          21      21           
  Lines        1367    1437   +70     
======================================
- Misses       1367    1437   +70     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

src/essential/ad.jl Outdated Show resolved Hide resolved
src/essential/ad.jl Outdated Show resolved Hide resolved
@wsmoses
Copy link
Collaborator

wsmoses commented Jun 26, 2023

Also if you want to disable the warnings you can set it like so (https://github.com/EnzymeAD/Enzyme.jl/blob/c29e6119c7963ddb22f1363726f762455748e193/src/api.jl#L414
)

Enzyme.API.typeWarning!(false)

@wsmoses
Copy link
Collaborator

wsmoses commented Jun 26, 2023

You also may want to set the version to 0.11.2 since your CI currently is running at 0.11.0 (⌃ [7da242da] Enzyme v0.11.0)

@wsmoses
Copy link
Collaborator

wsmoses commented Jun 27, 2023

@devmotion this PR (EnzymeAD/Enzyme.jl#914) should fix the immediate issues you see on CI if you want to try.

@devmotion
Copy link
Member Author

This would not be a meaningful definition of +(::Normal, ::Normal) IMO. One interpretation discussed in Distributions would be the distribution of the sum of two independent normally distributed random variables (but it is not even clear that one should assume independence here). Generally, convolutions are computed with Distributions.convolve though.

@sunxd3
Copy link
Collaborator

sunxd3 commented Dec 18, 2023

cholesky: Enzyme just doesn't have a rule for this at the moment. You can disable that test for Enzyme in the interim, or potentially write a rule for it!

Looks like the function LinearAlgebra.LAPACK.potrf! is the source of the issue. Is there a description for how to add rules?

@sunxd3
Copy link
Collaborator

sunxd3 commented Dec 18, 2023

@wsmoses

@wsmoses
Copy link
Collaborator

wsmoses commented Dec 18, 2023

Yes we have a section in the docs about Julia level rules and it also links to several examples: https://enzyme.mit.edu/julia/dev/

Alternatively you may consider adding the potrf rule to our internal BLAS handler (which wraps it up for many abis like cblas fortran blas cuBLAS etc): https://github.com/EnzymeAD/Enzyme/blob/2d0b3bbba17abe698a0f15321cb254a2aa189c17/enzyme/Enzyme/BlasDerivatives.td#L151

@yebai
Copy link
Member

yebai commented Dec 18, 2023

MethodError: no method matching +(::Normal{Float64}, ::Normal{Float64}) One just needs to define this (where it would add the two floats)

@devmotion @wsmoses do we know where this function call originated from? I don't understand why we have such an operation.

This would be good news 🙂 @wsmoses note though that 121df7d disabled most of the tests, so currently passing CI in this PR would not necessarily imply that the Turing tests pass.

It is very good news to see all segfaults gone, but I agree with @devmotion that more tests are needed to be sure. I think TuringLang/DistributionsAD.jl#254 is better than this PR since Distributions logdensity diff tests cover a lot more standard library functions.

@wsmoses wsmoses marked this pull request as ready for review December 19, 2023 14:54
@michel2323
Copy link

michel2323 commented Dec 19, 2023

@sunxd3 @wsmodes What functions are you using on the Cholesky? \, ldiv!, what else? (Working on Cholesky support in Enzyme).

@sethaxen
Copy link
Member

Alternatively you may consider adding the potrf rule to our internal BLAS handler (which wraps it up for many abis like cblas fortran blas cuBLAS etc): https://github.com/EnzymeAD/Enzyme/blob/2d0b3bbba17abe698a0f15321cb254a2aa189c17/enzyme/Enzyme/BlasDerivatives.td#L151

I'm happy to take a stab at this over the next few weeks. I've never worked in TableGen though. Any tips before I get started?

@wsmoses
Copy link
Collaborator

wsmoses commented Feb 8, 2024

@devmotion the infinite recursion is a known issue that comes from Julia 1.10 see EnzymeAD/Enzyme.jl#1134 which was caused by JuliaSparse/SparseArrays.jl@c402d09.

Can that test be disabled for now (and ideally SparseArrays.jl gets fixed)

@devmotion
Copy link
Member Author

My plan is to update the PR when the cholesky fix for Symmetric is available on main (or maybe even released) since this causes test failures in this PR as well.

@wsmoses
Copy link
Collaborator

wsmoses commented Feb 10, 2024

@devmotion the symmetric PR is merged, as well as also removing of the memmove errors.

@wsmoses
Copy link
Collaborator

wsmoses commented Feb 10, 2024

@devmotion the only two failing tests now are the following. Since you took a look at cholesky earlier, mind investigating the present mismatch?

a cholesky dimension mismatch:

2024-02-10T15:15:30.8247905Z matrix support: �[91m�[1mError During Test�[22m�[39m at �[39m�[1m/home/runner/work/Turing.jl/Turing.jl/test/test_utils/staging.jl:42�[22m
2024-02-10T15:15:30.8293664Z   Got exception outside of a @test
2024-02-10T15:15:30.8395700Z   DimensionMismatch: A has size (2, 2), B has size (2, 2), C has size (0, 0)
2024-02-10T15:15:30.8397087Z   Stacktrace:
2024-02-10T15:15:30.8402081Z     [1] �[0m�[1mmatmul2x2!�[22m�[0m�[1m(�[22m�[90mC�[39m::�[0mMatrix�[90m{Float64}�[39m, �[90mtA�[39m::�[0mChar, �[90mtB�[39m::�[0mChar, �[90mA�[39m::�[0mMatrix�[90m{Float64}�[39m, �[90mB�[39m::�[0mMatrix�[90m{Float64}�[39m, �[90m_add�[39m::�[0mLinearAlgebra.MulAddMul�[90m{false, false, Int64, Int64}�[39m�[0m�[1m)�[22m
2024-02-10T15:15:30.8407033Z   �[90m    @�[39m �[35mLinearAlgebra�[39m �[90m/opt/hostedtoolcache/julia/1.10.0/x64/share/julia/stdlib/v1.10/LinearAlgebra/src/�[39m�[90m�[4mmatmul.jl:970�[24m�[39m
2024-02-10T15:15:30.8466704Z     [2] �[0m�[1mgemm_wrapper!�[22m�[0m�[1m(�[22m�[90mC�[39m::�[0mMatrix�[90m{Float64}�[39m, �[90mtA�[39m::�[0mChar, �[90mtB�[39m::�[0mChar, �[90mA�[39m::�[0mMatrix�[90m{Float64}�[39m, �[90mB�[39m::�[0mMatrix�[90m{Float64}�[39m, �[90m_add�[39m::�[0mLinearAlgebra.MulAddMul�[90m{false, false, Int64, Int64}�[39m�[0m�[1m)�[22m
2024-02-10T15:15:30.8470440Z   �[90m    @�[39m �[35mLinearAlgebra�[39m �[90m/opt/hostedtoolcache/julia/1.10.0/x64/share/julia/stdlib/v1.10/LinearAlgebra/src/�[39m�[90m�[4mmatmul.jl:592�[24m�[39m
2024-02-10T15:15:30.8472102Z     [3] �[0m�[1mgeneric_matmatmul!�[22m
2024-02-10T15:15:30.8473791Z   �[90m    @�[39m �[90m/opt/hostedtoolcache/julia/1.10.0/x64/share/julia/stdlib/v1.10/LinearAlgebra/src/�[39m�[90m�[4mmatmul.jl:352�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:15:30.8475352Z     [4] �[0m�[1mmul!�[22m
2024-02-10T15:15:30.8476976Z   �[90m    @�[39m �[90m/opt/hostedtoolcache/julia/1.10.0/x64/share/julia/stdlib/v1.10/LinearAlgebra/src/�[39m�[90m�[4mmatmul.jl:263�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:15:30.8482463Z     [5] �[0m�[1mreverse�[22m�[0m�[1m(�[22m�[90mconfig�[39m::�[0mEnzymeCore.EnzymeRules.ConfigWidth�[90m{1, false, false, (false, true, true)}�[39m, �[90mfunc�[39m::�[0mEnzymeCore.Const�[90m{typeof(ldiv!)}�[39m, �[90mdret�[39m::�[0mType, �[90mcache�[39m::�[0mTuple�[90m{Cholesky{Float64, Matrix{Float64}}, Matrix{Float64}}�[39m, �[90mA�[39m::�[0mEnzymeCore.Duplicated�[90m{Cholesky{Float64, Matrix{Float64}}}�[39m, �[90mB�[39m::�[0mEnzymeCore.Duplicated�[90m{Matrix{Float64}}�[39m; �[90mkwargs�[39m::�[0m@Kwargs�[90m{}�[39m�[0m�[1m)�[22m
2024-02-10T15:15:30.8487394Z   �[90m    @�[39m �[36mEnzyme�[39m �[90m~/.julia/packages/Enzyme/x7HCA/src/�[39m�[90m�[4minternal_rules.jl:815�[24m�[39m
2024-02-10T15:15:30.8488588Z     [6] �[0m�[1mreverse�[22m
2024-02-10T15:15:30.8489821Z   �[90m    @�[39m �[90m~/.julia/packages/Enzyme/x7HCA/src/�[39m�[90m�[4minternal_rules.jl:792�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:15:30.8491011Z     [7] �[0m�[1mldiv�[22m
2024-02-10T15:15:30.8492560Z   �[90m    @�[39m �[90m/opt/hostedtoolcache/julia/1.10.0/x64/share/julia/stdlib/v1.10/LinearAlgebra/src/�[39m�[90m�[4mLinearAlgebra.jl:572�[24m�[39m
2024-02-10T15:15:30.8494033Z     [8] �[0m�[1m\�[22m
2024-02-10T15:15:30.8495707Z   �[90m    @�[39m �[90m/opt/hostedtoolcache/julia/1.10.0/x64/share/julia/stdlib/v1.10/LinearAlgebra/src/�[39m�[90m�[4mLinearAlgebra.jl:547�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:15:30.8497394Z     [9] �[0m�[1m\�[22m
2024-02-10T15:15:30.8498524Z   �[90m    @�[39m �[90m~/.julia/packages/PDMats/cAM9h/src/�[39m�[90m�[4mpdmat.jl:70�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:15:30.8499783Z    [10] �[0m�[1mnonsingular_wishart_logkernel�[22m
2024-02-10T15:15:30.8501088Z   �[90m    @�[39m �[90m~/.julia/packages/Distributions/UaWBm/src/matrix/�[39m�[90m�[4mwishart.jl:189�[24m�[39m
2024-02-10T15:15:30.8502248Z    [11] �[0m�[1mlogkernel�[22m
2024-02-10T15:15:30.8503611Z   �[90m    @�[39m �[90m~/.julia/packages/Distributions/UaWBm/src/matrix/�[39m�[90m�[4mwishart.jl:163�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:15:30.8505164Z    [12] �[0m�[1m_logpdf�[22m
2024-02-10T15:15:30.8506523Z   �[90m    @�[39m �[90m~/.julia/packages/Distributions/UaWBm/src/�[39m�[90m�[4mmatrixvariates.jl:82�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:15:30.8507856Z    [13] �[0m�[1mlogpdf�[22m
2024-02-10T15:15:30.8509110Z   �[90m    @�[39m �[90m~/.julia/packages/Distributions/UaWBm/src/�[39m�[90m�[4mcommon.jl:263�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:15:30.8510583Z    [14] �[0m�[1minvlink_with_logpdf�[22m
2024-02-10T15:15:30.8511793Z   �[90m    @�[39m �[90m~/.julia/packages/DynamicPPL/U5lel/src/�[39m�[90m�[4mabstract_varinfo.jl:846�[24m�[39m
2024-02-10T15:15:30.8512972Z    [15] �[0m�[1minvlink_with_logpdf�[22m
2024-02-10T15:15:30.8514318Z   �[90m    @�[39m �[90m~/.julia/packages/DynamicPPL/U5lel/src/�[39m�[90m�[4mabstract_varinfo.jl:840�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:15:30.8515600Z    [16] �[0m�[1massume�[22m
2024-02-10T15:15:30.8516904Z   �[90m    @�[39m �[90m~/.julia/packages/DynamicPPL/U5lel/src/�[39m�[90m�[4mcontext_implementations.jl:206�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:15:30.8518196Z    [17] �[0m�[1massume�[22m
2024-02-10T15:15:30.8519276Z   �[90m    @�[39m �[90m~/work/Turing.jl/Turing.jl/src/mcmc/�[39m�[90m�[4mhmc.jl:474�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:15:30.8520364Z    [18] �[0m�[1mtilde_assume�[22m
2024-02-10T15:15:30.8521897Z   �[90m    @�[39m �[90m~/.julia/packages/DynamicPPL/U5lel/src/�[39m�[90m�[4mcontext_implementations.jl:58�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:15:30.8523463Z    [19] �[0m�[1mtilde_assume�[22m
2024-02-10T15:15:30.8524817Z   �[90m    @�[39m �[90m~/.julia/packages/DynamicPPL/U5lel/src/�[39m�[90m�[4mcontext_implementations.jl:55�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:15:30.8526101Z    [20] �[0m�[1mtilde_assume�[22m
2024-02-10T15:15:30.8527448Z   �[90m    @�[39m �[90m~/.julia/packages/DynamicPPL/U5lel/src/�[39m�[90m�[4mcontext_implementations.jl:40�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:15:30.8528713Z    [21] �[0m�[1mtilde_assume!!�[22m
2024-02-10T15:15:30.8530086Z   �[90m    @�[39m �[90m~/.julia/packages/DynamicPPL/U5lel/src/�[39m�[90m�[4mcontext_implementations.jl:126�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:15:30.8531465Z    [22] �[0m�[1mmacro expansion�[22m
2024-02-10T15:15:30.8532941Z   �[90m    @�[39m �[90m~/.julia/packages/DynamicPPL/U5lel/src/�[39m�[90m�[4mcompiler.jl:555�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:15:30.8534145Z    [23] �[0m�[1mhmcmatrixsup�[22m
2024-02-10T15:15:30.8535106Z   �[90m    @�[39m �[90m~/work/Turing.jl/Turing.jl/test/mcmc/�[39m�[90m�[4mhmc.jl:50�[24m�[39m
2024-02-10T15:15:30.8536084Z    [24] �[0m�[1m_evaluate!!�[22m
2024-02-10T15:15:30.8537273Z   �[90m    @�[39m �[90m~/.julia/packages/DynamicPPL/U5lel/src/�[39m�[90m�[4mmodel.jl:963�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:15:30.8538469Z    [25] �[0m�[1mevaluate_threadsafe!!�[22m
2024-02-10T15:15:30.8539540Z   �[90m    @�[39m �[90m~/.julia/packages/DynamicPPL/U5lel/src/�[39m�[90m�[4mmodel.jl:952�[24m�[39m
2024-02-10T15:15:30.8540567Z    [26] �[0m�[1mevaluate!!�[22m
2024-02-10T15:15:30.8541754Z   �[90m    @�[39m �[90m~/.julia/packages/DynamicPPL/U5lel/src/�[39m�[90m�[4mmodel.jl:887�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:15:30.8542920Z    [27] �[0m�[1mlogdensity�[22m
2024-02-10T15:15:30.8544258Z   �[90m    @�[39m �[90m~/.julia/packages/DynamicPPL/U5lel/src/�[39m�[90m�[4mlogdensityfunction.jl:94�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:15:30.8545534Z    [28] �[0m�[1mlogdensity�[22m
2024-02-10T15:15:30.8546838Z   �[90m    @�[39m �[90m~/.julia/packages/DynamicPPL/U5lel/src/�[39m�[90m�[4mlogdensityfunction.jl:0�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:15:30.8548076Z    [29] �[0m�[1mdiffejulia_logdensity_52076_inner_6wrap�[22m
2024-02-10T15:15:30.8549185Z   �[90m    @�[39m �[90m~/.julia/packages/DynamicPPL/U5lel/src/�[39m�[90m�[4mlogdensityfunction.jl:0�[24m�[39m
2024-02-10T15:15:30.8550325Z    [30] �[0m�[1mmacro expansion�[22m
2024-02-10T15:15:30.8551559Z   �[90m    @�[39m �[90m~/.julia/packages/Enzyme/x7HCA/src/�[39m�[90m�[4mcompiler.jl:5285�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:15:30.8552923Z    [31] �[0m�[1menzyme_call�[22m
2024-02-10T15:15:30.8554118Z   �[90m    @�[39m �[90m~/.julia/packages/Enzyme/x7HCA/src/�[39m�[90m�[4mcompiler.jl:4963�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:15:30.8555223Z    [32] �[0m�[1mCombinedAdjointThunk�[22m
2024-02-10T15:15:30.8556370Z   �[90m    @�[39m �[90m~/.julia/packages/Enzyme/x7HCA/src/�[39m�[90m�[4mcompiler.jl:4905�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:15:30.8557703Z    [33] �[0m�[1mautodiff�[22m
2024-02-10T15:15:30.8558833Z   �[90m    @�[39m �[90m~/.julia/packages/Enzyme/x7HCA/src/�[39m�[90m�[4mEnzyme.jl:215�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:15:30.8559947Z    [34] �[0m�[1mautodiff�[22m
2024-02-10T15:15:30.8561071Z   �[90m    @�[39m �[90m~/.julia/packages/Enzyme/x7HCA/src/�[39m�[90m�[4mEnzyme.jl:224�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:15:30.8562186Z    [35] �[0m�[1mlogdensity_and_gradient�[22m
2024-02-10T15:15:30.8564004Z   �[90m    @�[39m �[90m~/.julia/packages/LogDensityProblemsAD/OQ0BL/ext/�[39m�[90m�[4mLogDensityProblemsADEnzymeExt.jl:73�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:15:30.8565517Z    [36] �[0m�[1m∂logπ∂θ�[22m
2024-02-10T15:15:30.8566645Z   �[90m    @�[39m �[90m~/work/Turing.jl/Turing.jl/src/mcmc/�[39m�[90m�[4mhmc.jl:159�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:15:30.8581704Z    [37] �[0m�[1m∂H∂θ�[22m�[0m�[1m(�[22m�[90mh�[39m::�[0mAdvancedHMC.Hamiltonian�[90m{AdvancedHMC.UnitEuclideanMetric{Float64, Tuple{Int64}}, AdvancedHMC.GaussianKinetic, Base.Fix1{typeof(LogDensityProblems.logdensity), LogDensityProblemsADEnzymeExt.EnzymeGradientLogDensity{LogDensityFunction{DynamicPPL.TypedVarInfo{@NamedTuple{v::DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:v, Setfield.IdentityLens}, Int64}, Vector{Wishart{Float64, PDMat{Float64, Matrix{Float64}}, Int64}}, Vector{AbstractPPL.VarName{:v, Setfield.IdentityLens}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}}, Float64}, DynamicPPL.Model{var"#hmcmatrixsup#88", (), (), (), Tuple{}, Tuple{}, DynamicPPL.DefaultContext}, DynamicPPL.SamplingContext{Sampler{HMC{AutoEnzyme{Nothing}, (), AdvancedHMC.UnitEuclideanMetric}}, DynamicPPL.DefaultContext, StableRNGs.LehmerRNG}}, EnzymeCore.ReverseMode{false, EnzymeCore.FFIABI}, Nothing}}, Turing.Inference.var"#∂logπ∂θ#31"{LogDensityProblemsADEnzymeExt.EnzymeGradientLogDensity{LogDensityFunction{DynamicPPL.TypedVarInfo{@NamedTuple{v::DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:v, Setfield.IdentityLens}, Int64}, Vector{Wishart{Float64, PDMat{Float64, Matrix{Float64}}, Int64}}, Vector{AbstractPPL.VarName{:v, Setfield.IdentityLens}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}}, Float64}, DynamicPPL.Model{var"#hmcmatrixsup#88", (), (), (), Tuple{}, Tuple{}, DynamicPPL.DefaultContext}, DynamicPPL.SamplingContext{Sampler{HMC{AutoEnzyme{Nothing}, (), AdvancedHMC.UnitEuclideanMetric}}, DynamicPPL.DefaultContext, StableRNGs.LehmerRNG}}, EnzymeCore.ReverseMode{false, EnzymeCore.FFIABI}, Nothing}}}�[39m, �[90mθ�[39m::�[0mVector�[90m{Float64}�[39m�[0m�[1m)�[22m
2024-02-10T15:15:30.8595182Z   �[90m    @�[39m �[32mAdvancedHMC�[39m �[90m~/.julia/packages/AdvancedHMC/AlvV4/src/�[39m�[90m�[4mhamiltonian.jl:38�[24m�[39m
2024-02-10T15:15:30.8610821Z    [38] �[0m�[1mphasepoint�[22m�[0m�[1m(�[22m�[90mh�[39m::�[0mAdvancedHMC.Hamiltonian�[90m{AdvancedHMC.UnitEuclideanMetric{Float64, Tuple{Int64}}, AdvancedHMC.GaussianKinetic, Base.Fix1{typeof(LogDensityProblems.logdensity), LogDensityProblemsADEnzymeExt.EnzymeGradientLogDensity{LogDensityFunction{DynamicPPL.TypedVarInfo{@NamedTuple{v::DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:v, Setfield.IdentityLens}, Int64}, Vector{Wishart{Float64, PDMat{Float64, Matrix{Float64}}, Int64}}, Vector{AbstractPPL.VarName{:v, Setfield.IdentityLens}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}}, Float64}, DynamicPPL.Model{var"#hmcmatrixsup#88", (), (), (), Tuple{}, Tuple{}, DynamicPPL.DefaultContext}, DynamicPPL.SamplingContext{Sampler{HMC{AutoEnzyme{Nothing}, (), AdvancedHMC.UnitEuclideanMetric}}, DynamicPPL.DefaultContext, StableRNGs.LehmerRNG}}, EnzymeCore.ReverseMode{false, EnzymeCore.FFIABI}, Nothing}}, Turing.Inference.var"#∂logπ∂θ#31"{LogDensityProblemsADEnzymeExt.EnzymeGradientLogDensity{LogDensityFunction{DynamicPPL.TypedVarInfo{@NamedTuple{v::DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:v, Setfield.IdentityLens}, Int64}, Vector{Wishart{Float64, PDMat{Float64, Matrix{Float64}}, Int64}}, Vector{AbstractPPL.VarName{:v, Setfield.IdentityLens}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}}, Float64}, DynamicPPL.Model{var"#hmcmatrixsup#88", (), (), (), Tuple{}, Tuple{}, DynamicPPL.DefaultContext}, DynamicPPL.SamplingContext{Sampler{HMC{AutoEnzyme{Nothing}, (), AdvancedHMC.UnitEuclideanMetric}}, DynamicPPL.DefaultContext, StableRNGs.LehmerRNG}}, EnzymeCore.ReverseMode{false, EnzymeCore.FFIABI}, Nothing}}}�[39m, �[90mθ�[39m::�[0mVector�[90m{Float64}�[39m, �[90mr�[39m::�[0mVector�[90m{Float64}�[39m�[0m�[1m)�[22m
2024-02-10T15:15:30.8625130Z   �[90m    @�[39m �[32mAdvancedHMC�[39m �[90m~/.julia/packages/AdvancedHMC/AlvV4/src/�[39m�[90m�[4mhamiltonian.jl:74�[24m�[39m
2024-02-10T15:15:30.8627512Z    [39] �[0m�[1mphasepoint�[22m�[0m�[1m(�[22m�[90mh�[39m::�[0mAdvancedHMC.Hamiltonian, �[90mθ�[39m::�[0mT, �[90mr�[39m::�[0mT�[0m�[1m)�[22m where T<:(AbstractVecOrMat)
2024-02-10T15:15:30.8630056Z   �[90m    @�[39m �[32mAdvancedHMC�[39m �[90m~/.julia/packages/AdvancedHMC/AlvV4/src/�[39m�[90m�[4mhamiltonian.jl:155�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:15:30.8637357Z    [40] �[0m�[1minitialstep�[22m�[0m�[1m(�[22m�[90mrng�[39m::�[0mStableRNGs.LehmerRNG, �[90mmodel�[39m::�[0mDynamicPPL.Model�[90m{var"#hmcmatrixsup#88", (), (), (), Tuple{}, Tuple{}, DynamicPPL.DefaultContext}�[39m, �[90mspl�[39m::�[0mSampler�[90m{HMC{AutoEnzyme{Nothing}, (), AdvancedHMC.UnitEuclideanMetric}}�[39m, �[90mvi�[39m::�[0mDynamicPPL.TypedVarInfo�[90m{@NamedTuple{v::DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:v, Setfield.IdentityLens}, Int64}, Vector{Wishart{Float64, PDMat{Float64, Matrix{Float64}}, Int64}}, Vector{AbstractPPL.VarName{:v, Setfield.IdentityLens}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}}, Float64}�[39m; �[90minitial_params�[39m::�[0mNothing, �[90mnadapts�[39m::�[0mInt64, �[90mkwargs�[39m::�[0m@Kwargs�[90m{}�[39m�[0m�[1m)�[22m
2024-02-10T15:15:30.8643836Z   �[90m    @�[39m �[33mTuring.Inference�[39m �[90m~/work/Turing.jl/Turing.jl/src/mcmc/�[39m�[90m�[4mhmc.jl:163�[24m�[39m
2024-02-10T15:15:30.8648094Z    [41] �[0m�[1mstep�[22m�[0m�[1m(�[22m�[90mrng�[39m::�[0mStableRNGs.LehmerRNG, �[90mmodel�[39m::�[0mDynamicPPL.Model�[90m{var"#hmcmatrixsup#88", (), (), (), Tuple{}, Tuple{}, DynamicPPL.DefaultContext}�[39m, �[90mspl�[39m::�[0mSampler�[90m{HMC{AutoEnzyme{Nothing}, (), AdvancedHMC.UnitEuclideanMetric}}�[39m; �[90minitial_params�[39m::�[0mNothing, �[90mkwargs�[39m::�[0m@Kwargs�[90m{}�[39m�[0m�[1m)�[22m
2024-02-10T15:15:30.8651772Z   �[90m    @�[39m �[35mDynamicPPL�[39m �[90m~/.julia/packages/DynamicPPL/U5lel/src/�[39m�[90m�[4msampler.jl:116�[24m�[39m
2024-02-10T15:15:30.8653011Z    [42] �[0m�[1mstep�[22m
2024-02-10T15:15:30.8654232Z   �[90m    @�[39m �[90m~/.julia/packages/DynamicPPL/U5lel/src/�[39m�[90m�[4msampler.jl:99�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:15:30.8655450Z    [43] �[0m�[1mmacro expansion�[22m
2024-02-10T15:15:30.8656728Z   �[90m    @�[39m �[90m~/.julia/packages/AbstractMCMC/Es490/src/�[39m�[90m�[4msample.jl:127�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:15:30.8658011Z    [44] �[0m�[1mmacro expansion�[22m
2024-02-10T15:15:30.8659479Z   �[90m    @�[39m �[90m~/.julia/packages/ProgressLogging/6KXlp/src/�[39m�[90m�[4mProgressLogging.jl:328�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:15:30.8663332Z    [45] �[0m�[1m(::AbstractMCMC.var"#21#22"{Bool, String, Nothing, Int64, Int64, Nothing, @Kwargs{}, StableRNGs.LehmerRNG, DynamicPPL.Model{var"#hmcmatrixsup#88", (), (), (), Tuple{}, Tuple{}, DynamicPPL.DefaultContext}, Sampler{HMC{AutoEnzyme{Nothing}, (), AdvancedHMC.UnitEuclideanMetric}}, Int64, Int64})�[22m�[0m�[1m(�[22m�[0m�[1m)�[22m
2024-02-10T15:15:30.8666770Z   �[90m    @�[39m �[36mAbstractMCMC�[39m �[90m~/.julia/packages/AbstractMCMC/Es490/src/�[39m�[90m�[4mlogging.jl:12�[24m�[39m
2024-02-10T15:15:30.8668894Z    [46] �[0m�[1mwith_logstate�[22m�[0m�[1m(�[22m�[90mf�[39m::�[0mFunction, �[90mlogstate�[39m::�[0mAny�[0m�[1m)�[22m
2024-02-10T15:15:30.8670376Z   �[90m    @�[39m �[90mBase.CoreLogging�[39m �[90m./�[39m�[90m�[4mlogging.jl:515�[24m�[39m
2024-02-10T15:15:30.8673892Z    [47] �[0m�[1mwith_logger�[22m�[0m�[1m(�[22m�[90mf�[39m::�[0mFunction, �[90mlogger�[39m::�[0mLoggingExtras.TeeLogger�[90m{Tuple{LoggingExtras.EarlyFilteredLogger{TerminalLoggers.TerminalLogger, AbstractMCMC.var"#1#3"{Module}}, LoggingExtras.EarlyFilteredLogger{Logging.ConsoleLogger, AbstractMCMC.var"#2#4"{Module}}}}�[39m�[0m�[1m)�[22m
2024-02-10T15:15:30.8677233Z   �[90m    @�[39m �[90mBase.CoreLogging�[39m �[90m./�[39m�[90m�[4mlogging.jl:627�[24m�[39m
2024-02-10T15:15:30.8679151Z    [48] �[0m�[1mwith_progresslogger�[22m�[0m�[1m(�[22m�[90mf�[39m::�[0mFunction, �[90m_module�[39m::�[0mModule, �[90mlogger�[39m::�[0mLogging.ConsoleLogger�[0m�[1m)�[22m
2024-02-10T15:15:30.8681282Z   �[90m    @�[39m �[36mAbstractMCMC�[39m �[90m~/.julia/packages/AbstractMCMC/Es490/src/�[39m�[90m�[4mlogging.jl:36�[24m�[39m
2024-02-10T15:15:30.8682555Z    [49] �[0m�[1mmacro expansion�[22m
2024-02-10T15:15:30.8684129Z   �[90m    @�[39m �[90m~/.julia/packages/AbstractMCMC/Es490/src/�[39m�[90m�[4mlogging.jl:11�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:15:30.8689886Z    [50] �[0m�[1mmcmcsample�[22m�[0m�[1m(�[22m�[90mrng�[39m::�[0mStableRNGs.LehmerRNG, �[90mmodel�[39m::�[0mDynamicPPL.Model�[90m{var"#hmcmatrixsup#88", (), (), (), Tuple{}, Tuple{}, DynamicPPL.DefaultContext}�[39m, �[90msampler�[39m::�[0mSampler�[90m{HMC{AutoEnzyme{Nothing}, (), AdvancedHMC.UnitEuclideanMetric}}�[39m, �[90mN�[39m::�[0mInt64; �[90mprogress�[39m::�[0mBool, �[90mprogressname�[39m::�[0mString, �[90mcallback�[39m::�[0mNothing, �[90mdiscard_initial�[39m::�[0mInt64, �[90mthinning�[39m::�[0mInt64, �[90mchain_type�[39m::�[0mType, �[90minitial_state�[39m::�[0mNothing, �[90mkwargs�[39m::�[0m@Kwargs�[90m{}�[39m�[0m�[1m)�[22m
2024-02-10T15:15:30.8694949Z   �[90m    @�[39m �[36mAbstractMCMC�[39m �[90m~/.julia/packages/AbstractMCMC/Es490/src/�[39m�[90m�[4msample.jl:117�[24m�[39m
2024-02-10T15:15:30.8699656Z    [51] �[0m�[1msample�[22m�[0m�[1m(�[22m�[90mrng�[39m::�[0mStableRNGs.LehmerRNG, �[90mmodel�[39m::�[0mDynamicPPL.Model�[90m{var"#hmcmatrixsup#88", (), (), (), Tuple{}, Tuple{}, DynamicPPL.DefaultContext}�[39m, �[90msampler�[39m::�[0mSampler�[90m{HMC{AutoEnzyme{Nothing}, (), AdvancedHMC.UnitEuclideanMetric}}�[39m, �[90mN�[39m::�[0mInt64; �[90mchain_type�[39m::�[0mType, �[90mresume_from�[39m::�[0mNothing, �[90minitial_state�[39m::�[0mNothing, �[90mkwargs�[39m::�[0m@Kwargs�[90m{}�[39m�[0m�[1m)�[22m
2024-02-10T15:15:30.8704075Z   �[90m    @�[39m �[35mDynamicPPL�[39m �[90m~/.julia/packages/DynamicPPL/U5lel/src/�[39m�[90m�[4msampler.jl:93�[24m�[39m
2024-02-10T15:15:30.8705311Z    [52] �[0m�[1msample�[22m
2024-02-10T15:15:30.8706691Z   �[90m    @�[39m �[35mDynamicPPL�[39m �[90m~/.julia/packages/DynamicPPL/U5lel/src/�[39m�[90m�[4msampler.jl:83�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:15:30.8708068Z    [53] �[0m�[1m#sample#3�[22m
2024-02-10T15:15:30.8709530Z   �[90m    @�[39m �[33mTuring.Inference�[39m �[90m~/work/Turing.jl/Turing.jl/src/mcmc/�[39m�[90m�[4mInference.jl:207�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:15:30.8713268Z    [54] �[0m�[1msample�[22m�[0m�[1m(�[22m�[90mrng�[39m::�[0mStableRNGs.LehmerRNG, �[90mmodel�[39m::�[0mDynamicPPL.Model�[90m{var"#hmcmatrixsup#88", (), (), (), Tuple{}, Tuple{}, DynamicPPL.DefaultContext}�[39m, �[90malg�[39m::�[0mHMC�[90m{AutoEnzyme{Nothing}, (), AdvancedHMC.UnitEuclideanMetric}�[39m, �[90mN�[39m::�[0mInt64�[0m�[1m)�[22m
2024-02-10T15:15:30.8716494Z   �[90m    @�[39m �[33mTuring.Inference�[39m �[90m~/work/Turing.jl/Turing.jl/src/mcmc/�[39m�[90m�[4mInference.jl:200�[24m�[39m
2024-02-10T15:15:30.8718922Z    [55] �[0m�[1m(::var"#80#89"{AutoEnzyme{Nothing}, Int64, DynamicPPL.Model{var"#hmcmatrixsup#88", (), (), (), Tuple{}, Tuple{}, DynamicPPL.DefaultContext}})�[22m�[0m�[1m(�[22m::�[0mInt64�[0m�[1m)�[22m
2024-02-10T15:15:30.8721205Z   �[90m    @�[39m �[32mMain�[39m �[90m~/work/Turing.jl/Turing.jl/test/mcmc/�[39m�[90m�[4mhmc.jl:57�[24m�[39m
2024-02-10T15:15:30.8723100Z    [56] �[0m�[1miterate�[22m�[0m�[1m(�[22m�[90mg�[39m::�[0mBase.Generator, �[90ms�[39m::�[0mVararg�[90m{Any}�[39m�[0m�[1m)�[22m
2024-02-10T15:15:30.8724614Z   �[90m    @�[39m �[90mBase�[39m �[90m./�[39m�[90m�[4mgenerator.jl:47�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:15:30.8728223Z    [57] �[0m�[1m_collect�[22m�[0m�[1m(�[22m�[90mc�[39m::�[0mUnitRange�[90m{Int64}�[39m, �[90mitr�[39m::�[0mBase.Generator�[90m{UnitRange{Int64}, var"#80#89"{AutoEnzyme{Nothing}, Int64, DynamicPPL.Model{var"#hmcmatrixsup#88", (), (), (), Tuple{}, Tuple{}, DynamicPPL.DefaultContext}}}�[39m, ::�[0mBase.EltypeUnknown, �[90misz�[39m::�[0mBase.HasShape�[90m{1}�[39m�[0m�[1m)�[22m
2024-02-10T15:15:30.8731202Z   �[90m    @�[39m �[90mBase�[39m �[90m./�[39m�[90m�[4marray.jl:854�[24m�[39m
2024-02-10T15:15:30.8734123Z    [58] �[0m�[1mcollect_similar�[22m�[0m�[1m(�[22m�[90mcont�[39m::�[0mUnitRange�[90m{Int64}�[39m, �[90mitr�[39m::�[0mBase.Generator�[90m{UnitRange{Int64}, var"#80#89"{AutoEnzyme{Nothing}, Int64, DynamicPPL.Model{var"#hmcmatrixsup#88", (), (), (), Tuple{}, Tuple{}, DynamicPPL.DefaultContext}}}�[39m�[0m�[1m)�[22m
2024-02-10T15:15:30.8736689Z   �[90m    @�[39m �[90mBase�[39m �[90m./�[39m�[90m�[4marray.jl:763�[24m�[39m
2024-02-10T15:15:30.8738268Z    [59] �[0m�[1mmap�[22m�[0m�[1m(�[22m�[90mf�[39m::�[0mFunction, �[90mA�[39m::�[0mUnitRange�[90m{Int64}�[39m�[0m�[1m)�[22m
2024-02-10T15:15:30.8739689Z   �[90m    @�[39m �[90mBase�[39m �[90m./�[39m�[90m�[4mabstractarray.jl:3282�[24m�[39m
2024-02-10T15:15:30.8740598Z    [60] �[0m�[1mmacro expansion�[22m
2024-02-10T15:15:30.8741777Z   �[90m    @�[39m �[90m~/work/Turing.jl/Turing.jl/test/mcmc/�[39m�[90m�[4mhmc.jl:56�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:15:30.8742902Z    [61] �[0m�[1mmacro expansion�[22m
2024-02-10T15:15:30.8744509Z   �[90m    @�[39m �[90m/opt/hostedtoolcache/julia/1.10.0/x64/share/julia/stdlib/v1.10/Test/src/�[39m�[90m�[4mTest.jl:1577�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:15:30.8746006Z    [62] �[0m�[1mmacro expansion�[22m
2024-02-10T15:15:30.8747178Z   �[90m    @�[39m �[90m~/work/Turing.jl/Turing.jl/test/mcmc/�[39m�[90m�[4mhmc.jl:50�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:15:30.8748461Z    [63] �[0m�[1mmacro expansion�[22m
2024-02-10T15:15:30.8750107Z   �[90m    @�[39m �[90m/opt/hostedtoolcache/julia/1.10.0/x64/share/julia/stdlib/v1.10/Test/src/�[39m�[90m�[4mTest.jl:1669�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:15:30.8751535Z    [64] top-level scope
2024-02-10T15:15:30.8752406Z   �[90m    @�[39m �[90m~/work/Turing.jl/Turing.jl/test/mcmc/�[39m�[90m�[4mhmc.jl:1690�[24m�[39m
2024-02-10T15:15:30.8753691Z    [65] �[0m�[1minclude�[22m�[0m�[1m(�[22m�[90mfname�[39m::�[0mString�[0m�[1m)�[22m
2024-02-10T15:15:30.8754870Z   �[90m    @�[39m �[90mBase.MainInclude�[39m �[90m./�[39m�[90m�[4mclient.jl:489�[24m�[39m
2024-02-10T15:15:30.8755790Z    [66] �[0m�[1mmacro expansion�[22m
2024-02-10T15:15:30.8757127Z   �[90m    @�[39m �[90m~/.julia/packages/TimerOutputs/RsWnF/src/�[39m�[90m�[4mTimerOutput.jl:237�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:15:30.8758383Z    [67] �[0m�[1mmacro expansion�[22m
2024-02-10T15:15:30.8759537Z   �[90m    @�[39m �[90m~/work/Turing.jl/Turing.jl/test/�[39m�[90m�[4mruntests.jl:82�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:15:30.8760702Z    [68] �[0m�[1mmacro expansion�[22m
2024-02-10T15:15:30.8762338Z   �[90m    @�[39m �[90m/opt/hostedtoolcache/julia/1.10.0/x64/share/julia/stdlib/v1.10/Test/src/�[39m�[90m�[4mTest.jl:1577�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:15:30.8764166Z    [69] �[0m�[1mmacro expansion�[22m
2024-02-10T15:15:30.8765333Z   �[90m    @�[39m �[90m~/work/Turing.jl/Turing.jl/test/�[39m�[90m�[4mruntests.jl:80�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:15:30.8766418Z    [70] �[0m�[1mmacro expansion�[22m
2024-02-10T15:15:30.8767716Z   �[90m    @�[39m �[90m~/.julia/packages/TimerOutputs/RsWnF/src/�[39m�[90m�[4mTimerOutput.jl:237�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:15:30.8768958Z    [71] �[0m�[1mmacro expansion�[22m
2024-02-10T15:15:30.8770242Z   �[90m    @�[39m �[90m~/work/Turing.jl/Turing.jl/test/�[39m�[90m�[4mruntests.jl:78�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:15:30.8771300Z    [72] �[0m�[1mmacro expansion�[22m
2024-02-10T15:15:30.8772885Z   �[90m    @�[39m �[90m/opt/hostedtoolcache/julia/1.10.0/x64/share/julia/stdlib/v1.10/Test/src/�[39m�[90m�[4mTest.jl:1577�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:15:30.8774570Z    [73] top-level scope
2024-02-10T15:15:30.8775498Z   �[90m    @�[39m �[90m~/work/Turing.jl/Turing.jl/test/�[39m�[90m�[4mruntests.jl:67�[24m�[39m
2024-02-10T15:15:30.8776911Z    [74] �[0m�[1minclude�[22m�[0m�[1m(�[22m�[90mfname�[39m::�[0mString�[0m�[1m)�[22m
2024-02-10T15:15:30.8778231Z   �[90m    @�[39m �[90mBase.MainInclude�[39m �[90m./�[39m�[90m�[4mclient.jl:489�[24m�[39m
2024-02-10T15:15:30.8779215Z    [75] top-level scope
2024-02-10T15:15:30.8779818Z   �[90m    @�[39m �[90m�[4mnone:6�[24m�[39m
2024-02-10T15:15:30.8780477Z    [76] �[0m�[1meval�[22m
2024-02-10T15:15:30.8781400Z   �[90m    @�[39m �[90mCore�[39m �[90m./�[39m�[90m�[4mboot.jl:385�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:15:30.8782890Z    [77] �[0m�[1mexec_options�[22m�[0m�[1m(�[22m�[90mopts�[39m::�[0mBase.JLOptions�[0m�[1m)�[22m
2024-02-10T15:15:30.8784187Z   �[90m    @�[39m �[90mBase�[39m �[90m./�[39m�[90m�[4mclient.jl:291�[24m�[39m

and the stack overflow caused by a type unstable hvcat hitting the SparseArrays.jl bug I mentioned

2024-02-10T15:19:26.0460301Z multivariate support: �[91m�[1mError During Test�[22m�[39m at �[39m�[1m/home/runner/work/Turing.jl/Turing.jl/test/test_utils/staging.jl:42�[22m
2024-02-10T15:19:26.0461760Z   Got exception outside of a @test
2024-02-10T15:19:26.0462341Z   StackOverflowError:
2024-02-10T15:19:26.0524854Z   Stacktrace:
2024-02-10T15:19:26.0525453Z        [1] �[0m�[1mhvcat�[22m
2024-02-10T15:19:26.0527158Z   �[90m       @�[39m �[90m/opt/hostedtoolcache/julia/1.10.0/x64/share/julia/stdlib/v1.10/SparseArrays/src/�[39m�[90m�[4msparsevector.jl:1269�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:19:26.0529145Z        [2] �[0m�[1mhvcat�[22m
2024-02-10T15:19:26.0530959Z   �[90m       @�[39m �[90m/opt/hostedtoolcache/julia/1.10.0/x64/share/julia/stdlib/v1.10/SparseArrays/src/�[39m�[90m�[4msparsevector.jl:0�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:19:26.0536289Z        [3] �[0m�[1maugmented_julia_hvcat_62332_inner_1wrap�[22m
2024-02-10T15:19:26.0537977Z   �[90m       @�[39m �[90m/opt/hostedtoolcache/julia/1.10.0/x64/share/julia/stdlib/v1.10/SparseArrays/src/�[39m�[90m�[4msparsevector.jl:0�[24m�[39m
2024-02-10T15:19:26.0539568Z        [4] �[0m�[1mmacro expansion�[22m
2024-02-10T15:19:26.0541086Z   �[90m       @�[39m �[36mEnzyme.Compiler�[39m �[90m~/.julia/packages/Enzyme/x7HCA/src/�[39m�[90m�[4mcompiler.jl:5285�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:19:26.0542556Z        [5] �[0m�[1menzyme_call�[22m
2024-02-10T15:19:26.0544008Z   �[90m       @�[39m �[36mEnzyme.Compiler�[39m �[90m~/.julia/packages/Enzyme/x7HCA/src/�[39m�[90m�[4mcompiler.jl:4963�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:19:26.0545550Z        [6] �[0m�[1mAugmentedForwardThunk�[22m
2024-02-10T15:19:26.0548191Z   �[90m       @�[39m �[36mEnzyme.Compiler�[39m �[90m~/.julia/packages/Enzyme/x7HCA/src/�[39m�[90m�[4mcompiler.jl:4916�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:19:26.0561239Z        [7] �[0m�[1mruntime_generic_augfwd�[22m�[0m�[1m(�[22m�[90mactivity�[39m::�[0mType�[90m{Val{(false, false, true, true, true, true, true, true, true, true, true)}}�[39m, �[90mwidth�[39m::�[0mVal�[90m{1}�[39m, �[90mModifiedBetween�[39m::�[0mVal�[90m{(true, true, true, true, true, true, true, true, true, true, true)}�[39m, �[90mRT�[39m::�[0mVal�[90m{@NamedTuple{1, 2, 3}}�[39m, �[90mf�[39m::�[0mtypeof(hvcat), �[90mdf�[39m::�[0mNothing, �[90mprimal_1�[39m::�[0mTuple�[90m{Int64, Int64, Int64}�[39m, �[90mshadow_1_1�[39m::�[0mNothing, �[90mprimal_2�[39m::�[0mFloat64, �[90mshadow_2_1�[39m::�[0mBase.RefValue�[90m{Float64}�[39m, �[90mprimal_3�[39m::�[0mFloat64, �[90mshadow_3_1�[39m::�[0mBase.RefValue�[90m{Float64}�[39m, �[90mprimal_4�[39m::�[0mFloat64, �[90mshadow_4_1�[39m::�[0mBase.RefValue�[90m{Float64}�[39m, �[90mprimal_5�[39m::�[0mFloat64, �[90mshadow_5_1�[39m::�[0mBase.RefValue�[90m{Float64}�[39m, �[90mprimal_6�[39m::�[0mFloat64, �[90mshadow_6_1�[39m::�[0mBase.RefValue�[90m{Float64}�[39m, �[90mprimal_7�[39m::�[0mFloat64, �[90mshadow_7_1�[39m::�[0mBase.RefValue�[90m{Float64}�[39m, �[90mprimal_8�[39m::�[0mFloat64, �[90mshadow_8_1�[39m::�[0mBase.RefValue�[90m{Float64}�[39m, �[90mprimal_9�[39m::�[0mFloat64, �[90mshadow_9_1�[39m::�[0mBase.RefValue�[90m{Float64}�[39m, �[90mprimal_10�[39m::�[0mFloat64, �[90mshadow_10_1�[39m::�[0mBase.RefValue�[90m{Float64}�[39m�[0m�[1m)�[22m
2024-02-10T15:19:26.0570909Z   �[90m       @�[39m �[36mEnzyme.Compiler�[39m �[90m~/.julia/packages/Enzyme/x7HCA/src/rules/�[39m�[90m�[4mjitrules.jl:179�[24m�[39m
2024-02-10T15:19:26.0572306Z   �[90m--- the last 7 lines are repeated 9582 more times ---�[39m
2024-02-10T15:19:26.0573077Z    [67082] �[0m�[1mhvcat�[22m
2024-02-10T15:19:26.0574851Z   �[90m       @�[39m �[90m/opt/hostedtoolcache/julia/1.10.0/x64/share/julia/stdlib/v1.10/SparseArrays/src/�[39m�[90m�[4msparsevector.jl:1269�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:19:26.0576394Z    [67083] �[0m�[1mhvcat�[22m
2024-02-10T15:19:26.0577980Z   �[90m       @�[39m �[90m/opt/hostedtoolcache/julia/1.10.0/x64/share/julia/stdlib/v1.10/SparseArrays/src/�[39m�[90m�[4msparsevector.jl:0�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:19:26.0579659Z    [67084] �[0m�[1maugmented_julia_hvcat_62239_inner_1wrap�[22m
2024-02-10T15:19:26.0581282Z   �[90m       @�[39m �[90m/opt/hostedtoolcache/julia/1.10.0/x64/share/julia/stdlib/v1.10/SparseArrays/src/�[39m�[90m�[4msparsevector.jl:0�[24m�[39m
2024-02-10T15:19:26.0582684Z    [67085] �[0m�[1mmacro expansion�[22m
2024-02-10T15:19:26.0584123Z   �[90m       @�[39m �[36mEnzyme.Compiler�[39m �[90m~/.julia/packages/Enzyme/x7HCA/src/�[39m�[90m�[4mcompiler.jl:5285�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:19:26.0589961Z    [67086] �[0m�[1menzyme_call�[22m
2024-02-10T15:19:26.0591585Z   �[90m       @�[39m �[36mEnzyme.Compiler�[39m �[90m~/.julia/packages/Enzyme/x7HCA/src/�[39m�[90m�[4mcompiler.jl:4963�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:19:26.0592972Z    [67087] �[0m�[1mAugmentedForwardThunk�[22m
2024-02-10T15:19:26.0594427Z   �[90m       @�[39m �[36mEnzyme.Compiler�[39m �[90m~/.julia/packages/Enzyme/x7HCA/src/�[39m�[90m�[4mcompiler.jl:4916�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:19:26.0604275Z    [67088] �[0m�[1mruntime_generic_augfwd�[22m�[0m�[1m(�[22m�[90mactivity�[39m::�[0mType�[90m{Val{(false, false, true, false, false, false, true, false, false, false, true)}}�[39m, �[90mwidth�[39m::�[0mVal�[90m{1}�[39m, �[90mModifiedBetween�[39m::�[0mVal�[90m{(true, true, true, true, true, true, true, true, true, true, true)}�[39m, �[90mRT�[39m::�[0mVal�[90m{@NamedTuple{1, 2, 3}}�[39m, �[90mf�[39m::�[0mtypeof(hvcat), �[90mdf�[39m::�[0mNothing, �[90mprimal_1�[39m::�[0mTuple�[90m{Int64, Int64, Int64}�[39m, �[90mshadow_1_1�[39m::�[0mNothing, �[90mprimal_2�[39m::�[0mFloat64, �[90mshadow_2_1�[39m::�[0mBase.RefValue�[90m{Float64}�[39m, �[90mprimal_3�[39m::�[0mFloat64, �[90mshadow_3_1�[39m::�[0mNothing, �[90mprimal_4�[39m::�[0mFloat64, �[90mshadow_4_1�[39m::�[0mNothing, �[90mprimal_5�[39m::�[0mFloat64, �[90mshadow_5_1�[39m::�[0mNothing, �[90mprimal_6�[39m::�[0mFloat64, �[90mshadow_6_1�[39m::�[0mBase.RefValue�[90m{Float64}�[39m, �[90mprimal_7�[39m::�[0mFloat64, �[90mshadow_7_1�[39m::�[0mNothing, �[90mprimal_8�[39m::�[0mFloat64, �[90mshadow_8_1�[39m::�[0mNothing, �[90mprimal_9�[39m::�[0mFloat64, �[90mshadow_9_1�[39m::�[0mNothing, �[90mprimal_10�[39m::�[0mFloat64, �[90mshadow_10_1�[39m::�[0mBase.RefValue�[90m{Float64}�[39m�[0m�[1m)�[22m
2024-02-10T15:19:26.0612979Z   �[90m       @�[39m �[36mEnzyme.Compiler�[39m �[90m~/.julia/packages/Enzyme/x7HCA/src/rules/�[39m�[90m�[4mjitrules.jl:179�[24m�[39m
2024-02-10T15:19:26.0614189Z    [67089] �[0m�[1mhvcat�[22m
2024-02-10T15:19:26.0615849Z   �[90m       @�[39m �[90m/opt/hostedtoolcache/julia/1.10.0/x64/share/julia/stdlib/v1.10/SparseArrays/src/�[39m�[90m�[4msparsevector.jl:1269�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:19:26.0617492Z    [67090] �[0m�[1mbnn�[22m
2024-02-10T15:19:26.0618410Z   �[90m       @�[39m �[90m~/work/Turing.jl/Turing.jl/test/mcmc/�[39m�[90m�[4mhmc.jl:90�[24m�[39m
2024-02-10T15:19:26.0619340Z    [67091] �[0m�[1m_evaluate!!�[22m
2024-02-10T15:19:26.0620535Z   �[90m       @�[39m �[90m~/.julia/packages/DynamicPPL/U5lel/src/�[39m�[90m�[4mmodel.jl:963�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:19:26.0621705Z    [67092] �[0m�[1mevaluate_threadsafe!!�[22m
2024-02-10T15:19:26.0622999Z   �[90m       @�[39m �[90m~/.julia/packages/DynamicPPL/U5lel/src/�[39m�[90m�[4mmodel.jl:952�[24m�[39m
2024-02-10T15:19:26.0624139Z    [67093] �[0m�[1mevaluate!!�[22m
2024-02-10T15:19:26.0625304Z   �[90m       @�[39m �[90m~/.julia/packages/DynamicPPL/U5lel/src/�[39m�[90m�[4mmodel.jl:887�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:19:26.0626424Z    [67094] �[0m�[1mlogdensity�[22m
2024-02-10T15:19:26.0627817Z   �[90m       @�[39m �[90m~/.julia/packages/DynamicPPL/U5lel/src/�[39m�[90m�[4mlogdensityfunction.jl:94�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:19:26.0629049Z    [67095] �[0m�[1mlogdensity�[22m
2024-02-10T15:19:26.0630326Z   �[90m       @�[39m �[90m~/.julia/packages/DynamicPPL/U5lel/src/�[39m�[90m�[4mlogdensityfunction.jl:0�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:19:26.0631716Z    [67096] �[0m�[1mdiffejulia_logdensity_55943_inner_14wrap�[22m
2024-02-10T15:19:26.0633006Z   �[90m       @�[39m �[90m~/.julia/packages/DynamicPPL/U5lel/src/�[39m�[90m�[4mlogdensityfunction.jl:0�[24m�[39m
2024-02-10T15:19:26.0634094Z    [67097] �[0m�[1mmacro expansion�[22m
2024-02-10T15:19:26.0635282Z   �[90m       @�[39m �[90m~/.julia/packages/Enzyme/x7HCA/src/�[39m�[90m�[4mcompiler.jl:5285�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:19:26.0636390Z    [67098] �[0m�[1menzyme_call�[22m
2024-02-10T15:19:26.0637550Z   �[90m       @�[39m �[90m~/.julia/packages/Enzyme/x7HCA/src/�[39m�[90m�[4mcompiler.jl:4963�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:19:26.0638820Z    [67099] �[0m�[1mCombinedAdjointThunk�[22m
2024-02-10T15:19:26.0640035Z   �[90m       @�[39m �[90m~/.julia/packages/Enzyme/x7HCA/src/�[39m�[90m�[4mcompiler.jl:4905�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:19:26.0641127Z    [67100] �[0m�[1mautodiff�[22m
2024-02-10T15:19:26.0642240Z   �[90m       @�[39m �[90m~/.julia/packages/Enzyme/x7HCA/src/�[39m�[90m�[4mEnzyme.jl:215�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:19:26.0643463Z    [67101] �[0m�[1mautodiff�[22m
2024-02-10T15:19:26.0644573Z   �[90m       @�[39m �[90m~/.julia/packages/Enzyme/x7HCA/src/�[39m�[90m�[4mEnzyme.jl:224�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:19:26.0645730Z    [67102] �[0m�[1mlogdensity_and_gradient�[22m
2024-02-10T15:19:26.0647317Z   �[90m       @�[39m �[90m~/.julia/packages/LogDensityProblemsAD/OQ0BL/ext/�[39m�[90m�[4mLogDensityProblemsADEnzymeExt.jl:73�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:19:26.0648779Z    [67103] �[0m�[1m∂logπ∂θ�[22m
2024-02-10T15:19:26.0649921Z   �[90m       @�[39m �[90m~/work/Turing.jl/Turing.jl/src/mcmc/�[39m�[90m�[4mhmc.jl:159�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:19:26.0679771Z    [67104] �[0m�[1m∂H∂θ�[22m�[0m�[1m(�[22m�[90mh�[39m::�[0mAdvancedHMC.Hamiltonian�[90m{AdvancedHMC.UnitEuclideanMetric{Float64, Tuple{Int64}}, AdvancedHMC.GaussianKinetic, Base.Fix1{typeof(LogDensityProblems.logdensity), LogDensityProblemsADEnzymeExt.EnzymeGradientLogDensity{LogDensityFunction{DynamicPPL.TypedVarInfo{@NamedTuple{b1::DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:b1, Setfield.IdentityLens}, Int64}, Vector{FullNormal}, Vector{AbstractPPL.VarName{:b1, Setfield.IdentityLens}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, w11::DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:w11, Setfield.IdentityLens}, Int64}, Vector{FullNormal}, Vector{AbstractPPL.VarName{:w11, Setfield.IdentityLens}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, w12::DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:w12, Setfield.IdentityLens}, Int64}, Vector{FullNormal}, Vector{AbstractPPL.VarName{:w12, Setfield.IdentityLens}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, w13::DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:w13, Setfield.IdentityLens}, Int64}, Vector{FullNormal}, Vector{AbstractPPL.VarName{:w13, Setfield.IdentityLens}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, bo::DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:bo, Setfield.IdentityLens}, Int64}, Vector{Normal{Float64}}, Vector{AbstractPPL.VarName{:bo, Setfield.IdentityLens}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, wo::DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:wo, Setfield.IdentityLens}, Int64}, Vector{FullNormal}, Vector{AbstractPPL.VarName{:wo, Setfield.IdentityLens}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}}, Float64}, DynamicPPL.Model{var"#bnn#95"{Float64, Vector{Vector{Float64}}, Int64, var"#nn#90"}, (:ts,), (), (), Tuple{Vector{Float64}}, Tuple{}, DynamicPPL.DefaultContext}, DynamicPPL.SamplingContext{Sampler{HMC{AutoEnzyme{Nothing}, (), AdvancedHMC.UnitEuclideanMetric}}, DynamicPPL.DefaultContext, StableRNGs.LehmerRNG}}, EnzymeCore.ReverseMode{false, EnzymeCore.FFIABI}, Nothing}}, Turing.Inference.var"#∂logπ∂θ#31"{LogDensityProblemsADEnzymeExt.EnzymeGradientLogDensity{LogDensityFunction{DynamicPPL.TypedVarInfo{@NamedTuple{b1::DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:b1, Setfield.IdentityLens}, Int64}, Vector{FullNormal}, Vector{AbstractPPL.VarName{:b1, Setfield.IdentityLens}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, w11::DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:w11, Setfield.IdentityLens}, Int64}, Vector{FullNormal}, Vector{AbstractPPL.VarName{:w11, Setfield.IdentityLens}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, w12::DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:w12, Setfield.IdentityLens}, Int64}, Vector{FullNormal}, Vector{AbstractPPL.VarName{:w12, Setfield.IdentityLens}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, w13::DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:w13, Setfield.IdentityLens}, Int64}, Vector{FullNormal}, Vector{AbstractPPL.VarName{:w13, Setfield.IdentityLens}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, bo::DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:bo, Setfield.IdentityLens}, Int64}, Vector{Normal{Float64}}, Vector{AbstractPPL.VarName{:bo, Setfield.IdentityLens}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, wo::DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:wo, Setfield.IdentityLens}, Int64}, Vector{FullNormal}, Vector{AbstractPPL.VarName{:wo, Setfield.IdentityLens}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}}, Float64}, DynamicPPL.Model{var"#bnn#95"{Float64, Vector{Vector{Float64}}, Int64, var"#nn#90"}, (:ts,), (), (), Tuple{Vector{Float64}}, Tuple{}, DynamicPPL.DefaultContext}, DynamicPPL.SamplingContext{Sampler{HMC{AutoEnzyme{Nothing}, (), AdvancedHMC.UnitEuclideanMetric}}, DynamicPPL.DefaultContext, StableRNGs.LehmerRNG}}, EnzymeCore.ReverseMode{false, EnzymeCore.FFIABI}, Nothing}}}�[39m, �[90mθ�[39m::�[0mVector�[90m{Float64}�[39m�[0m�[1m)�[22m
2024-02-10T15:19:26.0708858Z   �[90m       @�[39m �[32mAdvancedHMC�[39m �[90m~/.julia/packages/AdvancedHMC/AlvV4/src/�[39m�[90m�[4mhamiltonian.jl:38�[24m�[39m
2024-02-10T15:19:26.0743523Z    [67105] �[0m�[1mphasepoint�[22m�[0m�[1m(�[22m�[90mh�[39m::�[0mAdvancedHMC.Hamiltonian�[90m{AdvancedHMC.UnitEuclideanMetric{Float64, Tuple{Int64}}, AdvancedHMC.GaussianKinetic, Base.Fix1{typeof(LogDensityProblems.logdensity), LogDensityProblemsADEnzymeExt.EnzymeGradientLogDensity{LogDensityFunction{DynamicPPL.TypedVarInfo{@NamedTuple{b1::DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:b1, Setfield.IdentityLens}, Int64}, Vector{FullNormal}, Vector{AbstractPPL.VarName{:b1, Setfield.IdentityLens}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, w11::DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:w11, Setfield.IdentityLens}, Int64}, Vector{FullNormal}, Vector{AbstractPPL.VarName{:w11, Setfield.IdentityLens}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, w12::DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:w12, Setfield.IdentityLens}, Int64}, Vector{FullNormal}, Vector{AbstractPPL.VarName{:w12, Setfield.IdentityLens}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, w13::DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:w13, Setfield.IdentityLens}, Int64}, Vector{FullNormal}, Vector{AbstractPPL.VarName{:w13, Setfield.IdentityLens}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, bo::DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:bo, Setfield.IdentityLens}, Int64}, Vector{Normal{Float64}}, Vector{AbstractPPL.VarName{:bo, Setfield.IdentityLens}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, wo::DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:wo, Setfield.IdentityLens}, Int64}, Vector{FullNormal}, Vector{AbstractPPL.VarName{:wo, Setfield.IdentityLens}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}}, Float64}, DynamicPPL.Model{var"#bnn#95"{Float64, Vector{Vector{Float64}}, Int64, var"#nn#90"}, (:ts,), (), (), Tuple{Vector{Float64}}, Tuple{}, DynamicPPL.DefaultContext}, DynamicPPL.SamplingContext{Sampler{HMC{AutoEnzyme{Nothing}, (), AdvancedHMC.UnitEuclideanMetric}}, DynamicPPL.DefaultContext, StableRNGs.LehmerRNG}}, EnzymeCore.ReverseMode{false, EnzymeCore.FFIABI}, Nothing}}, Turing.Inference.var"#∂logπ∂θ#31"{LogDensityProblemsADEnzymeExt.EnzymeGradientLogDensity{LogDensityFunction{DynamicPPL.TypedVarInfo{@NamedTuple{b1::DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:b1, Setfield.IdentityLens}, Int64}, Vector{FullNormal}, Vector{AbstractPPL.VarName{:b1, Setfield.IdentityLens}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, w11::DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:w11, Setfield.IdentityLens}, Int64}, Vector{FullNormal}, Vector{AbstractPPL.VarName{:w11, Setfield.IdentityLens}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, w12::DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:w12, Setfield.IdentityLens}, Int64}, Vector{FullNormal}, Vector{AbstractPPL.VarName{:w12, Setfield.IdentityLens}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, w13::DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:w13, Setfield.IdentityLens}, Int64}, Vector{FullNormal}, Vector{AbstractPPL.VarName{:w13, Setfield.IdentityLens}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, bo::DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:bo, Setfield.IdentityLens}, Int64}, Vector{Normal{Float64}}, Vector{AbstractPPL.VarName{:bo, Setfield.IdentityLens}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, wo::DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:wo, Setfield.IdentityLens}, Int64}, Vector{FullNormal}, Vector{AbstractPPL.VarName{:wo, Setfield.IdentityLens}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}}, Float64}, DynamicPPL.Model{var"#bnn#95"{Float64, Vector{Vector{Float64}}, Int64, var"#nn#90"}, (:ts,), (), (), Tuple{Vector{Float64}}, Tuple{}, DynamicPPL.DefaultContext}, DynamicPPL.SamplingContext{Sampler{HMC{AutoEnzyme{Nothing}, (), AdvancedHMC.UnitEuclideanMetric}}, DynamicPPL.DefaultContext, StableRNGs.LehmerRNG}}, EnzymeCore.ReverseMode{false, EnzymeCore.FFIABI}, Nothing}}}�[39m, �[90mθ�[39m::�[0mVector�[90m{Float64}�[39m, �[90mr�[39m::�[0mVector�[90m{Float64}�[39m�[0m�[1m)�[22m
2024-02-10T15:19:26.0774163Z   �[90m       @�[39m �[32mAdvancedHMC�[39m �[90m~/.julia/packages/AdvancedHMC/AlvV4/src/�[39m�[90m�[4mhamiltonian.jl:74�[24m�[39m
2024-02-10T15:19:26.0777071Z    [67106] �[0m�[1mphasepoint�[22m�[0m�[1m(�[22m�[90mh�[39m::�[0mAdvancedHMC.Hamiltonian, �[90mθ�[39m::�[0mT, �[90mr�[39m::�[0mT�[0m�[1m)�[22m where T<:(AbstractVecOrMat)
2024-02-10T15:19:26.0779226Z   �[90m       @�[39m �[32mAdvancedHMC�[39m �[90m~/.julia/packages/AdvancedHMC/AlvV4/src/�[39m�[90m�[4mhamiltonian.jl:155�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:19:26.0797456Z    [67107] �[0m�[1minitialstep�[22m�[0m�[1m(�[22m�[90mrng�[39m::�[0mStableRNGs.LehmerRNG, �[90mmodel�[39m::�[0mDynamicPPL.Model�[90m{var"#bnn#95"{Float64, Vector{Vector{Float64}}, Int64, var"#nn#90"}, (:ts,), (), (), Tuple{Vector{Float64}}, Tuple{}, DynamicPPL.DefaultContext}�[39m, �[90mspl�[39m::�[0mSampler�[90m{HMC{AutoEnzyme{Nothing}, (), AdvancedHMC.UnitEuclideanMetric}}�[39m, �[90mvi�[39m::�[0mDynamicPPL.TypedVarInfo�[90m{@NamedTuple{b1::DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:b1, Setfield.IdentityLens}, Int64}, Vector{FullNormal}, Vector{AbstractPPL.VarName{:b1, Setfield.IdentityLens}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, w11::DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:w11, Setfield.IdentityLens}, Int64}, Vector{FullNormal}, Vector{AbstractPPL.VarName{:w11, Setfield.IdentityLens}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, w12::DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:w12, Setfield.IdentityLens}, Int64}, Vector{FullNormal}, Vector{AbstractPPL.VarName{:w12, Setfield.IdentityLens}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, w13::DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:w13, Setfield.IdentityLens}, Int64}, Vector{FullNormal}, Vector{AbstractPPL.VarName{:w13, Setfield.IdentityLens}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, bo::DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:bo, Setfield.IdentityLens}, Int64}, Vector{Normal{Float64}}, Vector{AbstractPPL.VarName{:bo, Setfield.IdentityLens}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, wo::DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:wo, Setfield.IdentityLens}, Int64}, Vector{FullNormal}, Vector{AbstractPPL.VarName{:wo, Setfield.IdentityLens}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}}, Float64}�[39m; �[90minitial_params�[39m::�[0mNothing, �[90mnadapts�[39m::�[0mInt64, �[90mkwargs�[39m::�[0m@Kwargs�[90m{}�[39m�[0m�[1m)�[22m
2024-02-10T15:19:26.0811577Z   �[90m       @�[39m �[33mTuring.Inference�[39m �[90m~/work/Turing.jl/Turing.jl/src/mcmc/�[39m�[90m�[4mhmc.jl:163�[24m�[39m
2024-02-10T15:19:26.0815479Z    [67108] �[0m�[1mstep�[22m�[0m�[1m(�[22m�[90mrng�[39m::�[0mStableRNGs.LehmerRNG, �[90mmodel�[39m::�[0mDynamicPPL.Model�[90m{var"#bnn#95"{Float64, Vector{Vector{Float64}}, Int64, var"#nn#90"}, (:ts,), (), (), Tuple{Vector{Float64}}, Tuple{}, DynamicPPL.DefaultContext}�[39m, �[90mspl�[39m::�[0mSampler�[90m{HMC{AutoEnzyme{Nothing}, (), AdvancedHMC.UnitEuclideanMetric}}�[39m; �[90minitial_params�[39m::�[0mNothing, �[90mkwargs�[39m::�[0m@Kwargs�[90m{}�[39m�[0m�[1m)�[22m
2024-02-10T15:19:26.0819138Z   �[90m       @�[39m �[35mDynamicPPL�[39m �[90m~/.julia/packages/DynamicPPL/U5lel/src/�[39m�[90m�[4msampler.jl:116�[24m�[39m
2024-02-10T15:19:26.0820156Z    [67109] �[0m�[1mstep�[22m
2024-02-10T15:19:26.0821216Z   �[90m       @�[39m �[90m~/.julia/packages/DynamicPPL/U5lel/src/�[39m�[90m�[4msampler.jl:99�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:19:26.0822290Z    [67110] �[0m�[1mmacro expansion�[22m
2024-02-10T15:19:26.0823429Z   �[90m       @�[39m �[90m~/.julia/packages/AbstractMCMC/Es490/src/�[39m�[90m�[4msample.jl:127�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:19:26.0824515Z    [67111] �[0m�[1mmacro expansion�[22m
2024-02-10T15:19:26.0825793Z   �[90m       @�[39m �[90m~/.julia/packages/ProgressLogging/6KXlp/src/�[39m�[90m�[4mProgressLogging.jl:328�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:19:26.0829389Z    [67112] �[0m�[1m(::AbstractMCMC.var"#21#22"{Bool, String, Nothing, Int64, Int64, Nothing, @Kwargs{}, StableRNGs.LehmerRNG, DynamicPPL.Model{var"#bnn#95"{Float64, Vector{Vector{Float64}}, Int64, var"#nn#90"}, (:ts,), (), (), Tuple{Vector{Float64}}, Tuple{}, DynamicPPL.DefaultContext}, Sampler{HMC{AutoEnzyme{Nothing}, (), AdvancedHMC.UnitEuclideanMetric}}, Int64, Int64})�[22m�[0m�[1m(�[22m�[0m�[1m)�[22m
2024-02-10T15:19:26.0832596Z   �[90m       @�[39m �[36mAbstractMCMC�[39m �[90m~/.julia/packages/AbstractMCMC/Es490/src/�[39m�[90m�[4mlogging.jl:12�[24m�[39m
2024-02-10T15:19:26.0834153Z    [67113] �[0m�[1mwith_logstate�[22m�[0m�[1m(�[22m�[90mf�[39m::�[0mFunction, �[90mlogstate�[39m::�[0mAny�[0m�[1m)�[22m
2024-02-10T15:19:26.0835392Z   �[90m       @�[39m �[90mBase.CoreLogging�[39m �[90m./�[39m�[90m�[4mlogging.jl:515�[24m�[39m
2024-02-10T15:19:26.0838389Z    [67114] �[0m�[1mwith_logger�[22m�[0m�[1m(�[22m�[90mf�[39m::�[0mFunction, �[90mlogger�[39m::�[0mLoggingExtras.TeeLogger�[90m{Tuple{LoggingExtras.EarlyFilteredLogger{TerminalLoggers.TerminalLogger, AbstractMCMC.var"#1#3"{Module}}, LoggingExtras.EarlyFilteredLogger{Logging.ConsoleLogger, AbstractMCMC.var"#2#4"{Module}}}}�[39m�[0m�[1m)�[22m
2024-02-10T15:19:26.0840998Z   �[90m       @�[39m �[90mBase.CoreLogging�[39m �[90m./�[39m�[90m�[4mlogging.jl:627�[24m�[39m
2024-02-10T15:19:26.0842741Z    [67115] �[0m�[1mwith_progresslogger�[22m�[0m�[1m(�[22m�[90mf�[39m::�[0mFunction, �[90m_module�[39m::�[0mModule, �[90mlogger�[39m::�[0mLogging.ConsoleLogger�[0m�[1m)�[22m
2024-02-10T15:19:26.0844599Z   �[90m       @�[39m �[36mAbstractMCMC�[39m �[90m~/.julia/packages/AbstractMCMC/Es490/src/�[39m�[90m�[4mlogging.jl:36�[24m�[39m
2024-02-10T15:19:26.0845674Z    [67116] �[0m�[1mmacro expansion�[22m
2024-02-10T15:19:26.0846846Z   �[90m       @�[39m �[90m~/.julia/packages/AbstractMCMC/Es490/src/�[39m�[90m�[4mlogging.jl:11�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:19:26.0852397Z    [67117] �[0m�[1mmcmcsample�[22m�[0m�[1m(�[22m�[90mrng�[39m::�[0mStableRNGs.LehmerRNG, �[90mmodel�[39m::�[0mDynamicPPL.Model�[90m{var"#bnn#95"{Float64, Vector{Vector{Float64}}, Int64, var"#nn#90"}, (:ts,), (), (), Tuple{Vector{Float64}}, Tuple{}, DynamicPPL.DefaultContext}�[39m, �[90msampler�[39m::�[0mSampler�[90m{HMC{AutoEnzyme{Nothing}, (), AdvancedHMC.UnitEuclideanMetric}}�[39m, �[90mN�[39m::�[0mInt64; �[90mprogress�[39m::�[0mBool, �[90mprogressname�[39m::�[0mString, �[90mcallback�[39m::�[0mNothing, �[90mdiscard_initial�[39m::�[0mInt64, �[90mthinning�[39m::�[0mInt64, �[90mchain_type�[39m::�[0mType, �[90minitial_state�[39m::�[0mNothing, �[90mkwargs�[39m::�[0m@Kwargs�[90m{}�[39m�[0m�[1m)�[22m
2024-02-10T15:19:26.0857128Z   �[90m       @�[39m �[36mAbstractMCMC�[39m �[90m~/.julia/packages/AbstractMCMC/Es490/src/�[39m�[90m�[4msample.jl:117�[24m�[39m
2024-02-10T15:19:26.0861730Z    [67118] �[0m�[1msample�[22m�[0m�[1m(�[22m�[90mrng�[39m::�[0mStableRNGs.LehmerRNG, �[90mmodel�[39m::�[0mDynamicPPL.Model�[90m{var"#bnn#95"{Float64, Vector{Vector{Float64}}, Int64, var"#nn#90"}, (:ts,), (), (), Tuple{Vector{Float64}}, Tuple{}, DynamicPPL.DefaultContext}�[39m, �[90msampler�[39m::�[0mSampler�[90m{HMC{AutoEnzyme{Nothing}, (), AdvancedHMC.UnitEuclideanMetric}}�[39m, �[90mN�[39m::�[0mInt64; �[90mchain_type�[39m::�[0mType, �[90mresume_from�[39m::�[0mNothing, �[90minitial_state�[39m::�[0mNothing, �[90mkwargs�[39m::�[0m@Kwargs�[90m{}�[39m�[0m�[1m)�[22m
2024-02-10T15:19:26.0865707Z   �[90m       @�[39m �[35mDynamicPPL�[39m �[90m~/.julia/packages/DynamicPPL/U5lel/src/�[39m�[90m�[4msampler.jl:93�[24m�[39m
2024-02-10T15:19:26.0866719Z    [67119] �[0m�[1msample�[22m
2024-02-10T15:19:26.0867892Z   �[90m       @�[39m �[35mDynamicPPL�[39m �[90m~/.julia/packages/DynamicPPL/U5lel/src/�[39m�[90m�[4msampler.jl:83�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:19:26.0869024Z    [67120] �[0m�[1m#sample#3�[22m
2024-02-10T15:19:26.0870221Z   �[90m       @�[39m �[33mTuring.Inference�[39m �[90m~/work/Turing.jl/Turing.jl/src/mcmc/�[39m�[90m�[4mInference.jl:207�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:19:26.0873734Z    [67121] �[0m�[1msample�[22m�[0m�[1m(�[22m�[90mrng�[39m::�[0mStableRNGs.LehmerRNG, �[90mmodel�[39m::�[0mDynamicPPL.Model�[90m{var"#bnn#95"{Float64, Vector{Vector{Float64}}, Int64, var"#nn#90"}, (:ts,), (), (), Tuple{Vector{Float64}}, Tuple{}, DynamicPPL.DefaultContext}�[39m, �[90malg�[39m::�[0mHMC�[90m{AutoEnzyme{Nothing}, (), AdvancedHMC.UnitEuclideanMetric}�[39m, �[90mN�[39m::�[0mInt64�[0m�[1m)�[22m
2024-02-10T15:19:26.0876913Z   �[90m       @�[39m �[33mTuring.Inference�[39m �[90m~/work/Turing.jl/Turing.jl/src/mcmc/�[39m�[90m�[4mInference.jl:200�[24m�[39m
2024-02-10T15:19:26.0878034Z    [67122] �[0m�[1mmacro expansion�[22m
2024-02-10T15:19:26.0879064Z   �[90m       @�[39m �[90m~/work/Turing.jl/Turing.jl/test/mcmc/�[39m�[90m�[4mhmc.jl:107�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:19:26.0880059Z    [67123] �[0m�[1mmacro expansion�[22m
2024-02-10T15:19:26.0881620Z   �[90m       @�[39m �[90m/opt/hostedtoolcache/julia/1.10.0/x64/share/julia/stdlib/v1.10/Test/src/�[39m�[90m�[4mTest.jl:1577�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:19:26.0883182Z    [67124] �[0m�[1mmacro expansion�[22m
2024-02-10T15:19:26.0884373Z   �[90m       @�[39m �[90m~/work/Turing.jl/Turing.jl/test/mcmc/�[39m�[90m�[4mhmc.jl:66�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:19:26.0885442Z    [67125] �[0m�[1mmacro expansion�[22m
2024-02-10T15:19:26.0887107Z   �[90m       @�[39m �[90m/opt/hostedtoolcache/julia/1.10.0/x64/share/julia/stdlib/v1.10/Test/src/�[39m�[90m�[4mTest.jl:1669�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:19:26.0888521Z    [67126] top-level scope
2024-02-10T15:19:26.0889447Z   �[90m       @�[39m �[90m~/work/Turing.jl/Turing.jl/test/mcmc/�[39m�[90m�[4mhmc.jl:1690�[24m�[39m
2024-02-10T15:19:26.0890737Z    [67127] �[0m�[1minclude�[22m�[0m�[1m(�[22m�[90mfname�[39m::�[0mString�[0m�[1m)�[22m
2024-02-10T15:19:26.0891914Z   �[90m       @�[39m �[90mBase.MainInclude�[39m �[90m./�[39m�[90m�[4mclient.jl:489�[24m�[39m
2024-02-10T15:19:26.0892801Z    [67128] �[0m�[1mmacro expansion�[22m
2024-02-10T15:19:26.0894059Z   �[90m       @�[39m �[90m~/.julia/packages/TimerOutputs/RsWnF/src/�[39m�[90m�[4mTimerOutput.jl:237�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:19:26.0895271Z    [67129] �[0m�[1mmacro expansion�[22m
2024-02-10T15:19:26.0896502Z   �[90m       @�[39m �[90m~/work/Turing.jl/Turing.jl/test/�[39m�[90m�[4mruntests.jl:82�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:19:26.0897567Z    [67130] �[0m�[1mmacro expansion�[22m
2024-02-10T15:19:26.0899116Z   �[90m       @�[39m �[90m/opt/hostedtoolcache/julia/1.10.0/x64/share/julia/stdlib/v1.10/Test/src/�[39m�[90m�[4mTest.jl:1577�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:19:26.0900545Z    [67131] �[0m�[1mmacro expansion�[22m
2024-02-10T15:19:26.0901662Z   �[90m       @�[39m �[90m~/work/Turing.jl/Turing.jl/test/�[39m�[90m�[4mruntests.jl:80�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:19:26.0902717Z    [67132] �[0m�[1mmacro expansion�[22m
2024-02-10T15:19:26.0904003Z   �[90m       @�[39m �[90m~/.julia/packages/TimerOutputs/RsWnF/src/�[39m�[90m�[4mTimerOutput.jl:237�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:19:26.0905206Z    [67133] �[0m�[1mmacro expansion�[22m
2024-02-10T15:19:26.0906329Z   �[90m       @�[39m �[90m~/work/Turing.jl/Turing.jl/test/�[39m�[90m�[4mruntests.jl:78�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:19:26.0907499Z    [67134] �[0m�[1mmacro expansion�[22m
2024-02-10T15:19:26.0909038Z   �[90m       @�[39m �[90m/opt/hostedtoolcache/julia/1.10.0/x64/share/julia/stdlib/v1.10/Test/src/�[39m�[90m�[4mTest.jl:1577�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:19:26.0910438Z    [67135] top-level scope
2024-02-10T15:19:26.0911330Z   �[90m       @�[39m �[90m~/work/Turing.jl/Turing.jl/test/�[39m�[90m�[4mruntests.jl:67�[24m�[39m
2024-02-10T15:19:26.0912613Z    [67136] �[0m�[1minclude�[22m�[0m�[1m(�[22m�[90mfname�[39m::�[0mString�[0m�[1m)�[22m
2024-02-10T15:19:26.0913815Z   �[90m       @�[39m �[90mBase.MainInclude�[39m �[90m./�[39m�[90m�[4mclient.jl:489�[24m�[39m
2024-02-10T15:19:26.0914686Z    [67137] top-level scope
2024-02-10T15:19:26.0915256Z   �[90m       @�[39m �[90m�[4mnone:6�[24m�[39m
2024-02-10T15:19:26.0915863Z    [67138] �[0m�[1meval�[22m
2024-02-10T15:19:26.0916729Z   �[90m       @�[39m �[90mCore�[39m �[90m./�[39m�[90m�[4mboot.jl:385�[24m�[39m�[90m [inlined]�[39m
2024-02-10T15:19:26.0918002Z    [67139] �[0m�[1mexec_options�[22m�[0m�[1m(�[22m�[90mopts�[39m::�[0mBase.JLOptions�[0m�[1m)�[22m
2024-02-10T15:19:26.0919082Z   �[90m       @�[39m �[90mBase�[39m �[90m./�[39m�[90m�[4mclient.jl:291�[24m�[39m
2024-02-10T15:19:42.2181341Z �[36m�[1m┌ �[22m�[39m�[36m�[1mInfo: �[22m�[39mFound initial step size
2024-02-10T15:19:42.2182272Z �[36m�[1m└ �[22m�[39m  ϵ = 1.0

@devmotion
Copy link
Member Author

I'm busy with other things this weekend but will have a look next week. I'm a bit surprised about the dimension mismatch, I thought this issue was fixed by a few of the improvements to the cholesky rule in Enzyme. Maybe only my MWE was fixed.

@torfjelde
Copy link
Member

A few breaking examples.

Truncated normal

Simple model with only a truncated(Normal(), lower=0) in it: https://github.com/torfjelde/EnzymeCon2024-Turing.jl-benchmarks/blob/9fb22e880ef35282b6c0fc57e0952759be1c415a/src/models/fails/truncated-normal.jl

This one ends in a segfault

State space model with matrices

A state space model where specifically the matrix version breaks but the "non-matrix" version doesn't (vector of vectors).

If you run the following code:

using TuringEnzymeCon2024
using Enzyme
using Turing, LogDensityProblems, LogDensityProblemsAD, ADTypes

Enzyme.API.runtimeActivity!(true);
Enzyme.API.typeWarning!(false);

example_ok = TuringEnzymeCon2024.SatelliteExample()
model_ok = TuringEnzymeCon2024.make_model(example_ok, 10)
f_ok = ADgradient(AutoEnzyme(), Turing.LogDensityFunction(model_ok))
LogDensityProblems.logdensity_and_gradient(f_ok, Turing.VarInfo(model_ok)[:])

example_fail = TuringEnzymeCon2024.SatelliteMatrixExample()
model_fail = TuringEnzymeCon2024.make_model(example_fail, 10)
f_fail = ADgradient(AutoEnzyme(), Turing.LogDensityFunction(model_fail))
LogDensityProblems.logdensity_and_gradient(f_fail, Turing.VarInfo(model_fail)[:])

This one results in the matrix being converted into Matrix{Any} (we use BangBang.jl which does type expansion if needed), but I've checked that this is not the case when not ADing + works with other AD backends, e.g. ForwardDiff, so seems to be an issue specifically with Enzyme 😕

@yebai
Copy link
Member

yebai commented Apr 8, 2024

truncated(Normal(), lower=0)

@torfjelde, is there an MWE example that only depends on Distributions.jl?

@yebai
Copy link
Member

yebai commented Apr 8, 2024

The Cholesky-related test is still failing.

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

Successfully merging this pull request may close these issues.

None yet

9 participants