OrdinaryDiffEq.jl icon indicating copy to clipboard operation
OrdinaryDiffEq.jl copied to clipboard

fix GPU compat of BrownFullBasicInit

Open hexaeder opened this issue 1 month ago • 1 comments

This PR adds a simple (mutating) DAE as a testcase for GPU compat. Mainly fixes BrownInit for mutating DAEs with mass matrix and cu arrays.

Not tested:

  • sparse jac_prototype does not work, fails in rosenbrock init because of https://github.com/SciML/LinearSolve.jl/issues/827#issuecomment-3557910671
  • non-mutating still not working. I tried to fix it but it seems more complicated. But I guess most people using GPUs will use the mutating version anyway.

EDIT: the spares jacobian additionaly fails because

https://github.com/SciML/OrdinaryDiffEq.jl/blob/e038be10946378a35915fceeb73d6d98d7fe5745/lib/OrdinaryDiffEqNonlinearSolve/src/initialize_dae.jl#L387-L390

does not work for sparse cuda matrices (this type of indexing is not implemented).

Checklist

  • [X] Appropriate tests were added
  • [X] Any code changes were done in a way that does not break public API
  • [ ] All documentation related to code changes were updated
  • [ ] The new code follows the contributor guidelines, in particular the SciML Style Guide and COLPRAC.
  • [ ] Any new documentation only uses public API

hexaeder avatar Nov 20 '25 13:11 hexaeder

Hm the new testcase fails in CI https://buildkite.com/julialang/ordinarydiffeq-dot-jl/builds/8192/steps/canvas?sid=019aa1ce-b926-4ba0-82a1-f53ccbd76d9c#019aa1ce-b96d-4508-be39-37f7bed45b39/495-1319

weird, can't reproduce this locally, there the fix works

hexaeder avatar Nov 20 '25 16:11 hexaeder

Rebased version created at #2941 with resolved merge conflicts and added sources for the new test dependencies (OrdinaryDiffEqNonlinearSolve and OrdinaryDiffEqRosenbrock) to ensure proper package resolution.

ChrisRackauckas-Claude avatar Dec 16 '25 17:12 ChrisRackauckas-Claude