-
-
Notifications
You must be signed in to change notification settings - Fork 71
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
Adjoint crash to desktop on v1.7-beta3 without autodiff #479
Comments
Yeah, it seems that if the compiler even sees that branch it will crash on v1.7-beta3. This is documented in SciML/DiffEqFlux.jl#586 (comment) but seems to be known in Base as JuliaLang/julia#41503 . It was most likely fixed in JuliaLang/julia#41516, but it would be good to check on the latest v1.7 (i.e. build from source) to make sure. |
It works on the latest nightly. |
Nightly still crashes on steady state adjoints for me |
What does the crash look like? Post the segfault and let's get a Julia Base issue open. |
If I remove res2a to res2e it does not crash. using DiffEqSensitivity, SteadyStateDiffEq, OrdinaryDiffEq
function f!(du, u, p, t)
du[1] = p[1] + p[2] * u[1]
du[2] = p[3] * u[1] + p[4] * u[2]
end
function jac!(J, u, p, t) # df/dx
J[1,1] = p[2]
J[2,1] = p[3]
J[1,2] = 0
J[2,2] = p[4]
nothing
end
function paramjac!(fp, u, p, t) # df/dp
fp[1,1] = 1
fp[2,1] = 0
fp[1,2] = u[1]
fp[2,2] = 0
fp[1,3] = 0
fp[2,3] = u[1]
fp[1,4] = 0
fp[2,4] = u[2]
nothing
end
function dg!(out, u, p, t, i)
(out .= -2.0 .+ u)
end
function g(u, p, t)
sum((2.0 .- u).^2) / 2 + sum(p.^2) / 2
end
u0 = zeros(2)
p = [2.0,-2.0,1.0,-4.0]
f2 = ODEFunction(f!;jac=jac!)
prob2 = SteadyStateProblem(f2,u0,p)
sol2 = solve(prob2,DynamicSS(Rodas5()))
res2a = adjoint_sensitivities(sol2,DynamicSS(Rodas5()),sensealg=SteadyStateAdjoint(),g,dg!)
res2b = adjoint_sensitivities(sol2,DynamicSS(Rodas5()),sensealg=SteadyStateAdjoint(),g,nothing)
res2c = adjoint_sensitivities(sol2,DynamicSS(Rodas5()),sensealg=SteadyStateAdjoint(autodiff=false),g,nothing)
res2d = adjoint_sensitivities(sol2,DynamicSS(Rodas5()),sensealg=SteadyStateAdjoint(autojacvec=TrackerVJP()),g,nothing)
res2e = adjoint_sensitivities(sol2,DynamicSS(Rodas5()),sensealg=SteadyStateAdjoint(autojacvec=ReverseDiffVJP()),g,nothing)
res2f = adjoint_sensitivities(sol2,DynamicSS(Rodas5()),sensealg=SteadyStateAdjoint(autojacvec=ZygoteVJP()),g,nothing) (@v1.8) pkg> status
Status `C:\Users\arno\.julia\environments\v1.8\Project.toml`
[41bf760c] DiffEqSensitivity v6.58.0 `https://github.com/SciML/DiffEqSensitivity.jl.git#master`
[1dea7af3] OrdinaryDiffEq v5.63.3
[9672c7b4] SteadyStateDiffEq v1.6.4 julia> versioninfo()
Julia Version 1.8.0-DEV.394
Commit 3d058b205e (2021-08-24 12:35 UTC)
Platform Info:
OS: Windows (x86_64-w64-mingw32)
CPU: AMD Ryzen 9 5900X 12-Core Processor
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-12.0.1 (ORCJIT, znver3)
|
@DhairyaLGandhi @simeonschaub is this failure known? Looks like a core Zygote/IRTools kind of failure? |
This no longer crashes to desktop on 1.7.1 (did not test on 1.7). |
When I step through it with a debugger it works fine.
It then does not go into this branch as Chris suggested
https://github.com/SciML/DiffEqSensitivity.jl/blob/master/src/adjoint_common.jl#L125
The text was updated successfully, but these errors were encountered: