From d903ced6c407757fcfb6b7e80d3f5d1248332e24 Mon Sep 17 00:00:00 2001 From: Ryan Senne <50930199+rsenne@users.noreply.github.com> Date: Mon, 27 Jul 2026 10:05:46 -0400 Subject: [PATCH 1/3] Adde JF test (i guess i forgot?) and also format --- .../scripts/compare_pr_benchmarks.jl | 2 +- .../scripts/new_bench.jl | 2 +- .../scripts/prof_view.jl | 2 +- .../scripts/profile_deer_logreg_components.jl | 2 +- .../ParallelMCMCBenchmarks/src/pr_suite.jl | 4 ++-- docs/src/assets/make_julia_deer_gif.jl | 4 ++-- ext/DynamicPPLExt.jl | 12 ++++++----- src/DEER/DEER.jl | 7 +++---- src/interface.jl | 6 +++++- test/Project.toml | 4 ++++ test/test-AbstractMCMC-Interface.jl | 12 +++++++---- test/test-Adaptive-MALA.jl | 14 ++----------- test/test-Code-Quality.jl | 6 +++++- test/test-DEER-Interface.jl | 16 +++----------- test/test-DEER-Turing-Logistic.jl | 8 +++---- test/test-GPU-AD-HVP.jl | 7 +++---- test/test-GPU-Performance.jl | 1 - test/test-Jacobian-Estimator.jl | 6 +++--- test/test-Turing-Integration.jl | 21 ++++++++++--------- 19 files changed, 66 insertions(+), 70 deletions(-) diff --git a/benchmarks/ParallelMCMCBenchmarks/scripts/compare_pr_benchmarks.jl b/benchmarks/ParallelMCMCBenchmarks/scripts/compare_pr_benchmarks.jl index b2d3fda..1c0e6cf 100644 --- a/benchmarks/ParallelMCMCBenchmarks/scripts/compare_pr_benchmarks.jl +++ b/benchmarks/ParallelMCMCBenchmarks/scripts/compare_pr_benchmarks.jl @@ -135,7 +135,7 @@ function write_markdown(path, rows; warn_ratio, fail_ratio) " |", ) end - println(io) + return println(io) end return path end diff --git a/benchmarks/ParallelMCMCBenchmarks/scripts/new_bench.jl b/benchmarks/ParallelMCMCBenchmarks/scripts/new_bench.jl index f4ba655..bb38776 100644 --- a/benchmarks/ParallelMCMCBenchmarks/scripts/new_bench.jl +++ b/benchmarks/ParallelMCMCBenchmarks/scripts/new_bench.jl @@ -88,7 +88,7 @@ function build_raw_deer_problem( tape = map(1:T) do _ ξ = copyto!(similar(x0, D), randn(rng, FP, D)) - ParallelMCMC.MALATapeElement(ξ, FP(rand(rng))) + return ParallelMCMC.MALATapeElement(ξ, FP(rand(rng))) end rec = ParallelMCMC._build_mala_deer_rec( diff --git a/benchmarks/ParallelMCMCBenchmarks/scripts/prof_view.jl b/benchmarks/ParallelMCMCBenchmarks/scripts/prof_view.jl index b31176e..587c80c 100644 --- a/benchmarks/ParallelMCMCBenchmarks/scripts/prof_view.jl +++ b/benchmarks/ParallelMCMCBenchmarks/scripts/prof_view.jl @@ -61,7 +61,7 @@ function build_raw_deer_problem( tape = map(1:T) do _ ξ = copyto!(similar(x0, D), randn(rng, FP, D)) - ParallelMCMC.MALATapeElement(ξ, FP(rand(rng))) + return ParallelMCMC.MALATapeElement(ξ, FP(rand(rng))) end rec = ParallelMCMC._build_mala_deer_rec( diff --git a/benchmarks/ParallelMCMCBenchmarks/scripts/profile_deer_logreg_components.jl b/benchmarks/ParallelMCMCBenchmarks/scripts/profile_deer_logreg_components.jl index e76e923..f36bac8 100644 --- a/benchmarks/ParallelMCMCBenchmarks/scripts/profile_deer_logreg_components.jl +++ b/benchmarks/ParallelMCMCBenchmarks/scripts/profile_deer_logreg_components.jl @@ -35,7 +35,7 @@ function make_tape(rng::Random.AbstractRNG, x0::AbstractVector, dim::Int, t_len: FP = typeof(epsilon) return map(1:t_len) do _ xi = copyto!(similar(x0, dim), randn(rng, FP, dim)) - ParallelMCMC.MALATapeElement(xi, FP(rand(rng))) + return ParallelMCMC.MALATapeElement(xi, FP(rand(rng))) end end diff --git a/benchmarks/ParallelMCMCBenchmarks/src/pr_suite.jl b/benchmarks/ParallelMCMCBenchmarks/src/pr_suite.jl index df4622f..f1234d3 100644 --- a/benchmarks/ParallelMCMCBenchmarks/src/pr_suite.jl +++ b/benchmarks/ParallelMCMCBenchmarks/src/pr_suite.jl @@ -282,7 +282,7 @@ end function write_results(path::AbstractString, results::Dict{String,Any}) mkpath(dirname(path)) open(path, "w") do io - TOML.print(io, results; sorted=true) + return TOML.print(io, results; sorted=true) end return path end @@ -312,7 +312,7 @@ function write_markdown(path::AbstractString, results::Dict{String,Any}) " B |", ) end - println(io) + return println(io) end return path end diff --git a/docs/src/assets/make_julia_deer_gif.jl b/docs/src/assets/make_julia_deer_gif.jl index 92617d7..c96d504 100644 --- a/docs/src/assets/make_julia_deer_gif.jl +++ b/docs/src/assets/make_julia_deer_gif.jl @@ -370,13 +370,13 @@ function main() animation_paths = vcat(frame_paths, fill(last(frame_paths), 8)) tmp_output = joinpath(frame_dir, "julia_deer_posterior.gif") run(`$convert -delay 7 -loop 0 $animation_paths -layers Optimize $tmp_output`) - cp(tmp_output, output; force=true) + return cp(tmp_output, output; force=true) end final_error = maximum(abs.(last(iterates) .- final_trajectory)) println("wrote ", output) println("last DEER metric: ", @sprintf("%.3g", last(metrics))) - println("max error vs sequential taped MALA: ", @sprintf("%.3g", final_error)) + return println("max error vs sequential taped MALA: ", @sprintf("%.3g", final_error)) end main() diff --git a/ext/DynamicPPLExt.jl b/ext/DynamicPPLExt.jl index bf0d2d3..0e5e92a 100644 --- a/ext/DynamicPPLExt.jl +++ b/ext/DynamicPPLExt.jl @@ -31,9 +31,7 @@ chain = sample(model, AdaptiveMALASampler(0.3; n_warmup=500), 2_000; chain_type=FlexiChains.VNChain, discard_warmup=true, progress=true) ``` """ -function ParallelMCMC.DensityModel( - turing_model::DynamicPPL.Model; ad_backend, hvp=nothing -) +function ParallelMCMC.DensityModel(turing_model::DynamicPPL.Model; ad_backend, hvp=nothing) # Sample in linked/unconstrained space and let DynamicPPL provide the gradient. ld = DynamicPPL.LogDensityFunction( turing_model, @@ -126,7 +124,11 @@ for (Ttrans, Tspl, Tstate) in ( chain_type::Type{SymChain}; kwargs..., ) - throw(ArgumentError("FlexiChains.SymChain is not supported for DynamicPPL models; please use VNChain instead.")) + throw( + ArgumentError( + "FlexiChains.SymChain is not supported for DynamicPPL models; please use VNChain instead.", + ), + ) end end end @@ -140,7 +142,7 @@ function ParallelMCMC._construct_flexichain( ) pwss = map(enumerate(eachrow(vals))) do (i, val) stats = map(v -> v[i], internals) - DynamicPPL.ParamsWithStats(val, model.logdensity.ld, stats) + return DynamicPPL.ParamsWithStats(val, model.logdensity.ld, stats) end return AbstractMCMC.from_samples(VNChain, hcat(pwss)) end diff --git a/src/DEER/DEER.jl b/src/DEER/DEER.jl index 2a41eda..7a1b185 100644 --- a/src/DEER/DEER.jl +++ b/src/DEER/DEER.jl @@ -203,7 +203,7 @@ struct ReverseOnGrad <: HVPStrategy end _strategy_from(::DI.ForwardOverAnything) = ForwardOnGrad() _strategy_from(::DI.HVPMode) = ReverseOnGrad() -function _hvp_strategy(backend::Union{AbstractADType, DI.SecondOrder}) +function _hvp_strategy(backend::Union{AbstractADType,DI.SecondOrder}) return _strategy_from(DI.hvp_mode(backend)) end @@ -320,9 +320,8 @@ end @inline _rademacher!(z::AbstractArray, rng::AbstractRNG, ::Nothing) = _rademacher!(z, rng) @inline _rademacher_matrix!(Z::AbstractMatrix, rng::AbstractRNG) = _rademacher!(Z, rng) -@inline _rademacher_matrix!(Z::AbstractMatrix, rng::AbstractRNG, host) = _rademacher!( - Z, rng, host -) +@inline _rademacher_matrix!(Z::AbstractMatrix, rng::AbstractRNG, host) = + _rademacher!(Z, rng, host) function jac_diag_via_jvps(rec::TapedRecursion, x::AbstractVector, t::Int) D = length(x) diff --git a/src/interface.jl b/src/interface.jl index 0a03ad3..7e4b627 100644 --- a/src/interface.jl +++ b/src/interface.jl @@ -631,7 +631,11 @@ function _construct_flexichain( elseif n isa TKey || n isa Symbol to_parameter(n) else - throw(ArgumentError("param_names must be a collection of Pairs, Symbols, or $TKey, got $(typeof(n))")) + throw( + ArgumentError( + "param_names must be a collection of Pairs, Symbols, or $TKey, got $(typeof(n))", + ), + ) end end end diff --git a/test/Project.toml b/test/Project.toml index 347b20f..6e1df73 100644 --- a/test/Project.toml +++ b/test/Project.toml @@ -8,6 +8,7 @@ Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" FlexiChains = "4a37a8b9-6e57-4b92-8664-298d46e639f7" ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" JET = "c3a54625-cd67-489e-a8e7-0a5a0ff4e31b" +JuliaFormatter = "98e50ef6-434e-11e9-1051-2b60c6c9e899" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" LogDensityProblems = "6fdf6af0-433a-55f7-b3ed-c6c6e0b8df7c" LogDensityProblemsAD = "996a588d-648d-4e1f-a8f0-a84b347e47b1" @@ -23,3 +24,6 @@ Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" [extras] CUDA_Runtime_jll = "76a88914-d11a-5bdc-97e0-2f5a05c973a2" + +[compat] +JuliaFormatter = "2.10" \ No newline at end of file diff --git a/test/test-AbstractMCMC-Interface.jl b/test/test-AbstractMCMC-Interface.jl index 033dc27..b520c51 100644 --- a/test/test-AbstractMCMC-Interface.jl +++ b/test/test-AbstractMCMC-Interface.jl @@ -241,7 +241,7 @@ gradlogp_iface(x) = -x @test chain isa SymChain @test FlexiChains.parameters(chain) == [:param] - @test size(chain[:param, stack=true]) == (50, 1, 2) + @test size(chain[:param, stack = true]) == (50, 1, 2) end @testset "with vector-valued varnames" begin @@ -256,15 +256,19 @@ gradlogp_iface(x) = -x @test chain isa VNChain @test FlexiChains.parameters(chain) == [@varname(param)] - @test size(chain[@varname(param), stack=true]) == (50, 1, 2) + @test size(chain[@varname(param), stack = true]) == (50, 1, 2) end end @testset "invalid param_names throws" begin model = DensityModel(logp_iface, gradlogp_iface, 2) @test_throws "param_names must be a collection" sample( - model, MALASampler(0.15), 50; - chain_type=SymChain, progress=false, param_names=["mu", "sigma"], + model, + MALASampler(0.15), + 50; + chain_type=SymChain, + progress=false, + param_names=["mu", "sigma"], ) end diff --git a/test/test-Adaptive-MALA.jl b/test/test-Adaptive-MALA.jl index 5bac2b0..fb68db8 100644 --- a/test/test-Adaptive-MALA.jl +++ b/test/test-Adaptive-MALA.jl @@ -183,12 +183,7 @@ end sampler = AdaptiveMALASampler(0.2; n_warmup=50) chain = sample( - MersenneTwister(1), - model, - sampler, - 150; - chain_type=SymChain, - progress=false, + MersenneTwister(1), model, sampler, 150; chain_type=SymChain, progress=false ) @test chain isa SymChain @@ -219,12 +214,7 @@ end sampler = AdaptiveMALASampler(0.1; n_warmup=n_w) chain = sample( - MersenneTwister(3), - model, - sampler, - n_w + 50; - chain_type=VNChain, - progress=false, + MersenneTwister(3), model, sampler, n_w + 50; chain_type=VNChain, progress=false ) # Filter by is_warmup flag to avoid off-by-one from the init transition. diff --git a/test/test-Code-Quality.jl b/test/test-Code-Quality.jl index 20d326b..bd113eb 100644 --- a/test/test-Code-Quality.jl +++ b/test/test-Code-Quality.jl @@ -1,7 +1,11 @@ using Test -using Aqua, JET +using Aqua, JET, JuliaFormatter using ParallelMCMC +@testset "Blue Formatting" begin + @test JuliaFormatter.format(ParallelMCMC; verbose=false, overwrite=false) +end + @testset "Aqua" begin Aqua.test_all(ParallelMCMC) end diff --git a/test/test-DEER-Interface.jl b/test/test-DEER-Interface.jl index 1786acb..8b3a602 100644 --- a/test/test-DEER-Interface.jl +++ b/test/test-DEER-Interface.jl @@ -212,12 +212,7 @@ end sampler = ParallelMALASampler(0.05; T=16, backend=_AD) chain = sample( - MersenneTwister(1), - model, - sampler, - 100; - chain_type=SymChain, - progress=false, + MersenneTwister(1), model, sampler, 100; chain_type=SymChain, progress=false ) @test chain isa SymChain @@ -229,7 +224,7 @@ end param_names = FlexiChains.parameters(chain) @test length(param_names) == 1 name = only(param_names) - @test size(chain[name, stack=true], 3) == 2 + @test size(chain[name, stack = true], 3) == 2 end @testset "ParallelMALASampler bundle_samples fallback path (thinning)" begin @@ -279,12 +274,7 @@ end sampler = ParallelMALASampler(0.1; T=32, damping=0.5, backend=_AD) chain = sample( - MersenneTwister(2025), - model, - sampler, - 5_000; - chain_type=SymChain, - progress=false, + MersenneTwister(2025), model, sampler, 5_000; chain_type=SymChain, progress=false ) burn = 500 diff --git a/test/test-DEER-Turing-Logistic.jl b/test/test-DEER-Turing-Logistic.jl index caded78..bc5b20f 100644 --- a/test/test-DEER-Turing-Logistic.jl +++ b/test/test-DEER-Turing-Logistic.jl @@ -110,7 +110,7 @@ end @test chain isa VNChain @test FlexiChains.niters(chain) == 400 @test @varname(β) in FlexiChains.parameters(chain) - @test all(isfinite, chain[@varname(β), stack=true]) + @test all(isfinite, chain[@varname(β), stack = true]) end @testset "ParallelMALASampler Turing logistic: posterior sign correct" begin @@ -136,7 +136,7 @@ end progress=false, ) - post = chain[@varname(β), stack=true][201:end, :, :] + post = chain[@varname(β), stack = true][201:end, :, :] β_mean = vec(mean(post; dims=1)) @test sign(β_mean[1]) == sign(_LR_β_true[1]) @@ -165,7 +165,7 @@ end progress=false, discard_warmup=true, ) - β_mala = vec(mean(mala_chain[:x, stack=true]; dims=1)) + β_mala = vec(mean(mala_chain[:x, stack = true]; dims=1)) deer_chain = sample( MersenneTwister(42), @@ -183,7 +183,7 @@ end chain_type=SymChain, progress=false, ) - β_deer = vec(mean(deer_chain[:x, stack=true][201:end, :, :]; dims=1)) + β_deer = vec(mean(deer_chain[:x, stack = true][201:end, :, :]; dims=1)) @test abs(β_deer[1] - β_mala[1]) < 0.25 @test abs(β_deer[2] - β_mala[2]) < 0.25 diff --git a/test/test-GPU-AD-HVP.jl b/test/test-GPU-AD-HVP.jl index 7bd7df3..0d0a8c4 100644 --- a/test/test-GPU-AD-HVP.jl +++ b/test/test-GPU-AD-HVP.jl @@ -26,7 +26,6 @@ end if !_ADHVP_GPU_AVAILABLE @info "GPU AD-HVP test: CUDA not functional — skipping" else - #= Multivariate Gaussian target with X'X/N perturbation: logp(β) = -0.5 (||β||^2 + ||Xβ||^2 / N) @@ -39,7 +38,7 @@ else function _logp_single(β, X) Xβ = pmcmc_matmul(X, β) N = oftype(zero(eltype(β)), size(X, 1)) - -oftype(zero(eltype(β)), 0.5) * (sum(abs2, β) + sum(abs2, Xβ) / N) + return -oftype(zero(eltype(β)), 0.5) * (sum(abs2, β) + sum(abs2, Xβ) / N) end function _gradlogp_single(β, X) @@ -54,8 +53,8 @@ else function _logp_batch(B, X) XB = pmcmc_matmul(X, B) N = oftype(zero(eltype(B)), size(X, 1)) - -oftype(zero(eltype(B)), 0.5) .* - (vec(sum(abs2, B; dims=1)) .+ vec(sum(abs2, XB; dims=1)) ./ N) + return -oftype(zero(eltype(B)), 0.5) .* + (vec(sum(abs2, B; dims=1)) .+ vec(sum(abs2, XB; dims=1)) ./ N) end function _gradlogp_batch(B, X) diff --git a/test/test-GPU-Performance.jl b/test/test-GPU-Performance.jl index a57ff38..7be9e35 100644 --- a/test/test-GPU-Performance.jl +++ b/test/test-GPU-Performance.jl @@ -29,7 +29,6 @@ end if !_PERF_GPU_AVAILABLE @info "GPU performance test: CUDA not functional — skipping" else - #= Multivariate Gaussian target — well-conditioned, optimal MALA acceptance from any start. Lets ε be set analytically so the chain actually moves and DEER diff --git a/test/test-Jacobian-Estimator.jl b/test/test-Jacobian-Estimator.jl index 08679a7..1e850b6 100644 --- a/test/test-Jacobian-Estimator.jl +++ b/test/test-Jacobian-Estimator.jl @@ -23,13 +23,13 @@ Base.axes(x::TaggedVector) = axes(x.data) Base.getindex(x::TaggedVector, i::Int) = x.data[i] Base.setindex!(x::TaggedVector, v, i::Int) = setindex!(x.data, v, i) function Base.similar(x::TaggedVector, ::Type{T}, dims::Dims{1}) where {T} - TaggedVector(Vector{T}(undef, dims[1])) + return TaggedVector(Vector{T}(undef, dims[1])) end function Base.similar(x::TaggedVector, ::Type{T}, n::Int) where {T} - TaggedVector(Vector{T}(undef, n)) + return TaggedVector(Vector{T}(undef, n)) end function Base.similar(x::TaggedVector, dims::Dims{1}) - TaggedVector(Vector{eltype(x)}(undef, dims[1])) + return TaggedVector(Vector{eltype(x)}(undef, dims[1])) end Base.similar(x::TaggedVector, n::Int) = TaggedVector(Vector{eltype(x)}(undef, n)) Base.copy(x::TaggedVector) = TaggedVector(copy(x.data)) diff --git a/test/test-Turing-Integration.jl b/test/test-Turing-Integration.jl index f6c0c69..03abb1a 100644 --- a/test/test-Turing-Integration.jl +++ b/test/test-Turing-Integration.jl @@ -151,7 +151,7 @@ end chain_type=VNChain, progress=false, ) - samples = chain[@varname(x), stack=true] + samples = chain[@varname(x), stack = true] @test all(isfinite, samples) # Standard normal in 2-D: posterior mean should be near zero. posterior_means = mean(samples; dims=1) @@ -192,8 +192,14 @@ end 0.2; T=8, maxiter=80, tol_abs=1e-4, tol_rel=1e-3, backend=ADTypes.AutoEnzyme() ) chain = sample( - MersenneTwister(3), model, sampler, 800; - initial_params=zeros(2), chain_type=VNChain, thinning=2, progress=false, + MersenneTwister(3), + model, + sampler, + 800; + initial_params=zeros(2), + chain_type=VNChain, + thinning=2, + progress=false, ) @test chain isa VNChain @test only(FlexiChains.parameters(chain)) == @varname(x) @@ -225,12 +231,7 @@ end sampler = AdaptiveMALASampler(0.3; n_warmup=n_warmup) chain_full = sample( - MersenneTwister(3), - model, - sampler, - n_total; - chain_type=VNChain, - progress=false, + MersenneTwister(3), model, sampler, n_total; chain_type=VNChain, progress=false ) chain_trimmed = sample( MersenneTwister(3), @@ -288,5 +289,5 @@ end # Check that the chain contains parameters in original space. # The Dirichlet parameter should have length 3. @test Set(FlexiChains.parameters(chain)) == Set([@varname(c), @varname(μ)]) - @test all(chain[@varname(c), stack=true] .>= 0.0) # Dirichlet samples should be non-negative + @test all(chain[@varname(c), stack = true] .>= 0.0) # Dirichlet samples should be non-negative end From 5754cbf85cf61f54946e11efe6867c032da61f70 Mon Sep 17 00:00:00 2001 From: Ryan Senne <50930199+rsenne@users.noreply.github.com> Date: Mon, 27 Jul 2026 10:18:00 -0400 Subject: [PATCH 2/3] Format to 2.12. Update compat to 2.12. --- .JuliaFormatter.toml | 3 +++ CHANGELOG.md | 4 ++++ test/Project.toml | 2 +- test/test-Owned-Matmul.jl | 20 ++++++++++---------- 4 files changed, 18 insertions(+), 11 deletions(-) diff --git a/.JuliaFormatter.toml b/.JuliaFormatter.toml index 811b1d1..98a6700 100644 --- a/.JuliaFormatter.toml +++ b/.JuliaFormatter.toml @@ -1,4 +1,7 @@ indent = 4 margin = 92 normalize_line_endings = "unix" +v2_stable_multiline_strings = true +conditional_to_if = false +pipe_to_function_call = false style="blue" \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 2b0e2a6..63c08ed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Added + +- Adds `JuliaFormatter` testing which was forgotten (#60). + ### Removed - `DynamicPPLExt` no longer requires `ForwardDiff` as a triggering library to load. diff --git a/test/Project.toml b/test/Project.toml index 6e1df73..7dbcce5 100644 --- a/test/Project.toml +++ b/test/Project.toml @@ -26,4 +26,4 @@ Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" CUDA_Runtime_jll = "76a88914-d11a-5bdc-97e0-2f5a05c973a2" [compat] -JuliaFormatter = "2.10" \ No newline at end of file +JuliaFormatter = "2.12" \ No newline at end of file diff --git a/test/test-Owned-Matmul.jl b/test/test-Owned-Matmul.jl index 8ea9e50..102c05f 100644 --- a/test/test-Owned-Matmul.jl +++ b/test/test-Owned-Matmul.jl @@ -178,9 +178,9 @@ end @testset "Enzyme Const-arg forward JVP — pmcmc_matmul" begin rng = MersenneTwister(100) M, K, N = 5, 4, 3 - A = randn(rng, M, K); + A = randn(rng, M, K) B = randn(rng, K, N) - dA = randn(rng, M, K); + dA = randn(rng, M, K) dB = randn(rng, K, N) # Const(A), Duplicated(B): dY = A * dB @@ -214,8 +214,8 @@ end # f(A, B) = pmcmc_dot(pmcmc_matmul(A, B), w); dA = w * B', dB = A' * w rng = MersenneTwister(101) M, K = 5, 4 - A = randn(rng, M, K); - b = randn(rng, K); + A = randn(rng, M, K) + b = randn(rng, K) w = randn(rng, M) # Const(A): only B accumulates; expect db = A' * w @@ -245,9 +245,9 @@ end @testset "Enzyme Const-arg forward JVP — pmcmc_dot" begin rng = MersenneTwister(110) - a = randn(rng, 6); + a = randn(rng, 6) b = randn(rng, 6) - da = randn(rng, 6); + da = randn(rng, 6) db = randn(rng, 6) (dv1,) = Enzyme.autodiff( @@ -276,7 +276,7 @@ end @testset "Enzyme Const-arg reverse pullback — pmcmc_dot" begin rng = MersenneTwister(111) - a = randn(rng, 6); + a = randn(rng, 6) b = randn(rng, 6) da_buf = zero(a) @@ -302,9 +302,9 @@ end @testset "Enzyme Const-arg forward JVP — pmcmc_dotsum" begin rng = MersenneTwister(120) - A = randn(rng, 4, 3); + A = randn(rng, 4, 3) B = randn(rng, 4, 3) - dA = randn(rng, 4, 3); + dA = randn(rng, 4, 3) dB = randn(rng, 4, 3) (dv1,) = Enzyme.autodiff( @@ -333,7 +333,7 @@ end @testset "Enzyme Const-arg reverse pullback — pmcmc_dotsum" begin rng = MersenneTwister(121) - A = randn(rng, 4, 3); + A = randn(rng, 4, 3) B = randn(rng, 4, 3) dA_buf = zero(A) From dfe8a0b34f6e57949d6e1ec3e27075f767266a77 Mon Sep 17 00:00:00 2001 From: Ryan Senne <50930199+rsenne@users.noreply.github.com> Date: Mon, 27 Jul 2026 10:22:22 -0400 Subject: [PATCH 3/3] Add quick statemtn in contributing.md --- docs/src/90-contributing.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/src/90-contributing.md b/docs/src/90-contributing.md index d73ce8b..01e2934 100644 --- a/docs/src/90-contributing.md +++ b/docs/src/90-contributing.md @@ -23,3 +23,11 @@ Otherwise, say what your proposed solution is and wait for a discussion around i If your solution involves code, tests, benchmarks, or documentation builds, check the [developer documentation](91-developer.md). Otherwise, you can use the GitHub interface directly to create your pull request. + +## Pull request checklist + +Before submitting a pull request, please make sure: + +- You have added tests for your feature or fix, where applicable. +- You have formatted the code with `JuliaFormatter` using the version specified by the `test` project’s compatibility bounds. +- All tests pass. \ No newline at end of file