SciML / LinearSolve.jl

LinearSolve.jl: High-Performance Unified Interface for Linear Solvers in Julia. Easily switch between factorization and Krylov methods, add preconditioners, and all in one interface.
https://docs.sciml.ai/LinearSolve/stable/
Other
244 stars 52 forks source link

Algirithm is currently not supported by LinearSolveEnzymeCoreExt #403

Closed enigne closed 10 months ago

enigne commented 10 months ago

cc @wsmoses

ERROR: LoadError: Algorithm LinearSolve.DefaultLinearSolver(LinearSolve.DefaultAlgorithmChoice.AppleAccelerateLUFactorization) is currently not supported by Enzyme rules on LinearSolve.jl. Please open an issue on LinearSolve.jl detailing which algorithm is missing the adjoint handling
Stacktrace:
  [1] error
    @ ./error.jl:35
  [2] #reverse#22
    @ ~/.julia/dev/LinearSolve/ext/LinearSolveEnzymeExt.jl:155
  [3] reverse
    @ ~/.julia/dev/LinearSolve/ext/LinearSolveEnzymeExt.jl:132 [inlined]
  [4] #solve#83
    @ ./deprecated.jl:105
  [5] solve
    @ ./deprecated.jl:103
  [6] Solverx
    @ ~/Dartmouth/dJUICE/src/core/toolkits.jl:212
  [7] Solverx
    @ ~/Dartmouth/dJUICE/src/core/toolkits.jl:199 [inlined]
  [8] solutionsequence_nonlinear
    @ ~/Dartmouth/dJUICE/src/core/solutionsequences.jl:53
  [9] Core
    @ ~/Dartmouth/dJUICE/src/core/analyses/stressbalanceanalysis.jl:114
 [10] costfunction
    @ ~/Dartmouth/dJUICE/src/core/solve.jl:70 [inlined]
enigne commented 10 months ago

Still fails for LU Algorithm LinearSolve.DefaultLinearSolver(LinearSolve.DefaultAlgorithmChoice.AppleAccelerateLUFactorization)

The _linsolve.cacheval is

cacheval LinearSolve.DefaultLinearSolverInit{LinearAlgebra.LU{Float64, Matrix{Float64}, Vector{Int64}}, LinearAlgebra.QRCompactWY{Float64, Matrix{Float64}, Matrix{Float64}}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, LinearAlgebra.LU{Float64, Matrix{Float64}, Vector{Int64}}, Tuple{LinearAlgebra.LU{Float64, Matrix{Float64}, Vector{Int64}}, Vector{Int64}}, Nothing, Nothing, Nothing, LinearAlgebra.SVD{Float64, Float64, Matrix{Float64}, Vector{Float64}}, LinearAlgebra.Cholesky{Float64, Matrix{Float64}}, LinearAlgebra.Cholesky{Float64, Matrix{Float64}}, Tuple{LinearAlgebra.LU{Float64, Matrix{Float64}, Vector{Int32}}, Base.RefValue{Int32}}, Tuple{LinearAlgebra.LU{Float64, Matrix{Float64}, Vector{Int64}}, Base.RefValue{Int64}}, LinearAlgebra.QRPivoted{Float64, Matrix{Float64}, Vector{Float64}, Vector{Int64}}}(LinearAlgebra.LU{Float64, Matrix{Float64}, Vector{Int64}}(Matrix{Float64}(undef, 0, 0), Int64[], 0), LinearAlgebra.QRCompactWY{Float64, Matrix{Float64}, Matrix{Float64}}(Matrix{Float64}(undef, 0, 0), Matrix{Float64}(undef, 0, 0)), nothing, nothing, nothing, nothing, nothing, nothing, LinearAlgebra.LU{Float64, Matrix{Float64}, Vector{Int64}}(Matrix{Float64}(undef, 0, 0), Int64[], 0), (LinearAlgebra.LU{Float64, Matrix{Float64}, Vector{Int64}}(Matrix{Float64}(undef, 0, 0), Int64[], 0), Int64[]), nothing, nothing, nothing, LinearAlgebra.SVD{Float64, Float64, Matrix{Float64}, Vector{Float64}}(Matrix{Float64}(undef, 0, 0), Float64[], Matrix{Float64}(undef, 0, 0)), LinearAlgebra.Cholesky{Float64, Matrix{Float64}}(Matrix{Float64}(undef, 0, 0), 'U', 0), LinearAlgebra.Cholesky{Float64, Matrix{Float64}}(Matrix{Float64}(undef, 0, 0), 'U', 0), (LinearAlgebra.LU{Float64, Matrix{Float64}, Vector{Int32}}([2.1380360587389843e17 3.578887059568256e15 0.0 0.0 -6.26404598233285e15 2.3009169408497064e16 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0; 0.01673913330385591 1.8688294695885872e17 0.0 0.0 1.5867034942668312e16 -1.0931962568119987e17 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0; 0.0 0.0 4.697005081912689e18 -3.32175208132702e17 3.157476589205591e17 -7.995202722817061e16 4.12188800130795e17 2.1111560461153485e17 2.7174825875888026e17 -1.0290003326345936e17 1.038611388995054e18 -1.0974345853399846e17 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4.640751093988449e17 -5.59668091802789e15 -1.1703191834107872e17 4.1925180346482355e17; 0.0 0.0 -0.0707206405655911 4.874008627932416e18 -8.730947485110922e16 1.5472687920583254e17 2.1676106067903392e17 2.4957894085256304e17 -8.467691554164154e16 7.772310739453032e17 -1.736930909644576e17 2.5138174526172544e17 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6.4269362160723096e16 6.835962839350232e17 5.655169897613058e17 9.182082864287954e16; -0.029298130668700642 0.08490359982476815 0.06722318869452491 -0.017913278682099177 1.3933634923166277e18 3.4687012920150892e16 2.4239738714281862e17 -1.9954680210067364e16 -1.9784625661994788e16 2.0840025180711868e16 -7.293018212629866e16 1.1880376479486502e16 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.6019088367874515e17 7.588206543596272e16 1.7997522166980664e16 -2.6538631002534532e16; 0.10761824766448463 -0.5849630876447277 -0.01702191627087041 0.031745302689681246 0.02489444650403444 1.3899801722316905e18 -3.0783201210211212e16 4.9625586214880205e17 7.806297727191347e15 -2.6943792344704024e16 2.5008652366691904e16 -1.0143988953151646e16 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6.484324989844478e16 1.8975414542787622e17 -2.0392653883942284e16 4.882253626286985e15; 0.0 0.0 0.08775566407582973 0.04447285124544092 0.17396565108778972 -0.022146503831624496 6.980422542753142e18 -1.0049048583820562e17 9.224931426930093e17 -4.987804715572423e17 -7.017820432814236e16 -3.840484200855582e15 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -8.741168639332154e16 -3.890881740746484e16 -1.846251589945789e16 -3.6150319411536696e16; 0.0 0.0 0.0449468546296666 0.05120609336271035 -0.014321230834669282 0.35702369865610073 -0.014396046259768574 6.492953682671879e18 -2.6074645218498816e17 4.896822153278782e16 -4.877159070083466e16 -4.2031555593376075e15 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -4.483240532490767e16 -1.0197287732992627e17 -1.6425079003704988e16 -2.6189403566299136e16; 0.0 0.0 0.05785564503758646 -0.017373156677722584 -0.01419918475766906 0.0056161216419784625 0.13215434123693745 -0.040158372433929 1.6169929348330408e19 1.2286022338204915e18 1.0070953778872527e18 2.905475360041845e17 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -1.265103484966566e16 1.3258710380637558e16 1.8746147346272492e16 -1.9339414310311944e16; 0.0 0.0 -0.021907583975096952 0.15946444359804285 0.014956632131980806 -0.019384299778495595 -0.07145419471419545 0.007541748166704495 0.07598068039470735 1.244329409678762e19 2.6757454783006467e17 1.1391096950861187e18 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -7.66313469768972e15 -1.0960715000988882e17 -9.602791375753357e16 -5.881951868200112e15; 0.0 0.0 0.2211220492382598 -0.035636598993494036 -0.052341103041995025 0.017992092884705775 -0.010053575395804546 -0.007511464440443218 0.06228198999467107 0.021503513920734386 8.568349312993237e18 2.533967289337538e17 0.0 0.0 5.471858051507899e17 4.198395294127325e17 6.386808895058394e17 -5.38272143674664e16 0.0 0.0 -8.813772667418485e16 2.653029463124852e16 -8.290196834464662e17 -5.891147043784402e17; 0.0 0.0 -0.023364560314529048 0.051575974613808404 0.008526401434369437 -0.007297937881275607 -0.0005501793304536632 -0.0006473410661398693 0.0179683862399921 0.09154406270765497 0.029573575921968694 7.785552460013389e18 0.0 0.0 2.7805101100095446e17 8.218360773289928e17 -7.664540655823877e16 1.794625646029558e17 0.0 0.0 9.241152933795736e15 -2.572646311692428e16 -5.181346504955529e17 5.0493055995734054e17; 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.2737463529379654e19 -8.999949549908547e17 1.856776337682711e18 -2.9793460935631456e17 0.0 0.0 0.0 0.0 6.418527921305379e17 2.4670474398166822e17 3.2780412546879386e17 2.2943919601000067e17; 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -0.0706573135942621 1.2263718593885782e19 -1.7841166359080845e17 1.6910895517055752e18 0.0 0.0 0.0 0.0 3.774261520674715e17 1.0695570836721245e17 2.0571745604098435e17 9.438719438825261e17; 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.06386128589797631 0.035713716197922366 0.14577284821267245 -0.014547925429384658 1.2342247680529215e19 -1.1537968701249566e17 5.396453284757135e17 7.076671265793705e16 3.075410329797065e17 -2.981317624999493e17 -8.277538947842909e16 -3.5182340656082276e16 1.3576246038874112e18 1.2642540879088912e17; 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.048998881123588 0.10555912140467158 -0.02339041903194558 0.13789370155221006 -0.009348352909374476 1.217858170554839e19 7.048219299047201e15 1.0553635039058998e18 -3.2736407768064685e17 6.516059328808724e17 -3.4462134952134704e16 -7.891180035962522e15 1.2306561599116163e17 4.228486827637218e17; 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.07453954853793475 -0.009844568763988133 0.0 0.0 0.043723424002180974 0.0005787389262114277 5.768051703461325e18 8.149920647603602e16 6.140576169136201e17 3.1860620509135226e17 1.0299889551057086e16 -6.87962788644815e14 -2.737278316661806e15 4.31106969741412e16; 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -0.006282098500097517 0.023050716763476427 0.0 0.0 0.005733697336958862 0.0866573406840216 0.014129416771200148 6.161790184162559e18 3.71337129863027e17 -2.3617943529137325e17 2.548769487913056e15 1.6549534214113082e15 -1.167467967719379e16 -5.331684431815983e16; 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.024917749257687853 -0.026880312141068476 0.10645841065279164 0.06026448787845167 6.40079341605019e18 -1.893811655226388e17 -1.1388670424419436e14 6.380518649021202e14 -2.95259324030618e16 6.839683981204275e15; 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -0.024155386459329742 0.05350425432413119 0.05523636428226905 -0.038329678264348785 -0.029587139158054936 6.545846484370473e18 -6.302052077758004e14 -3.0731880682148575e14 2.5039535672642104e16 -2.3792877825153972e16; 0.0 0.0 0.09880234347327273 0.013186140416822886 0.18673582673401878 0.046650485520477125 -0.012522406180707447 -0.006904778243614227 -0.0007823803417528178 -0.0006158445374740477 -0.01028643014594781 0.0011869617450088886 0.050390942486317584 0.03077583272790046 -0.006706670585537935 -0.002829733033398646 0.0017856791305938314 0.0004136410704902078 -1.7792591768173565e-5 -9.627558624855355e-5 4.829804572385788e18 -3.545381609447255e17 7.065662548277123e17 -2.3444688116013126e17; 0.0 0.0 -0.0011915424446909137 0.1402534004592045 0.054459633724004086 0.13651572102875062 -0.005573991713131859 -0.015705160134141596 0.0008199609345854409 -0.008808531660292844 0.003096313381040312 -0.0033043850451275536 0.019368435749600406 0.008721311366402064 -0.0028505618722580776 -0.0006479555852031115 -0.00011927125899928731 0.00026858321558318864 9.968324603355978e-5 -4.694867310977603e-5 -0.07340631605920105 4.812337368516534e18 -1.7790513841611357e17 5.546653240872005e17; 0.0 0.0 -0.024916285228591156 0.11602708015746815 0.012916602355540194 -0.014671183295514747 -0.0026448994722568907 -0.002529677525274752 0.0011593215370608954 -0.00771724215554178 -0.09675372153529294 -0.06655078790576435 0.025735431918034214 0.016774476229709574 0.10999816557150784 0.01010508604093814 -0.0004745585610855719 -0.0018946895834267158 -0.004612855076532325 0.003825255562046718 0.14629292846908884 -0.0369685507878171 6.888499220107758e18 -1.3410611343002981e17; 0.0 0.0 0.08925938894111184 0.018838872815420203 -0.019046452091557954 0.003512462784593723 -0.005178815349662011 -0.004033511533617174 -0.0011960110581626503 -0.0004727005423522544 -0.06875474876883152 0.06485481442077037 0.01801294233194754 0.07696457943458555 0.010243305114540384 0.03472068365490194 0.0074740482905642286 -0.008652817237301965 0.001068568150325482 -0.0036348053505324738 -0.048541691003518406 0.1152590272901385 -0.019468117676281305 5.817612862535025e18], Int32[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24], 0), Base.RefValue{Int32}(0)), (LinearAlgebra.LU{Float64, Matrix{Float64}, Vector{Int64}}(Matrix{Float64}(undef, 0, 0), Int64[], 0), Base.RefValue{Int64}(4943584832)), LinearAlgebra.QRPivoted{Float64, Matrix{Float64}, Vector{Float64}, Vector{Int64}}(Matrix{Float64}(undef, 0, 0), Float64[], Int64[]))