Skip to content

Conversation

penelopeysm
Copy link
Member

@penelopeysm penelopeysm commented Sep 24, 2025

This PR purely shuffles code around, there are no real code changes.

@penelopeysm penelopeysm changed the base branch from main to breaking September 24, 2025 16:49
Copy link
Contributor

github-actions bot commented Sep 24, 2025

Benchmark Report for Commit dd3a13c

Computer Information

Julia Version 1.11.7
Commit f2b3dbda30a (2025-09-08 12:10 UTC)
Build Info:
  Official https://julialang.org/ release
Platform Info:
  OS: Linux (x86_64-linux-gnu)
  CPU: 4 × AMD EPYC 7763 64-Core Processor
  WORD_SIZE: 64
  LLVM: libLLVM-16.0.6 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Benchmark Results

┌───────────────────────┬───────┬─────────────┬───────────────────┬────────┬────────────────┬─────────────────┐
│                 Model │   Dim │  AD Backend │           VarInfo │ Linked │ t(eval)/t(ref) │ t(grad)/t(eval) │
├───────────────────────┼───────┼─────────────┼───────────────────┼────────┼────────────────┼─────────────────┤
│ Simple assume observe │     1 │ forwarddiff │             typed │  false │            9.1 │             1.5 │
│           Smorgasbord │   201 │ forwarddiff │             typed │  false │          649.9 │            43.6 │
│           Smorgasbord │   201 │ forwarddiff │ simple_namedtuple │   true │          424.3 │            53.0 │
│           Smorgasbord │   201 │ forwarddiff │           untyped │   true │         1153.5 │            30.8 │
│           Smorgasbord │   201 │ forwarddiff │       simple_dict │   true │         6561.6 │            29.2 │
│           Smorgasbord │   201 │ reversediff │             typed │   true │         1052.6 │            40.3 │
│           Smorgasbord │   201 │    mooncake │             typed │   true │         1001.8 │             4.6 │
│    Loop univariate 1k │  1000 │    mooncake │             typed │   true │         5871.4 │             4.3 │
│       Multivariate 1k │  1000 │    mooncake │             typed │   true │         1015.2 │             8.8 │
│   Loop univariate 10k │ 10000 │    mooncake │             typed │   true │        66007.6 │             3.9 │
│      Multivariate 10k │ 10000 │    mooncake │             typed │   true │         8469.8 │            10.1 │
│               Dynamic │    10 │    mooncake │             typed │   true │          140.0 │            11.6 │
│              Submodel │     1 │    mooncake │             typed │   true │           12.5 │             5.1 │
│                   LDA │    12 │ reversediff │             typed │   true │         1027.2 │             2.1 │
└───────────────────────┴───────┴─────────────┴───────────────────┴────────┴────────────────┴─────────────────┘

Comment on lines -796 to -798
broadcast_safe(x) = x
broadcast_safe(x::Distribution) = (x,)
broadcast_safe(x::AbstractContext) = (x,)
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was no longer used anywhere

Comment on lines 176 to +181
include("contexts.jl")
include("contexts/default.jl")
include("contexts/init.jl")
include("contexts/transformation.jl")
include("contexts/prefix.jl")
include("contexts/conditionfix.jl") # Must come after contexts/prefix.jl
Copy link
Member Author

@penelopeysm penelopeysm Sep 24, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TLDR:

contexts.jl used to contain all the parent contexts, those have been moved to their own files.

  • Now contexts.jl includes only the interface methods for AbstractContext. In a sense it's more like abstract_context.jl.
  • It's still not fully documented exactly what the interface for AbstractContext is. I'd like to make that a separate PR though because I actually think NodeTrait can be removed which would simplify matters there.

context_implementations.jl used to contain stray methods for DefaultContext, PrefixContext, and submodels. Those have been sent to their respective files.

transforming.jl basically existed to define DynamicTransformationContext so I moved it into contexts/ too. That file also defined some methods for linking AbstractVarInfo so those were moved to abstract_varinfo.jl too since they form part of the interface methods for it.

@penelopeysm penelopeysm requested a review from mhauru September 24, 2025 16:57
@penelopeysm penelopeysm mentioned this pull request Sep 24, 2025
6 tasks
Copy link

codecov bot commented Sep 24, 2025

Codecov Report

❌ Patch coverage is 77.77778% with 52 lines in your changes missing coverage. Please review.
⚠️ Please upload report for BASE (breaking@5a98037). Learn more about missing BASE report.

Files with missing lines Patch % Lines
src/contexts/conditionfix.jl 70.44% 47 Missing ⚠️
src/contexts/prefix.jl 91.17% 3 Missing ⚠️
src/submodel.jl 50.00% 2 Missing ⚠️
Additional details and impacted files
@@             Coverage Diff             @@
##             breaking    #1050   +/-   ##
===========================================
  Coverage            ?   82.20%           
===========================================
  Files               ?       41           
  Lines               ?     3810           
  Branches            ?        0           
===========================================
  Hits                ?     3132           
  Misses              ?      678           
  Partials            ?        0           

☔ 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.

Copy link
Contributor

DynamicPPL.jl documentation for PR #1050 is available at:
https://TuringLang.github.io/DynamicPPL.jl/previews/PR1050/

Copy link
Member

@mhauru mhauru left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All good from me

@penelopeysm penelopeysm merged commit 7311465 into breaking Sep 25, 2025
21 checks passed
@penelopeysm penelopeysm deleted the py/context-move branch September 25, 2025 12:12
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.

2 participants