Skip to content

Conversation

wsmoses
Copy link
Contributor

@wsmoses wsmoses commented Sep 21, 2025

No description provided.

Copy link

codecov bot commented Sep 21, 2025

Codecov Report

❌ Patch coverage is 0% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 82.39%. Comparing base (0af3894) to head (13df62f).
⚠️ Report is 1 commits behind head on main.

Files with missing lines Patch % Lines
src/logdensityfunction.jl 0.00% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1048      +/-   ##
==========================================
- Coverage   82.41%   82.39%   -0.03%     
==========================================
  Files          39       39              
  Lines        3964     3965       +1     
==========================================
  Hits         3267     3267              
- Misses        697      698       +1     

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

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@coveralls
Copy link

coveralls commented Sep 21, 2025

Pull Request Test Coverage Report for Build 17981527989

Warning: This coverage report may be inaccurate.

This pull request's base commit is no longer the HEAD commit of its target branch. This means it includes changes from outside the original pull request, including, potentially, unrelated coverage changes.

Details

  • 0 of 1 (0.0%) changed or added relevant line in 1 file are covered.
  • 19 unchanged lines in 4 files lost coverage.
  • Overall coverage decreased (-0.02%) to 82.646%

Changes Missing Coverage Covered Lines Changed/Added Lines %
src/logdensityfunction.jl 0 1 0.0%
Files with Coverage Reduction New Missed Lines %
src/model.jl 1 86.73%
src/simple_varinfo.jl 2 70.86%
src/varinfo.jl 6 84.65%
src/threadsafe.jl 10 64.86%
Totals Coverage Status
Change from base Build 17979003992: -0.02%
Covered Lines: 3267
Relevant Lines: 3953

💛 - Coveralls

@penelopeysm
Copy link
Member

@wsmoses Is there a particular motivation for avoiding closures?

I benchmarked Enzyme on the demo models before / after this PR and I don't think there's a significant difference.

model                                       adtype         PR           main         PR/main      mean         std
demo_dot_assume_observe                     EnzymeForward  2.790062609  2.694954128  1.035291317  0.990045805  0.040073602
demo_assume_index_observe                   EnzymeForward  2.596387659  2.578357908  1.006992726               
demo_assume_multivariate_observe            EnzymeForward  2.517116744  2.474788406  1.017103821               
demo_dot_assume_observe_index               EnzymeForward  2.731276662  2.699904708  1.011619652               
demo_assume_dot_observe                     EnzymeForward  2.174118519  2.308166365  0.94192453                
demo_assume_multivariate_observe_literal    EnzymeForward  2.597954168  2.491519174  1.042718914               
demo_dot_assume_observe_index_literal       EnzymeForward  2.779921569  2.704245919  1.027984012               
demo_assume_dot_observe_literal             EnzymeForward  2.033625383  2.165235914  0.93921654                
demo_assume_observe_literal                 EnzymeForward  2.143070108  2.32280181   0.922622885               
demo_assume_submodel_observe_index_literal  EnzymeForward  2.352249542  2.379866934  0.988395405               
demo_dot_assume_observe_submodel            EnzymeForward  2.263996917  2.281875212  0.992165086               
demo_dot_assume_observe_matrix_index        EnzymeForward  2.748338877  2.750740741  0.99912683                
demo_assume_matrix_observe_matrix_index     EnzymeForward  2.269650655  2.40064486   0.945433743               
demo_dot_assume_observe                     EnzymeReverse  2.451060757  2.391132989  1.025062499  0.996702429  0.043912097
demo_assume_index_observe                   EnzymeReverse  2.431079494  2.393665158  1.015630564               
demo_assume_multivariate_observe            EnzymeReverse  2.366047745  2.324866673  1.017713305               
demo_dot_assume_observe_index               EnzymeReverse  2.578512397  2.552739812  1.010096048               
demo_assume_dot_observe                     EnzymeReverse  2.159118182  2.298820356  0.939228755               
demo_assume_multivariate_observe_literal    EnzymeReverse  2.313383019  2.219312602  1.042387186               
demo_dot_assume_observe_index_literal       EnzymeReverse  2.18230303   2.166588824  1.007252971               
demo_assume_dot_observe_literal             EnzymeReverse  1.978588546  2.101183557  0.941654307               
demo_assume_observe_literal                 EnzymeReverse  2.06946374   2.163492063  0.956538633               
demo_assume_submodel_observe_index_literal  EnzymeReverse  2.112070796  2.038330442  1.03617684                
demo_dot_assume_observe_submodel            EnzymeReverse  2.12054106   2.016650313  1.051516491               
demo_dot_assume_observe_matrix_index        EnzymeReverse  2.458035211  2.461277554  0.998682659               
demo_assume_matrix_observe_matrix_index     EnzymeReverse  2.159863496  2.360013093  0.915191319               

Benchmarking code:

using DynamicPPL, Distributions, Enzyme, ADTypes, DataFrames, CSV
using DynamicPPL.TestUtils.AD: run_ad, ADResult, NoTest

# For this PR I removed `function_annotation`
ADTYPES = Dict(
    "EnzymeForward" => AutoEnzyme(; mode=set_runtime_activity(Forward, true), function_annotation=Const),
    "EnzymeReverse" => AutoEnzyme(; mode=set_runtime_activity(Reverse, true), function_annotation=Const),
)
MODELS = DynamicPPL.TestUtils.DEMO_MODELS

RESULTS = []
for model in MODELS
    for (adtype_name, adtype) in ADTYPES
        result = run_ad(model, adtype; test=NoTest(), benchmark=true)
        time_vs_primal = result.grad_time / result.primal_time
        push!(RESULTS, (model="$(model.f)", adtype=adtype_name, time=time_vs_primal))
    end
end
RESULT_DF = DataFrame(RESULTS)
CSV.write("results.csv", RESULT_DF)

@wsmoses
Copy link
Contributor Author

wsmoses commented Sep 24, 2025

It makes it more natively compatible (eg no need for function annotation), which comes with plenty of benefits including a partial prereq for reactant compatibility

@penelopeysm
Copy link
Member

Okay, I'll bump a patch and release!

@penelopeysm penelopeysm merged commit fcdfe03 into TuringLang:main Sep 24, 2025
14 of 21 checks passed
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.

3 participants