Closed ChrisRackauckas closed 1 year ago
I'm getting stack overflows with DiffEqGPU+LinearSolve@2:
ERROR: LoadError: StackOverflowError: Stacktrace: [1] solve!(::LinearSolve.LinearCache{…}, ::LinSolveGPUSplitFactorize, ::Vararg{…}; kwargs::@Kwargs{…}) (repeats 4785 times) @ LinearSolve /tmp/tmp.ib6qGQNM8f/packages/LinearSolve/tJWKq/src/common.jl:197 [2] solve!(cache::LinearSolve.LinearCache{…}, args::LinSolveGPUSplitFactorize; kwargs::@Kwargs{…}) @ LinearSolve /tmp/tmp.ib6qGQNM8f/packages/LinearSolve/tJWKq/src/common.jl:197 [3] solve!(::LinearSolve.LinearCache{CuArray{…}, CuArray{…}, CuArray{…}, SciMLBase.NullParameters, LinSolveGPUSplitFactorize, LinSolveGPUSplitFactorize, LinearSolve.InvPreconditioner{…}, LinearAlgebra.Diagonal{…}, Float64, Bool}; kwargs::@Kwargs{reltol::Float64}) @ LinearSolve /tmp/tmp.ib6qGQNM8f/packages/LinearSolve/tJWKq/src/common.jl:197 [4] dolinsolve(integrator::OrdinaryDiffEq.ODEIntegrator{…}, linsolve::LinearSolve.LinearCache{…}; A::CuArray{…}, linu::Nothing, b::CuArray{…}, du::CuArray{…}, u::CuArray{…}, p::CuArray{…}, t::Float64, weight::CuArray{…}, solverdata::@NamedTuple{…}, reltol::Float64) @ OrdinaryDiffEq /tmp/tmp.ib6qGQNM8f/packages/OrdinaryDiffEq/2kdef/src/misc_utils.jl:107 [5] perform_step!(integrator::OrdinaryDiffEq.ODEIntegrator{…}, cache::OrdinaryDiffEq.Rosenbrock5Cache{…}, repeat_step::Bool) @ OrdinaryDiffEq /tmp/tmp.ib6qGQNM8f/packages/OrdinaryDiffEq/2kdef/src/perform_step/rosenbrock_perform_step.jl:1670 [6] perform_step!(integrator::OrdinaryDiffEq.ODEIntegrator{…}, cache::OrdinaryDiffEq.Rosenbrock5Cache{…}) @ OrdinaryDiffEq /tmp/tmp.ib6qGQNM8f/packages/OrdinaryDiffEq/2kdef/src/perform_step/rosenbrock_perform_step.jl:1610 [7] solve!(integrator::OrdinaryDiffEq.ODEIntegrator{…}) @ OrdinaryDiffEq /tmp/tmp.ib6qGQNM8f/packages/OrdinaryDiffEq/2kdef/src/solve.jl:520 [8] __solve(prob::Union{SciMLBase.AbstractDAEProblem, SciMLBase.AbstractODEProblem}, alg::Union{OrdinaryDiffEqAlgorithm, OrdinaryDiffEq.DAEAlgorithm}, args::Vararg{Any}; kwargs...) @ OrdinaryDiffEq /tmp/tmp.ib6qGQNM8f/packages/OrdinaryDiffEq/2kdef/src/solve.jl:6 [inlined] [9] __solve(prob::Union{SciMLBase.AbstractDAEProblem, SciMLBase.AbstractODEProblem}, alg::Union{OrdinaryDiffEqAlgorithm, OrdinaryDiffEq.DAEAlgorithm}, args::Vararg{Any}) @ OrdinaryDiffEq /tmp/tmp.ib6qGQNM8f/packages/OrdinaryDiffEq/2kdef/src/solve.jl:1 [inlined] [10] solve_call(_prob::ODEProblem{…}, args::Rodas5{…}; merge_callbacks::Bool, kwargshandle::KeywordArgError, kwargs::@Kwargs{…}) @ DiffEqBase /tmp/tmp.ib6qGQNM8f/packages/DiffEqBase/G15op/src/solve.jl:511 [11] solve_up(prob::ODEProblem{…}, sensealg::Nothing, u0::CuArray{…}, p::CuArray{…}, args::Rodas5{…}; kwargs::@Kwargs{…}) @ DiffEqBase /tmp/tmp.ib6qGQNM8f/packages/DiffEqBase/G15op/src/solve.jl:972 [12] solve_up(prob::SciMLBase.AbstractDEProblem, sensealg::Any, u0::Any, p::Any, args::Vararg{Any}) @ DiffEqBase /tmp/tmp.ib6qGQNM8f/packages/DiffEqBase/G15op/src/solve.jl:945 [inlined] [13] solve(prob::ODEProblem{…}, args::Rodas5{…}; sensealg::Nothing, u0::Nothing, p::Nothing, wrap::Val{…}, kwargs::@Kwargs{…}) @ DiffEqBase /tmp/tmp.ib6qGQNM8f/packages/DiffEqBase/G15op/src/solve.jl:882 [14] batch_solve_up(ensembleprob::EnsembleProblem{…}, probs::Vector{…}, alg::Rodas5{…}, ensemblealg::EnsembleGPUArray{…}, I::UnitRange{…}, u0::Matrix{…}, p::Matrix{…}; kwargs::@Kwargs{…}) @ DiffEqGPU /tmp/tmp.ib6qGQNM8f/dev/DiffEqGPU/src/DiffEqGPU.jl:879 [15] batch_solve(ensembleprob::EnsembleProblem{…}, alg::Rodas5{…}, ensemblealg::EnsembleGPUArray{…}, I::UnitRange{…}, adaptive::Bool; kwargs::@Kwargs{…}) @ DiffEqGPU /tmp/tmp.ib6qGQNM8f/dev/DiffEqGPU/src/DiffEqGPU.jl:767 [16] macro expansion @ DiffEqGPU ./timing.jl:395 [inlined] [17] __solve(ensembleprob::EnsembleProblem{…}, alg::Rodas5{…}, ensemblealg::EnsembleGPUArray{…}; trajectories::Int64, batch_size::Int64, unstable_check::Function, adaptive::Bool, kwargs::@Kwargs{…}) @ DiffEqGPU /tmp/tmp.ib6qGQNM8f/dev/DiffEqGPU/src/DiffEqGPU.jl:594 [18] solve(::EnsembleProblem{…}, ::Rodas5{…}, ::EnsembleGPUArray{…}; kwargs::@Kwargs{…}) @ DiffEqBase /tmp/tmp.ib6qGQNM8f/packages/DiffEqBase/G15op/src/solve.jl:996 [inlined] [19] main() @ Main ~/wip.jl:34 [20] top-level scope @ ~/wip.jl:38
see also https://github.com/SciML/LinearSolve.jl/issues/331
Solved by https://github.com/SciML/DiffEqGPU.jl/pull/284
I'm getting stack overflows with DiffEqGPU+LinearSolve@2: