Restore dense pinv fallback for inverse Jacobian init - #1058
Restore dense pinv fallback for inverse Jacobian init#1058ChrisRackauckas-Claude wants to merge 1 commit into
Conversation
|
CI triage update:
|
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
a185a30 to
ac8b3d5
Compare
|
Rebased onto current Final-tree validation on Julia 1.12:
The rebased head is |
|
The two early red downgrade jobs on rebased head
Both jobs stop at |
|
Additional rebased-head CI classification from the exact logs:
Neither failure enters this PR's dense pseudoinverse/Broyden regression. No public-API exception or allocation threshold is changed here; the post-rebase Base suite and exact Broyden target were run locally on the current graph as recorded above. |
|
Additional CI follow-up: I inspected the newly completed macOS current and prerelease Core logs. Both pass through the Broyden robustness section and then fail only the two clean-master homotopy allocation assertions addressed by #1061. The target NonlinearSolveBase dense/pseudoinverse regressions remain green. The sole outstanding check is the queued SimpleNonlinearSolve CUDA lane. |
|
Closing this in favor of #1069. The dense |
Ignore until reviewed by @ChrisRackauckas.
Summary
StridedMatrixinverse-Jacobian initialization to the previous LU/inverse path withpinvfallback for singular inputslinsolve_identity!!tests to pin dense singularpinvbehavior while preserving sparse/structured workspace coverageRoot cause
#1039 moved the dense quasi-Newton inverse initialization path from the old
maybe_pinv!!semantics tolinsolve_identity!!through LinearSolve. For rank-deficient reset Jacobians, that pivoted-QR generalized inverse can differ from the SVDpinvresult enough to destabilize Broyden with true-Jacobian bad updates. The reproduced symptom wasGeneralized Rosenbrock function | alg #4returning residual norm4.3999999999999995instead of satisfying<= 1e-3, plusBrown almost linear function | alg #4becoming an unexpected pass.Validation
env JULIA_DEPOT_PATH=/home/crackauc/sandbox/tmp_20260708_121627_10236/nls_broyden_bisect_depot JULIA_NUM_THREADS=1 JULIA_PKG_PRECOMPILE_AUTO=no JULIA_PKG_SERVER_REGISTRY_PREFERENCE=eager timeout 3600 julia +1 --startup-file=no --project=lib/NonlinearSolveBase -e 'import Pkg; Pkg.test()'\n -linsolve_identity!! workspace (#1020) | 56 Pass\n -Linear solver routing | 12 Pass\n -Dense LU refactorization allocations | 14 Pass\n -Testing NonlinearSolveBase tests passed\n-env JULIA_DEPOT_PATH=/home/crackauc/sandbox/tmp_20260708_121627_10236/nls_broyden_bisect_depot JULIA_NUM_THREADS=1 JULIA_PKG_PRECOMPILE_AUTO=no JULIA_PKG_SERVER_REGISTRY_PREFERENCE=eager timeout 3600 julia +1 --startup-file=no --project=/home/crackauc/sandbox/tmp_20260708_121627_10236/nls_broyden_bisect_env -e 'using Test; include("test/Core/23_test_problems_tests__item7.jl")'\n - completed with exit code 0;Generalized Rosenbrock function | alg #4passed andBrown almost linear function | alg #4was broken, not an unexpected pass\n-env NONLINEARSOLVE_TEST_GROUP=Core ... timeout 3600 julia +1 --startup-file=no --project=. -e 'import Pkg; Pkg.test()'\n - Broyden section passed:23 Test Problems: Broyden | 95 Pass, 20 Broken, 115 Total\n - full Core then failed later intest/Core/homotopy_alloc_tests__item1.jlon allocation thresholds; I reproduced that same homotopy allocation failure on untouchedorigin/master, so it is separate from this patch\n- Runic check passed on the touched files\n-git diff --checkpassed