Skip to content

Revert "Fix Tracker gradient through solve on RecursiveArrayTools v4"#3664

Merged
ChrisRackauckas merged 1 commit into
masterfrom
revert-3663-cc/fix-tracker-vectorofarray-rrule
May 21, 2026
Merged

Revert "Fix Tracker gradient through solve on RecursiveArrayTools v4"#3664
ChrisRackauckas merged 1 commit into
masterfrom
revert-3663-cc/fix-tracker-vectorofarray-rrule

Conversation

@ChrisRackauckas
Copy link
Copy Markdown
Member

Reverts #3663

@ChrisRackauckas ChrisRackauckas merged commit 9fd4b18 into master May 21, 2026
ChrisRackauckas added a commit that referenced this pull request May 21, 2026
…3665)

* Fix Tracker gradient on RAT v4 by preserving the ODESolution wrapper

In RecursiveArrayTools v4 `AbstractVectorOfArray <: AbstractArray`, so
the `sol isa AbstractArray` branch in `Tracker.@Grad function
DiffEqBase.solve_up` now matches ODESolution and returns the nested
`sol.u :: Vector{Vector{Float64}}` directly. Tracker tracks the
vector-of-vectors, and downstream `sum(solve(...))` reduces the outer
vector element-wise into a `Vector{Float64}`, breaking
`Tracker.gradient(loss, p)` callers with "Function output is not
scalar".

Return the ODESolution wrapper itself for `AbstractVectorOfArray`
inputs so callers reduce through the RAT v4 AbstractArray interface
and get a scalar as before. Earlier attempt (#3663) stacked into a
fresh matrix via `Array(sol)`; that was reverted in #3664 because it
changed the return type and broke downstream consumers. Preserving the
wrapper keeps the contract.

Refs SciML/SciMLSensitivity.jl#1331.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>

* Update DiffEqBaseTrackerExt.jl

---------

Co-authored-by: ChrisRackauckas-Claude <accounts@chrisrackauckas.com>
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.

1 participant