Fix gmres errors in CI triggered by new Scipy version #81
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
We were passing JAX arrays to Scipy GMRES and duck typing was making it work. However, Scipy's GMRES has been refactored, and now it tries to modify some arrays in place. This is perfectly reasonable, but now the immutability of JAX arrays is causing a problem. I fixed this by making deep copies of the data to plain numpy arrays (including output of the matvec and preconditioner operators).
I also did some small maintenance in the nearby code. Please take a look at the change in the relative tolerance specification. I think it fixes a conceptual error, but it's going to cause a change in behavior. This modification also has the benefit of eliminating a deprecated parameter (Scipy is phasing out
tol
in favor of explicitrtol
in the iterative solvers.)Fixes #78