From 056ac50c22fe8fa03dca91d33bd8a2ce90cacdbc Mon Sep 17 00:00:00 2001 From: Avik Pal Date: Mon, 17 Mar 2025 14:12:20 -0400 Subject: [PATCH 01/39] fix: NonlinearSolve Benchmarks + PETSc runs --- benchmarks/NonlinearProblem/Manifest.toml | 850 ++++++++++++---------- benchmarks/NonlinearProblem/bruss.jmd | 74 +- 2 files changed, 487 insertions(+), 437 deletions(-) diff --git a/benchmarks/NonlinearProblem/Manifest.toml b/benchmarks/NonlinearProblem/Manifest.toml index 903c606f6..f360faafc 100644 --- a/benchmarks/NonlinearProblem/Manifest.toml +++ b/benchmarks/NonlinearProblem/Manifest.toml @@ -1,17 +1,18 @@ # This file is machine-generated - editing it directly is not advised -julia_version = "1.10.6" +julia_version = "1.10.9" manifest_format = "2.0" -project_hash = "8814c1199875b7c1b1e3a38f566386a806b41b9d" +project_hash = "8ac8121c04e325182b3891d30875e92678cafb2e" [[deps.ADTypes]] -git-tree-sha1 = "eea5d80188827b35333801ef97a40c2ed653b081" +git-tree-sha1 = "e2478490447631aedba0823d4d7a80b2cc8cdb32" uuid = "47edcb42-4c32-4615-8424-f2b9edc5f35b" -version = "1.9.0" -weakdeps = ["ChainRulesCore", "EnzymeCore"] +version = "1.14.0" +weakdeps = ["ChainRulesCore", "ConstructionBase", "EnzymeCore"] [deps.ADTypes.extensions] ADTypesChainRulesCoreExt = "ChainRulesCore" + ADTypesConstructionBaseExt = "ConstructionBase" ADTypesEnzymeCoreExt = "EnzymeCore" [[deps.ANSIColoredPrinters]] @@ -36,25 +37,24 @@ uuid = "1520ce14-60c1-5f80-bbc7-55ef81b5835c" version = "0.4.5" [[deps.Accessors]] -deps = ["CompositionsBase", "ConstructionBase", "InverseFunctions", "LinearAlgebra", "MacroTools", "Markdown"] -git-tree-sha1 = "b392ede862e506d451fc1616e79aa6f4c673dab8" +deps = ["CompositionsBase", "ConstructionBase", "Dates", "InverseFunctions", "MacroTools"] +git-tree-sha1 = "3b86719127f50670efe356bc11073d84b4ed7a5d" uuid = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697" -version = "0.1.38" +version = "0.1.42" [deps.Accessors.extensions] - AccessorsAxisKeysExt = "AxisKeys" - AccessorsDatesExt = "Dates" - AccessorsIntervalSetsExt = "IntervalSets" - AccessorsStaticArraysExt = "StaticArrays" - AccessorsStructArraysExt = "StructArrays" - AccessorsTestExt = "Test" - AccessorsUnitfulExt = "Unitful" + AxisKeysExt = "AxisKeys" + IntervalSetsExt = "IntervalSets" + LinearAlgebraExt = "LinearAlgebra" + StaticArraysExt = "StaticArrays" + StructArraysExt = "StructArrays" + TestExt = "Test" + UnitfulExt = "Unitful" [deps.Accessors.weakdeps] AxisKeys = "94b1ba4f-4ee9-5380-92f1-94cde586c3c5" - Dates = "ade2ca70-3891-5945-98fb-dc099432e06a" IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" - Requires = "ae029012-a4dd-5104-9daa-d747884805df" + LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" StructArrays = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" @@ -68,12 +68,13 @@ version = "0.3.8" [[deps.Adapt]] deps = ["LinearAlgebra", "Requires"] -git-tree-sha1 = "50c3c56a52972d78e8be9fd135bfb91c9574c140" +git-tree-sha1 = "f7817e2e585aa6d924fd714df1e2a84be7896c60" uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" -version = "4.1.1" -weakdeps = ["StaticArrays"] +version = "4.3.0" +weakdeps = ["SparseArrays", "StaticArrays"] [deps.Adapt.extensions] + AdaptSparseArraysExt = "SparseArrays" AdaptStaticArraysExt = "StaticArrays" [[deps.AdaptivePredicates]] @@ -95,15 +96,9 @@ version = "1.1.3" [[deps.Animations]] deps = ["Colors"] -git-tree-sha1 = "e81c509d2c8e49592413bfb0bb3b08150056c79d" +git-tree-sha1 = "e092fa223bf66a3c41f9c022bd074d916dc303e7" uuid = "27a7e980-b3e6-11e9-2bcd-0b925532e340" -version = "0.4.1" - -[[deps.Aqua]] -deps = ["Compat", "Pkg", "Test"] -git-tree-sha1 = "49b1d7a9870c87ba13dc63f8ccfcf578cb266f95" -uuid = "4c88cf16-eb10-579e-8560-4a9242c79595" -version = "0.8.9" +version = "0.4.2" [[deps.ArgTools]] uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" @@ -117,9 +112,9 @@ version = "0.4.0" [[deps.ArrayInterface]] deps = ["Adapt", "LinearAlgebra"] -git-tree-sha1 = "d60a1922358aa203019b7857a2c8c37329b8736c" +git-tree-sha1 = "017fcb757f8e921fb44ee063a7aafe5f89b86dd1" uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9" -version = "7.17.0" +version = "7.18.0" [deps.ArrayInterface.extensions] ArrayInterfaceBandedMatricesExt = "BandedMatrices" @@ -149,9 +144,9 @@ version = "7.17.0" [[deps.ArrayLayouts]] deps = ["FillArrays", "LinearAlgebra"] -git-tree-sha1 = "492681bc44fac86804706ddb37da10880a2bd528" +git-tree-sha1 = "4e25216b8fea1908a0ce0f5d87368587899f75be" uuid = "4c555306-a7a7-4459-81d9-ec55ddd5c99a" -version = "1.10.4" +version = "1.11.1" weakdeps = ["SparseArrays"] [deps.ArrayLayouts.extensions] @@ -182,10 +177,10 @@ version = "0.4.7" uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" [[deps.BenchmarkTools]] -deps = ["JSON", "Logging", "Printf", "Profile", "Statistics", "UUIDs"] -git-tree-sha1 = "f1dff6729bc61f4d49e140da1af55dcd1ac97b2f" +deps = ["Compat", "JSON", "Logging", "Printf", "Profile", "Statistics", "UUIDs"] +git-tree-sha1 = "e38fbc49a620f5d0b660d7f543db1009fe0f8336" uuid = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf" -version = "1.5.0" +version = "1.6.0" [[deps.Bijections]] git-tree-sha1 = "d8b0439d2be438a5f2cd68ec158fe08a7b2595b7" @@ -203,18 +198,6 @@ git-tree-sha1 = "f21cfd4950cb9f0587d5067e69405ad2acd27b87" uuid = "62783981-4cbd-42fc-bca8-16325de8dc4b" version = "0.1.6" -[[deps.BlockArrays]] -deps = ["ArrayLayouts", "FillArrays", "LinearAlgebra"] -git-tree-sha1 = "d434647f798823bcae510aee0bc0401927f64391" -uuid = "8e7c35d0-a365-5155-bbbb-fb81a777f24e" -version = "1.1.1" - - [deps.BlockArrays.extensions] - BlockArraysBandedMatricesExt = "BandedMatrices" - - [deps.BlockArrays.weakdeps] - BandedMatrices = "aae01518-5342-5314-be14-df237901396f" - [[deps.BracketingNonlinearSolve]] deps = ["CommonSolve", "ConcreteStructs", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase"] git-tree-sha1 = "95cb19c37ea427617e9795655667712f03058d98" @@ -226,10 +209,10 @@ weakdeps = ["ForwardDiff"] BracketingNonlinearSolveForwardDiffExt = "ForwardDiff" [[deps.Bzip2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "8873e196c2eb87962a2048b3b8e08946535864a1" +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "1b96ea4a01afe0ea4090c5c8039690672dd13f2e" uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" -version = "1.0.8+2" +version = "1.0.9+0" [[deps.CEnum]] git-tree-sha1 = "389ad5c84de1ae7cf0e28e381131c98ea87d54fc" @@ -253,15 +236,15 @@ version = "1.0.1+0" [[deps.Cairo]] deps = ["Cairo_jll", "Colors", "Glib_jll", "Graphics", "Libdl", "Pango_jll"] -git-tree-sha1 = "7b6ad8c35f4bc3bca8eb78127c8b99719506a5fb" +git-tree-sha1 = "71aa551c5c33f1a4415867fe06b7844faadb0ae9" uuid = "159f3aea-2a34-519c-b102-8c37f9878175" -version = "1.1.0" +version = "1.1.1" [[deps.CairoMakie]] deps = ["CRC32c", "Cairo", "Cairo_jll", "Colors", "FileIO", "FreeType", "GeometryBasics", "LinearAlgebra", "Makie", "PrecompileTools"] -git-tree-sha1 = "c3161fbfe99d9d7ee121cf2017d49966b152857c" +git-tree-sha1 = "15d6504f47633ee9b63be11a0384925ba0c84f61" uuid = "13f3f980-e62b-5c42-98c6-ff1f3baf88f0" -version = "0.12.16" +version = "0.13.2" [[deps.Cairo_jll]] deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "LZO_jll", "Libdl", "Pixman_jll", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"] @@ -269,16 +252,11 @@ git-tree-sha1 = "009060c9a6168704143100f36ab08f06c2af4642" uuid = "83423d85-b0ee-5818-9007-b63ccbeb887a" version = "1.18.2+1" -[[deps.Cassette]] -git-tree-sha1 = "f8764df8d9d2aec2812f009a1ac39e46c33354b8" -uuid = "7057c7e9-c182-5462-911a-8362d720325c" -version = "0.3.14" - [[deps.ChainRulesCore]] deps = ["Compat", "LinearAlgebra"] -git-tree-sha1 = "3e4b134270b372f2ed4d4d0e936aabaefc1802bc" +git-tree-sha1 = "1713c74e00545bfe14605d2a2be1712de8fbcb58" uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" -version = "1.25.0" +version = "1.25.1" weakdeps = ["SparseArrays"] [deps.ChainRulesCore.extensions] @@ -292,33 +270,39 @@ version = "0.1.13" [[deps.CodecZlib]] deps = ["TranscodingStreams", "Zlib_jll"] -git-tree-sha1 = "bce6804e5e6044c6daab27bb533d1295e4a2e759" +git-tree-sha1 = "962834c22b66e32aa10f7611c08c8ca4e20749a9" uuid = "944b1d66-785c-5afd-91f1-9de20f533193" -version = "0.7.6" +version = "0.7.8" [[deps.ColorBrewer]] -deps = ["Colors", "JSON", "Test"] -git-tree-sha1 = "61c5334f33d91e570e1d0c3eb5465835242582c4" +deps = ["Colors", "JSON"] +git-tree-sha1 = "e771a63cc8b539eca78c85b0cabd9233d6c8f06f" uuid = "a2cac450-b92f-5266-8821-25eda20663c8" -version = "0.4.0" +version = "0.4.1" [[deps.ColorSchemes]] deps = ["ColorTypes", "ColorVectorSpace", "Colors", "FixedPointNumbers", "PrecompileTools", "Random"] -git-tree-sha1 = "c785dfb1b3bfddd1da557e861b919819b82bbe5b" +git-tree-sha1 = "403f2d8e209681fcbd9468a8514efff3ea08452e" uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4" -version = "3.27.1" +version = "3.29.0" [[deps.ColorTypes]] deps = ["FixedPointNumbers", "Random"] -git-tree-sha1 = "b10d0b65641d57b8b4d5e234446582de5047050d" +git-tree-sha1 = "c7acce7a7e1078a20a285211dd73cd3941a871d6" uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" -version = "0.11.5" +version = "0.12.0" + + [deps.ColorTypes.extensions] + StyledStringsExt = "StyledStrings" + + [deps.ColorTypes.weakdeps] + StyledStrings = "f489334b-da3d-4c2e-b8f0-e476e12c162b" [[deps.ColorVectorSpace]] deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "Requires", "Statistics", "TensorCore"] -git-tree-sha1 = "a1f44953f2382ebb937d60dafbe2deea4bd23249" +git-tree-sha1 = "8b3b6f87ce8f65a2b4f857528fd8d70086cd72b1" uuid = "c3611d14-8923-5661-9e6a-0046d554d3a4" -version = "0.10.0" +version = "0.11.0" weakdeps = ["SpecialFunctions"] [deps.ColorVectorSpace.extensions] @@ -326,9 +310,9 @@ weakdeps = ["SpecialFunctions"] [[deps.Colors]] deps = ["ColorTypes", "FixedPointNumbers", "Reexport"] -git-tree-sha1 = "362a287c3aa50601b0bc359053d5c2468f0e7ce0" +git-tree-sha1 = "64e15186f0aa277e174aa81798f7eb8598e0157e" uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" -version = "0.12.11" +version = "0.13.0" [[deps.Combinatorics]] git-tree-sha1 = "08c8b6831dc00bfea825826be0bc8336fc369860" @@ -387,9 +371,9 @@ version = "0.2.3" [[deps.ConcurrentUtilities]] deps = ["Serialization", "Sockets"] -git-tree-sha1 = "ea32b83ca4fefa1768dc84e504cc0a94fb1ab8d1" +git-tree-sha1 = "d9d26935a0bcffc87d2613ce14c527c99fc543fd" uuid = "f0e56b4a-5159-44fe-b623-3e5288b988bb" -version = "2.4.2" +version = "2.5.0" [[deps.Conda]] deps = ["Downloads", "JSON", "VersionParsing"] @@ -456,22 +440,24 @@ deps = ["Printf"] uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" [[deps.DelaunayTriangulation]] -deps = ["AdaptivePredicates", "EnumX", "ExactPredicates", "PrecompileTools", "Random"] -git-tree-sha1 = "89df54fbe66e5872d91d8c2cd3a375f660c3fd64" +deps = ["AdaptivePredicates", "EnumX", "ExactPredicates", "Random"] +git-tree-sha1 = "5620ff4ee0084a6ab7097a27ba0c19290200b037" uuid = "927a84f5-c5f4-47a5-9785-b46e178433df" -version = "1.6.1" +version = "1.6.4" [[deps.DiffEqBase]] -deps = ["ArrayInterface", "ConcreteStructs", "DataStructures", "DocStringExtensions", "EnumX", "EnzymeCore", "FastBroadcast", "FastClosures", "ForwardDiff", "FunctionWrappers", "FunctionWrappersWrappers", "LinearAlgebra", "Logging", "Markdown", "MuladdMacro", "Parameters", "PreallocationTools", "PrecompileTools", "Printf", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "SciMLStructures", "Setfield", "Static", "StaticArraysCore", "Statistics", "TruncatedStacktraces"] -git-tree-sha1 = "f8eefbb7e910f59087c4bb09ce670f235758ee4a" +deps = ["ArrayInterface", "ConcreteStructs", "DataStructures", "DocStringExtensions", "EnumX", "EnzymeCore", "FastBroadcast", "FastClosures", "FastPower", "FunctionWrappers", "FunctionWrappersWrappers", "LinearAlgebra", "Logging", "Markdown", "MuladdMacro", "Parameters", "PrecompileTools", "Printf", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "SciMLStructures", "Setfield", "Static", "StaticArraysCore", "Statistics", "TruncatedStacktraces"] +git-tree-sha1 = "b68847ddc7b8f3c77a84521b0fd50375274a380b" uuid = "2b5f629d-d688-5b77-993f-72d75c75574e" -version = "6.158.3" +version = "6.165.1" [deps.DiffEqBase.extensions] DiffEqBaseCUDAExt = "CUDA" DiffEqBaseChainRulesCoreExt = "ChainRulesCore" DiffEqBaseDistributionsExt = "Distributions" DiffEqBaseEnzymeExt = ["ChainRulesCore", "Enzyme"] + DiffEqBaseForwardDiffExt = ["ForwardDiff"] + DiffEqBaseGTPSAExt = "GTPSA" DiffEqBaseGeneralizedGeneratedExt = "GeneralizedGenerated" DiffEqBaseMPIExt = "MPI" DiffEqBaseMeasurementsExt = "Measurements" @@ -486,6 +472,8 @@ version = "6.158.3" ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f" Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" + ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" + GTPSA = "b27dd330-f138-47c5-815b-40db9dd9b6e8" GeneralizedGenerated = "6b9d7cbe-bcb9-11e9-073f-15a7a543e2eb" MPI = "da04e1cc-30fd-572f-bb4f-1f8673147195" Measurements = "eff96d63-e80a-5855-80a2-b1b0885c5ab7" @@ -497,15 +485,15 @@ version = "6.158.3" [[deps.DiffEqDevTools]] deps = ["DiffEqBase", "DiffEqNoiseProcess", "Distributed", "LinearAlgebra", "Logging", "NLsolve", "RecipesBase", "RecursiveArrayTools", "RootedTrees", "SciMLBase", "Statistics", "StructArrays"] -git-tree-sha1 = "167a3a413b954aca9e64d785f8ea096e23e5afb8" +git-tree-sha1 = "0076cabfaad1167719005f956c2cc186490662a2" uuid = "f3b72e0c-5b89-59e1-b016-84e28bfd966d" -version = "2.45.1" +version = "2.46.0" [[deps.DiffEqNoiseProcess]] deps = ["DiffEqBase", "Distributions", "GPUArraysCore", "LinearAlgebra", "Markdown", "Optim", "PoissonRandom", "QuadGK", "Random", "Random123", "RandomNumbers", "RecipesBase", "RecursiveArrayTools", "ResettableStacks", "SciMLBase", "StaticArraysCore", "Statistics"] -git-tree-sha1 = "ab1e6515ce15f01316a9825b02729fefa51726bd" +git-tree-sha1 = "516d553f5deee7c55b2945b5edf05b6542837887" uuid = "77a26b50-5914-5dd7-bc55-306e6241c503" -version = "5.23.0" +version = "5.24.1" [deps.DiffEqNoiseProcess.extensions] DiffEqNoiseProcessReverseDiffExt = "ReverseDiff" @@ -527,22 +515,24 @@ version = "1.15.1" [[deps.DifferentiationInterface]] deps = ["ADTypes", "LinearAlgebra"] -git-tree-sha1 = "0c99576d0b93df0aff1bed9d9adddef14e4e658f" +git-tree-sha1 = "3999a7934cc723719e79ff7db33160b141297444" uuid = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" -version = "0.6.22" +version = "0.6.44" [deps.DifferentiationInterface.extensions] DifferentiationInterfaceChainRulesCoreExt = "ChainRulesCore" DifferentiationInterfaceDiffractorExt = "Diffractor" - DifferentiationInterfaceEnzymeExt = "Enzyme" + DifferentiationInterfaceEnzymeExt = ["EnzymeCore", "Enzyme"] DifferentiationInterfaceFastDifferentiationExt = "FastDifferentiation" DifferentiationInterfaceFiniteDiffExt = "FiniteDiff" DifferentiationInterfaceFiniteDifferencesExt = "FiniteDifferences" - DifferentiationInterfaceForwardDiffExt = "ForwardDiff" + DifferentiationInterfaceForwardDiffExt = ["ForwardDiff", "DiffResults"] + DifferentiationInterfaceGTPSAExt = "GTPSA" DifferentiationInterfaceMooncakeExt = "Mooncake" - DifferentiationInterfacePolyesterForwardDiffExt = "PolyesterForwardDiff" - DifferentiationInterfaceReverseDiffExt = "ReverseDiff" + DifferentiationInterfacePolyesterForwardDiffExt = ["PolyesterForwardDiff", "ForwardDiff", "DiffResults"] + DifferentiationInterfaceReverseDiffExt = ["ReverseDiff", "DiffResults"] DifferentiationInterfaceSparseArraysExt = "SparseArrays" + DifferentiationInterfaceSparseConnectivityTracerExt = "SparseConnectivityTracer" DifferentiationInterfaceSparseMatrixColoringsExt = "SparseMatrixColorings" DifferentiationInterfaceStaticArraysExt = "StaticArrays" DifferentiationInterfaceSymbolicsExt = "Symbolics" @@ -551,16 +541,20 @@ version = "0.6.22" [deps.DifferentiationInterface.weakdeps] ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + DiffResults = "163ba53b-c6d8-5494-b064-1a9d43ac40c5" Diffractor = "9f5e2b26-1114-432f-b630-d3fe2085c51c" Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" + EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" FastDifferentiation = "eb9bf01b-bf85-4b60-bf87-ee5de06c00be" FiniteDiff = "6a86dc24-6348-571c-b903-95158fe2bd41" FiniteDifferences = "26cc04aa-876d-5657-8c51-4c34ba976000" ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" + GTPSA = "b27dd330-f138-47c5-815b-40db9dd9b6e8" Mooncake = "da2b9cff-9c12-43a0-ae48-6db2b0edb7d6" PolyesterForwardDiff = "98d1487c-24ca-40b6-b7ab-df2af84e126b" ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + SparseConnectivityTracer = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" SparseMatrixColorings = "0a514795-09f3-496d-8182-132a7b665d35" StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7" @@ -584,9 +578,9 @@ uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" [[deps.Distributions]] deps = ["AliasTables", "FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns"] -git-tree-sha1 = "3101c32aab536e7a27b1763c0797dba151b899ad" +git-tree-sha1 = "0b4190661e8a4e51a842070e7dd4fae440ddb7f4" uuid = "31c24e10-a181-5473-b8eb-7969acd0382f" -version = "0.25.113" +version = "0.25.118" [deps.Distributions.extensions] DistributionsChainRulesCoreExt = "ChainRulesCore" @@ -606,9 +600,9 @@ version = "0.9.3" [[deps.Documenter]] deps = ["ANSIColoredPrinters", "AbstractTrees", "Base64", "CodecZlib", "Dates", "DocStringExtensions", "Downloads", "Git", "IOCapture", "InteractiveUtils", "JSON", "LibGit2", "Logging", "Markdown", "MarkdownAST", "Pkg", "PrecompileTools", "REPL", "RegistryInstances", "SHA", "TOML", "Test", "Unicode"] -git-tree-sha1 = "5a1ee886566f2fa9318df1273d8b778b9d42712d" +git-tree-sha1 = "30f520c66490393bf4e4ff2bb144db65f569d974" uuid = "e30172f5-a6a5-5a46-863b-614d45cd2de4" -version = "1.7.0" +version = "1.9.0" [[deps.DocumenterTools]] deps = ["AbstractTrees", "Base64", "DocStringExtensions", "Documenter", "FileWatching", "Git", "Gumbo", "LibGit2", "OpenSSH_jll", "Sass"] @@ -618,9 +612,9 @@ version = "0.1.20" [[deps.DomainSets]] deps = ["CompositeTypes", "IntervalSets", "LinearAlgebra", "Random", "StaticArrays"] -git-tree-sha1 = "490392af2c7d63183bfa2c8aaa6ab981c5ba7561" +git-tree-sha1 = "a7e9f13f33652c533d49868a534bfb2050d1365f" uuid = "5b8099bc-c8ec-5219-889f-1d9e522a28bf" -version = "0.7.14" +version = "0.7.15" weakdeps = ["Makie"] [deps.DomainSets.extensions] @@ -633,9 +627,9 @@ version = "1.6.0" [[deps.DynamicPolynomials]] deps = ["Future", "LinearAlgebra", "MultivariatePolynomials", "MutableArithmetics", "Reexport", "Test"] -git-tree-sha1 = "bbf1ace0781d9744cb697fb856bd2c3f6568dadb" +git-tree-sha1 = "9a3ae38b460449cc9e7dd0cfb059c76028724627" uuid = "7c1d4256-1411-5781-91ec-d7bc3513ac07" -version = "0.6.0" +version = "0.6.1" [[deps.EarCut_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -649,14 +643,15 @@ uuid = "4e289a0a-7415-4d19-859d-a7e5c4648b56" version = "1.0.4" [[deps.Enzyme]] -deps = ["CEnum", "EnzymeCore", "Enzyme_jll", "GPUCompiler", "LLVM", "Libdl", "LinearAlgebra", "ObjectFile", "Preferences", "Printf", "Random", "SparseArrays"] -git-tree-sha1 = "136f590cfed1c25b956fedc6a4d77342e3d4eaa3" +deps = ["CEnum", "EnzymeCore", "Enzyme_jll", "GPUCompiler", "LLVM", "Libdl", "LinearAlgebra", "ObjectFile", "PrecompileTools", "Preferences", "Printf", "Random", "SparseArrays"] +git-tree-sha1 = "dd01733a63f664890bbd687adca1d2cd0a3dc87b" uuid = "7da242da-08ed-463a-9acd-ee780be4f1d9" -version = "0.13.14" +version = "0.13.32" [deps.Enzyme.extensions] EnzymeBFloat16sExt = "BFloat16s" EnzymeChainRulesCoreExt = "ChainRulesCore" + EnzymeGPUArraysCoreExt = "GPUArraysCore" EnzymeLogExpFunctionsExt = "LogExpFunctions" EnzymeSpecialFunctionsExt = "SpecialFunctions" EnzymeStaticArraysExt = "StaticArrays" @@ -664,14 +659,15 @@ version = "0.13.14" [deps.Enzyme.weakdeps] BFloat16s = "ab4f0b2a-ad5b-11e8-123f-65d77653426b" ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" LogExpFunctions = "2ab3a3ac-af41-5b50-aa03-7779005ae688" SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b" StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" [[deps.EnzymeCore]] -git-tree-sha1 = "04c777af6ef65530a96ab68f0a81a4608113aa1d" +git-tree-sha1 = "0cdb7af5c39e92d78a0ee8d0a447d32f7593137e" uuid = "f151be2c-9106-41f4-ab19-57ee4f262869" -version = "0.8.5" +version = "0.8.8" weakdeps = ["Adapt"] [deps.EnzymeCore.extensions] @@ -679,9 +675,9 @@ weakdeps = ["Adapt"] [[deps.Enzyme_jll]] deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl", "TOML"] -git-tree-sha1 = "dec17951c0ba91ef723dc71c7687e60398125226" +git-tree-sha1 = "b81b0143399acd84a2ed2a1fa0b4ab55e25ee625" uuid = "7cc45869-7501-5eee-bdea-0790c847d4ef" -version = "0.0.163+0" +version = "0.0.172+0" [[deps.ExactPredicates]] deps = ["IntervalArithmetic", "Random", "StaticArrays"] @@ -691,31 +687,30 @@ version = "2.2.8" [[deps.ExceptionUnwrapping]] deps = ["Test"] -git-tree-sha1 = "dcb08a0d93ec0b1cdc4af184b26b591e9695423a" +git-tree-sha1 = "d36f682e590a83d63d1c7dbd287573764682d12a" uuid = "460bff9d-24e4-43bc-9d9f-a8973cb893f4" -version = "0.1.10" +version = "0.1.11" [[deps.Expat_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "1c6317308b9dc757616f0b5cb379db10494443a7" +git-tree-sha1 = "d55dffd9ae73ff72f1c0482454dcf2ec6c6c4a63" uuid = "2e619515-83b5-522b-bb60-26c02a35a201" -version = "2.6.2+0" +version = "2.6.5+0" [[deps.ExprTools]] git-tree-sha1 = "27415f162e6028e81c72b82ef756bf321213b6ec" uuid = "e2ba6199-217a-4e67-a87a-7c52f15ade04" version = "0.1.10" -[[deps.Expronicon]] -deps = ["MLStyle", "Pkg", "TOML"] -git-tree-sha1 = "fc3951d4d398b5515f91d7fe5d45fc31dccb3c9b" -uuid = "6b7a57c9-7cc1-4fdf-b7f5-e857abae3636" -version = "0.8.5" +[[deps.ExproniconLite]] +git-tree-sha1 = "c13f0b150373771b0fdc1713c97860f8df12e6c2" +uuid = "55351af7-c7e9-48d6-89ff-24e801d99491" +version = "0.10.14" [[deps.Extents]] -git-tree-sha1 = "81023caa0021a41712685887db1fc03db26f41f5" +git-tree-sha1 = "063512a13dbe9c40d999c439268539aa552d1ae6" uuid = "411431e0-e8b7-467b-b5e0-f676ba4f2910" -version = "0.1.4" +version = "0.1.5" [[deps.FFMPEG_jll]] deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "LAME_jll", "Libdl", "Ogg_jll", "OpenSSL_jll", "Opus_jll", "PCRE2_jll", "Zlib_jll", "libaom_jll", "libass_jll", "libfdk_aac_jll", "libvorbis_jll", "x264_jll", "x265_jll"] @@ -725,15 +720,15 @@ version = "6.1.2+0" [[deps.FFTW]] deps = ["AbstractFFTs", "FFTW_jll", "LinearAlgebra", "MKL_jll", "Preferences", "Reexport"] -git-tree-sha1 = "4820348781ae578893311153d69049a93d05f39d" +git-tree-sha1 = "7de7c78d681078f027389e067864a8d53bd7c3c9" uuid = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341" -version = "1.8.0" +version = "1.8.1" [[deps.FFTW_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] git-tree-sha1 = "4d81ed14783ec49ce9f2e168208a12ce1815aa25" uuid = "f5851436-0d7a-5f13-b9de-f02708fd171a" -version = "3.3.10+1" +version = "3.3.10+3" [[deps.FastBroadcast]] deps = ["ArrayInterface", "LinearAlgebra", "Polyester", "Static", "StaticArrayInterface", "StrideArraysCore"] @@ -752,11 +747,36 @@ git-tree-sha1 = "cbf5edddb61a43669710cbc2241bc08b36d9e660" uuid = "29a986be-02c6-4525-aec4-84b980013641" version = "2.0.4" +[[deps.FastPower]] +git-tree-sha1 = "58c3431137131577a7c379d00fea00be524338fb" +uuid = "a4df4552-cc26-4903-aec0-212e50a0e84b" +version = "1.1.1" + + [deps.FastPower.extensions] + FastPowerEnzymeExt = "Enzyme" + FastPowerForwardDiffExt = "ForwardDiff" + FastPowerMeasurementsExt = "Measurements" + FastPowerMonteCarloMeasurementsExt = "MonteCarloMeasurements" + FastPowerReverseDiffExt = "ReverseDiff" + FastPowerTrackerExt = "Tracker" + + [deps.FastPower.weakdeps] + Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" + ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" + Measurements = "eff96d63-e80a-5855-80a2-b1b0885c5ab7" + MonteCarloMeasurements = "0987c9cc-fe09-11e8-30f0-b96dd679fdca" + ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" + Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" + [[deps.FileIO]] deps = ["Pkg", "Requires", "UUIDs"] -git-tree-sha1 = "62ca0547a14c57e98154423419d8a342dca75ca9" +git-tree-sha1 = "b66970a70db13f45b7e57fbda1736e1cf72174ea" uuid = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" -version = "1.16.4" +version = "1.17.0" +weakdeps = ["HTTP"] + + [deps.FileIO.extensions] + HTTPExt = "HTTP" [[deps.FilePaths]] deps = ["FilePathsBase", "MacroTools", "Reexport", "Requires"] @@ -766,9 +786,9 @@ version = "0.8.3" [[deps.FilePathsBase]] deps = ["Compat", "Dates"] -git-tree-sha1 = "7878ff7172a8e6beedd1dea14bd27c3c6340d361" +git-tree-sha1 = "3bab2c5aa25e7840a4b065805c0cdfc01f3068d2" uuid = "48062228-2e41-5def-b9a4-89aafe57970f" -version = "0.9.22" +version = "0.9.24" weakdeps = ["Mmap", "Test"] [deps.FilePathsBase.extensions] @@ -792,9 +812,9 @@ weakdeps = ["PDMats", "SparseArrays", "Statistics"] [[deps.FiniteDiff]] deps = ["ArrayInterface", "LinearAlgebra", "Setfield"] -git-tree-sha1 = "b10bdafd1647f57ace3885143936749d61638c3b" +git-tree-sha1 = "f089ab1f834470c525562030c8cfde4025d5e915" uuid = "6a86dc24-6348-571c-b903-95158fe2bd41" -version = "2.26.0" +version = "2.27.0" [deps.FiniteDiff.extensions] FiniteDiffBandedMatricesExt = "BandedMatrices" @@ -816,9 +836,9 @@ version = "0.8.5" [[deps.Fontconfig_jll]] deps = ["Artifacts", "Bzip2_jll", "Expat_jll", "FreeType2_jll", "JLLWrappers", "Libdl", "Libuuid_jll", "Zlib_jll"] -git-tree-sha1 = "db16beca600632c95fc8aca29890d83788dd8b23" +git-tree-sha1 = "21fac3c77d7b5a9fc03b0ec503aa1a6392c34d2b" uuid = "a3f928ae-7b40-5064-980b-68af3947d34b" -version = "2.13.96+0" +version = "2.15.0+0" [[deps.Format]] git-tree-sha1 = "9c68794ef81b08086aeb32eeaf33531668d5f5fc" @@ -843,27 +863,21 @@ version = "4.1.1" [[deps.FreeType2_jll]] deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Zlib_jll"] -git-tree-sha1 = "5c1d8ae0efc6c2e7b1fc502cbe25def8f661b7bc" +git-tree-sha1 = "786e968a8d2fb167f2e4880baba62e0e26bd8e4e" uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7" -version = "2.13.2+0" +version = "2.13.3+1" [[deps.FreeTypeAbstraction]] deps = ["ColorVectorSpace", "Colors", "FreeType", "GeometryBasics"] -git-tree-sha1 = "84dfe824bd6fdf2a5d73bb187ff31b5549b2a79c" +git-tree-sha1 = "d52e255138ac21be31fa633200b65e4e71d26802" uuid = "663a7486-cb36-511b-a19d-713bb74d65c9" -version = "0.10.4" +version = "0.10.6" [[deps.FriBidi_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "1ed150b39aebcc805c26b93a8d0122c940f64ce2" +git-tree-sha1 = "846f7026a9decf3679419122b49f8a1fdb48d2d5" uuid = "559328eb-81f9-559d-9380-de523a88c83c" -version = "1.0.14+0" - -[[deps.FunctionProperties]] -deps = ["Cassette", "DiffRules"] -git-tree-sha1 = "bf7c740307eb0ee80e05d8aafbd0c5a901578398" -uuid = "f62d2435-5019-4c03-9749-2d4c77af0cbc" -version = "0.1.2" +version = "1.0.16+0" [[deps.FunctionWrappers]] git-tree-sha1 = "d62485945ce5ae9c0c48f124a84998d755bae00e" @@ -882,32 +896,32 @@ uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" [[deps.GPUArraysCore]] deps = ["Adapt"] -git-tree-sha1 = "ec632f177c0d990e64d955ccc1b8c04c485a0950" +git-tree-sha1 = "83cf05ab16a73219e5f6bd1bdfa9848fa24ac627" uuid = "46192b85-c4d5-4398-a991-12ede77f4527" -version = "0.1.6" +version = "0.2.0" [[deps.GPUCompiler]] deps = ["ExprTools", "InteractiveUtils", "LLVM", "Libdl", "Logging", "PrecompileTools", "Preferences", "Scratch", "Serialization", "TOML", "TimerOutputs", "UUIDs"] -git-tree-sha1 = "72408a76694e87e735f515a499ba1e069d232d39" +git-tree-sha1 = "199f213e40a7982e9138bc9edc3299419d510390" uuid = "61eb1bfa-7361-4325-ad38-22787b887f55" -version = "1.0.1" +version = "1.2.0" [[deps.GeoFormatTypes]] -git-tree-sha1 = "59107c179a586f0fe667024c5eb7033e81333271" +git-tree-sha1 = "8e233d5167e63d708d41f87597433f59a0f213fe" uuid = "68eda718-8dee-11e9-39e7-89f7f65f511f" -version = "0.4.2" +version = "0.4.4" [[deps.GeoInterface]] -deps = ["Extents", "GeoFormatTypes"] -git-tree-sha1 = "826b4fd69438d9ce4d2b19de6bc2f970f45f0f88" +deps = ["DataAPI", "Extents", "GeoFormatTypes"] +git-tree-sha1 = "294e99f19869d0b0cb71aef92f19d03649d028d5" uuid = "cf35fbd7-0cd7-5166-be24-54bfbe79505f" -version = "1.3.8" +version = "1.4.1" [[deps.GeometryBasics]] -deps = ["EarCut_jll", "Extents", "GeoInterface", "IterTools", "LinearAlgebra", "StaticArrays", "StructArrays", "Tables"] -git-tree-sha1 = "b62f2b2d76cee0d61a2ef2b3118cd2a3215d3134" +deps = ["EarCut_jll", "Extents", "GeoInterface", "IterTools", "LinearAlgebra", "PrecompileTools", "Random", "StaticArrays"] +git-tree-sha1 = "3ba0e2818cc2ff79a5989d4dca4bc63120a98bd9" uuid = "5c1252a2-5f33-56bf-86c9-59e7332b4326" -version = "0.4.11" +version = "0.5.5" [[deps.Gettext_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "XML2_jll"] @@ -917,9 +931,9 @@ version = "0.21.0+0" [[deps.Giflib_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "0224cce99284d997f6880a42ef715a37c99338d1" +git-tree-sha1 = "6570366d757b50fabae9f4315ad74d2e40c0560a" uuid = "59f7168a-df46-5410-90c8-f2779963d0ec" -version = "5.2.2+0" +version = "5.2.3+0" [[deps.Git]] deps = ["Git_jll"] @@ -929,15 +943,15 @@ version = "1.3.1" [[deps.Git_jll]] deps = ["Artifacts", "Expat_jll", "JLLWrappers", "LibCURL_jll", "Libdl", "Libiconv_jll", "OpenSSL_jll", "PCRE2_jll", "Zlib_jll"] -git-tree-sha1 = "ea372033d09e4552a04fd38361cd019f9003f4f4" +git-tree-sha1 = "399f4a308c804b446ae4c91eeafadb2fe2c54ff9" uuid = "f8c6e375-362e-5223-8a59-34ff63f689eb" -version = "2.46.2+0" +version = "2.47.1+0" [[deps.Glib_jll]] deps = ["Artifacts", "Gettext_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Zlib_jll"] -git-tree-sha1 = "674ff0db93fffcd11a3573986e550d66cd4fd71f" +git-tree-sha1 = "b0036b392358c80d2d2124746c2bf3d48d457938" uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" -version = "2.80.5+0" +version = "2.82.4+0" [[deps.Graphics]] deps = ["Colors", "LinearAlgebra", "NaNMath"] @@ -947,9 +961,9 @@ version = "1.1.3" [[deps.Graphite2_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "344bf40dcab1073aca04aa0df4fb092f920e4011" +git-tree-sha1 = "01979f9b37367603e2848ea225918a3b3861b606" uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472" -version = "1.3.14+0" +version = "1.3.14+1" [[deps.Graphs]] deps = ["ArnoldiMethod", "Compat", "DataStructures", "Distributed", "Inflate", "LinearAlgebra", "Random", "SharedArrays", "SimpleTraits", "SparseArrays", "Statistics"] @@ -959,9 +973,9 @@ version = "1.12.0" [[deps.GridLayoutBase]] deps = ["GeometryBasics", "InteractiveUtils", "Observables"] -git-tree-sha1 = "fc713f007cff99ff9e50accba6373624ddd33588" +git-tree-sha1 = "dc6bed05c15523624909b3953686c5f5ffa10adc" uuid = "3955a311-db13-416c-9275-1d80ed98e5e9" -version = "0.11.0" +version = "0.11.1" [[deps.Grisu]] git-tree-sha1 = "53bb909d1151e57e2484c3d1b53e19552b887fb2" @@ -970,9 +984,9 @@ version = "1.0.2" [[deps.Gumbo]] deps = ["AbstractTrees", "Gumbo_jll", "Libdl"] -git-tree-sha1 = "a1a138dfbf9df5bace489c7a9d5196d6afdfa140" +git-tree-sha1 = "eab9e02310eb2c3e618343c859a12b51e7577f5e" uuid = "708ec375-b3d6-5a57-a7ce-8257bf98657a" -version = "0.8.2" +version = "0.8.3" [[deps.Gumbo_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -981,16 +995,16 @@ uuid = "528830af-5a63-567c-a44a-034ed33b8444" version = "0.10.2+0" [[deps.HTTP]] -deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] -git-tree-sha1 = "1336e07ba2eb75614c99496501a8f4b233e9fafe" +deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "PrecompileTools", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] +git-tree-sha1 = "c67b33b085f6e2faf8bf79a61962e7339a81129c" uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" -version = "1.10.10" +version = "1.10.15" [[deps.HarfBuzz_jll]] deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll"] -git-tree-sha1 = "401e4f3f30f43af2c8478fc008da50096ea5240f" +git-tree-sha1 = "55c53be97790242c29031e5cd45e8ac296dadda3" uuid = "2e76f6c2-a576-52d4-95c1-20adfe4de566" -version = "8.3.1+0" +version = "8.5.0+0" [[deps.Highlights]] deps = ["DocStringExtensions", "InteractiveUtils", "REPL"] @@ -1006,15 +1020,15 @@ version = "0.1.17" [[deps.Hwloc_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "50aedf345a709ab75872f80a2779568dc0bb461b" +git-tree-sha1 = "f93a9ce66cd89c9ba7a4695a47fd93b4c6bc59fa" uuid = "e33a78d0-f292-5ffc-b300-72abe9b543c8" -version = "2.11.2+1" +version = "2.12.0+0" [[deps.HypergeometricFunctions]] deps = ["LinearAlgebra", "OpenLibm_jll", "SpecialFunctions"] -git-tree-sha1 = "b1c2585431c382e3fe5805874bda6aea90a95de9" +git-tree-sha1 = "68c173f4f449de5b438ee67ed0c9c748dc31a2ec" uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a" -version = "0.3.25" +version = "0.3.28" [[deps.IJulia]] deps = ["Base64", "Conda", "Dates", "InteractiveUtils", "JSON", "Libdl", "Logging", "Markdown", "MbedTLS", "Pkg", "Printf", "REPL", "Random", "SoftGlobalScope", "Test", "UUIDs", "ZMQ"] @@ -1046,10 +1060,10 @@ uuid = "c817782e-172a-44cc-b673-b171935fbb9e" version = "0.1.7" [[deps.ImageCore]] -deps = ["Aqua", "BlockArrays", "ColorVectorSpace", "Colors", "FixedPointNumbers", "MappedArrays", "MosaicViews", "OffsetArrays", "PaddedViews", "PrecompileTools", "Reexport"] -git-tree-sha1 = "661ca04f8df633e8a021c55a22e96cf820220ede" +deps = ["ColorVectorSpace", "Colors", "FixedPointNumbers", "MappedArrays", "MosaicViews", "OffsetArrays", "PaddedViews", "PrecompileTools", "Reexport"] +git-tree-sha1 = "8c193230235bbcee22c8066b0374f63b5683c2d3" uuid = "a09fc81d-aa75-5fe9-8630-4744c3626534" -version = "0.10.4" +version = "0.10.5" [[deps.ImageIO]] deps = ["FileIO", "IndirectArrays", "JpegTurbo", "LazyModules", "Netpbm", "OpenEXR", "PNGFiles", "QOI", "Sixel", "TiffImages", "UUIDs", "WebP"] @@ -1092,9 +1106,9 @@ version = "0.1.2" [[deps.IntelOpenMP_jll]] deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl"] -git-tree-sha1 = "10bd689145d2c3b2a9844005d01087cc1194e79e" +git-tree-sha1 = "0f14a5456bdc6b9731a5682f439a672750a09e48" uuid = "1d5cc7b8-4909-519e-a0f8-d0f5ad9712d0" -version = "2024.2.1+0" +version = "2025.0.4+0" [[deps.InteractiveUtils]] deps = ["Markdown"] @@ -1111,10 +1125,10 @@ weakdeps = ["Unitful"] InterpolationsUnitfulExt = "Unitful" [[deps.IntervalArithmetic]] -deps = ["CRlibm_jll", "LinearAlgebra", "MacroTools", "RoundingEmulator"] -git-tree-sha1 = "24c095b1ec7ee58b936985d31d5df92f9b9cfebb" +deps = ["CRlibm_jll", "LinearAlgebra", "MacroTools", "OpenBLASConsistentFPCSR_jll", "RoundingEmulator"] +git-tree-sha1 = "7b3603d3a5c52bcb18de8e46fa62e4176055f31e" uuid = "d1acc4aa-44c8-5952-acd4-ba5d80a2a253" -version = "0.22.19" +version = "0.22.25" weakdeps = ["DiffRules", "ForwardDiff", "IntervalSets", "RecipesBase"] [deps.IntervalArithmetic.extensions] @@ -1145,9 +1159,9 @@ weakdeps = ["Dates", "Test"] InverseFunctionsTestExt = "Test" [[deps.IrrationalConstants]] -git-tree-sha1 = "630b497eafcc20001bba38a4651b327dcfc491d2" +git-tree-sha1 = "e2222959fbc6c19554dc15174c81bf7bf3aa691c" uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" -version = "0.2.2" +version = "0.2.4" [[deps.Isoband]] deps = ["isoband_jll"] @@ -1167,9 +1181,9 @@ version = "1.0.0" [[deps.JLLWrappers]] deps = ["Artifacts", "Preferences"] -git-tree-sha1 = "be3dc50a92e5a386872a493a10050136d4703f9b" +git-tree-sha1 = "a007feb38b422fbdab534406aeca1b86823cb4d6" uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" -version = "1.6.1" +version = "1.7.0" [[deps.JSON]] deps = ["Dates", "Mmap", "Parsers", "Unicode"] @@ -1177,6 +1191,12 @@ git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a" uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" version = "0.21.4" +[[deps.Jieko]] +deps = ["ExproniconLite"] +git-tree-sha1 = "2f05ed29618da60c06a87e9c033982d4f71d0b6c" +uuid = "ae98c720-c025-4a4a-838c-29b094483192" +version = "0.2.1" + [[deps.JpegTurbo]] deps = ["CEnum", "FileIO", "ImageCore", "JpegTurbo_jll", "TOML"] git-tree-sha1 = "fa6d0bcff8583bac20f1ffa708c3913ca605c611" @@ -1185,9 +1205,9 @@ version = "0.1.5" [[deps.JpegTurbo_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "25ee0be4d43d0269027024d75a24c24d6c6e590c" +git-tree-sha1 = "eac1206917768cb54957c65a615460d87b455fc1" uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8" -version = "3.0.4+0" +version = "3.1.1+0" [[deps.KLU]] deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse_jll"] @@ -1203,9 +1223,9 @@ version = "0.6.9" [[deps.Krylov]] deps = ["LinearAlgebra", "Printf", "SparseArrays"] -git-tree-sha1 = "4f20a2df85a9e5d55c9e84634bbf808ed038cabd" +git-tree-sha1 = "b29d37ce30fa401a4563b18880ab91f979a29734" uuid = "ba0b0d4f-ebba-5204-a429-3ac8c609bfb7" -version = "0.9.8" +version = "0.9.10" [[deps.LAME_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -1215,15 +1235,15 @@ version = "3.100.2+0" [[deps.LERC_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "36bdbc52f13a7d1dcb0f3cd694e01677a515655b" +git-tree-sha1 = "aaafe88dccbd957a8d82f7d05be9b69172e0cee3" uuid = "88015f11-f218-50d7-93a8-a6af411a945d" -version = "4.0.0+0" +version = "4.0.1+0" [[deps.LLVM]] deps = ["CEnum", "LLVMExtra_jll", "Libdl", "Preferences", "Printf", "Unicode"] -git-tree-sha1 = "d422dfd9707bec6617335dc2ea3c5172a87d5908" +git-tree-sha1 = "5fcfea6df2ff3e4da708a40c969c3812162346df" uuid = "929cbde3-209d-540e-8aea-75f648917ca0" -version = "9.1.3" +version = "9.2.0" [deps.LLVM.extensions] BFloat16sExt = "BFloat16s" @@ -1233,9 +1253,9 @@ version = "9.1.3" [[deps.LLVMExtra_jll]] deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl", "TOML"] -git-tree-sha1 = "05a8bd5a42309a9ec82f700876903abce1017dd3" +git-tree-sha1 = "4b5ad6a4ffa91a00050a964492bc4f86bb48cea0" uuid = "dad2f222-ce93-54a1-a47d-0025e8a3acab" -version = "0.0.34+0" +version = "0.0.35+0" [[deps.LLVMOpenMP_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -1245,9 +1265,9 @@ version = "18.1.7+0" [[deps.LZO_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "854a9c268c43b77b0a27f22d7fab8d33cdb3a731" +git-tree-sha1 = "1c602b1127f4751facb671441ca72715cc95938a" uuid = "dd4b983a-f0e5-5f8d-a1b7-129d4a5fb1ac" -version = "2.10.2+1" +version = "2.10.3+0" [[deps.LaTeXStrings]] git-tree-sha1 = "dda21b8cbd6a6c40d9d02a73230f9d70fed6918c" @@ -1256,9 +1276,9 @@ version = "1.4.0" [[deps.Latexify]] deps = ["Format", "InteractiveUtils", "LaTeXStrings", "MacroTools", "Markdown", "OrderedCollections", "Requires"] -git-tree-sha1 = "ce5f5621cac23a86011836badfedf664a612cee4" +git-tree-sha1 = "cd714447457c660382fe634710fb56eb255ee42e" uuid = "23fbe1c1-3f47-55db-b15f-69d7ec21a316" -version = "0.16.5" +version = "0.16.6" [deps.Latexify.extensions] DataFramesExt = "DataFrames" @@ -1283,9 +1303,9 @@ version = "1.3.0" [[deps.LazyArrays]] deps = ["ArrayLayouts", "FillArrays", "LinearAlgebra", "MacroTools", "SparseArrays"] -git-tree-sha1 = "360f6039babd6e4d6364eff0d4fc9120834a2d9a" +git-tree-sha1 = "866ce84b15e54d758c11946aacd4e5df0e60b7a3" uuid = "5078a376-72f3-5289-bfd5-ec5146d43c02" -version = "2.2.1" +version = "2.6.1" [deps.LazyArrays.extensions] LazyArraysBandedMatricesExt = "BandedMatrices" @@ -1337,9 +1357,9 @@ uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" [[deps.Libffi_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "0b4a5d71f3e5200a7dff793393e09dfc2d874290" +git-tree-sha1 = "27ecae93dd25ee0909666e6835051dd684cc035e" uuid = "e9f186c6-92d2-5b65-8a66-fee21dc1b490" -version = "3.2.2+1" +version = "3.2.2+2" [[deps.Libgcrypt_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgpg_error_jll"] @@ -1348,40 +1368,40 @@ uuid = "d4300ac3-e22c-5743-9152-c294e39db1e4" version = "1.11.0+0" [[deps.Libglvnd_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll", "Xorg_libXext_jll"] -git-tree-sha1 = "6f73d1dd803986947b2c750138528a999a6c7733" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll", "Xorg_libXext_jll"] +git-tree-sha1 = "ff3b4b9d35de638936a525ecd36e86a8bb919d11" uuid = "7e76a0d4-f3c7-5321-8279-8d96eeed0f29" -version = "1.6.0+0" +version = "1.7.0+0" [[deps.Libgpg_error_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "c6ce1e19f3aec9b59186bdf06cdf3c4fc5f5f3e6" +git-tree-sha1 = "df37206100d39f79b3376afb6b9cee4970041c61" uuid = "7add5ba3-2f88-524e-9cd5-f83b8a55f7b8" -version = "1.50.0+0" +version = "1.51.1+0" [[deps.Libiconv_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "61dfdba58e585066d8bce214c5a51eaa0539f269" +git-tree-sha1 = "be484f5c92fad0bd8acfef35fe017900b0b73809" uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" -version = "1.17.0+1" +version = "1.18.0+0" [[deps.Libmount_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "0c4f9c4f1a50d8f35048fa0532dabbadf702f81e" +git-tree-sha1 = "89211ea35d9df5831fca5d33552c02bd33878419" uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9" -version = "2.40.1+0" +version = "2.40.3+0" [[deps.Libtiff_jll]] deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "LERC_jll", "Libdl", "XZ_jll", "Zlib_jll", "Zstd_jll"] -git-tree-sha1 = "b404131d06f7886402758c9ce2214b636eb4d54a" +git-tree-sha1 = "4ab7581296671007fc33f07a721631b8855f4b1d" uuid = "89763e89-9b03-5906-acba-b20f662cd828" -version = "4.7.0+0" +version = "4.7.1+0" [[deps.Libuuid_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "5ee6203157c120d79034c748a2acba45b82b8807" +git-tree-sha1 = "e888ad02ce716b319e6bdb985d2ef300e7089889" uuid = "38a345b3-de98-5d2b-a5d3-14cd9215e700" -version = "2.40.1+0" +version = "2.40.3+0" [[deps.LineSearch]] deps = ["ADTypes", "CommonSolve", "ConcreteStructs", "FastClosures", "LinearAlgebra", "MaybeInplace", "SciMLBase", "SciMLJacobianOperators", "StaticArraysCore"] @@ -1405,9 +1425,9 @@ uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" [[deps.LinearSolve]] deps = ["ArrayInterface", "ChainRulesCore", "ConcreteStructs", "DocStringExtensions", "EnumX", "FastLapackInterface", "GPUArraysCore", "InteractiveUtils", "KLU", "Krylov", "LazyArrays", "Libdl", "LinearAlgebra", "MKL_jll", "Markdown", "PrecompileTools", "Preferences", "RecursiveFactorization", "Reexport", "SciMLBase", "SciMLOperators", "Setfield", "SparseArrays", "Sparspak", "StaticArraysCore", "UnPack"] -git-tree-sha1 = "591de175461afd8323aa24b7686062574527aa3a" +git-tree-sha1 = "5ce16a2ba4acab3be950c0ccda011a10ae05ba31" uuid = "7ed4a6bd-45f5-4d41-b270-4a48e9bafcae" -version = "2.36.2" +version = "2.39.0" [deps.LinearSolve.extensions] LinearSolveBandedMatricesExt = "BandedMatrices" @@ -1441,9 +1461,9 @@ version = "2.36.2" [[deps.LogExpFunctions]] deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] -git-tree-sha1 = "a2d09619db4e765091ee5c6ffe8872849de0feea" +git-tree-sha1 = "13ca9e2586b89836fd20cccf56e57e2b9ae7f38f" uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" -version = "0.3.28" +version = "0.3.29" [deps.LogExpFunctions.extensions] LogExpFunctionsChainRulesCoreExt = "ChainRulesCore" @@ -1483,14 +1503,9 @@ version = "1.3.0" [[deps.MKL_jll]] deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "oneTBB_jll"] -git-tree-sha1 = "f046ccd0c6db2832a9f639e2c669c6fe867e5f4f" +git-tree-sha1 = "5de60bc6cb3899cd318d80d627560fae2e2d99ae" uuid = "856f044c-d86e-5d09-b602-aeab76dc8ba7" -version = "2024.2.0+0" - -[[deps.MLStyle]] -git-tree-sha1 = "bc38dff0548128765760c79eb7388a4b37fae2c8" -uuid = "d8e11817-5142-5d16-987a-aa16d5891078" -version = "0.4.17" +version = "2025.0.1+1" [[deps.MPI]] deps = ["Distributed", "DocStringExtensions", "Libdl", "MPICH_jll", "MPIPreferences", "MPItrampoline_jll", "MicrosoftMPI_jll", "OpenMPI_jll", "PkgVersion", "PrecompileTools", "Requires", "Serialization", "Sockets"] @@ -1508,9 +1523,9 @@ version = "0.20.22" [[deps.MPICH_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "Hwloc_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] -git-tree-sha1 = "7715e65c47ba3941c502bffb7f266a41a7f54423" +git-tree-sha1 = "3aa3210044138a1749dbd350a9ba8680869eb503" uuid = "7cb0a576-ebde-5e09-9194-50597f1243b4" -version = "4.2.3+0" +version = "4.3.0+1" [[deps.MPIPreferences]] deps = ["Libdl", "Preferences"] @@ -1520,27 +1535,26 @@ version = "0.1.11" [[deps.MPItrampoline_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML"] -git-tree-sha1 = "70e830dab5d0775183c99fc75e4c24c614ed7142" +git-tree-sha1 = "ff91ca13c7c472cef700f301c8d752bc2aaff1a8" uuid = "f1f71cc9-e9ae-5b93-9b94-4fe0e1ad3748" -version = "5.5.1+0" +version = "5.5.3+0" [[deps.MacroTools]] -deps = ["Markdown", "Random"] -git-tree-sha1 = "2fa9ee3e63fd3a4f7a9a4f4744a52f4856de82df" +git-tree-sha1 = "72aebe0b5051e5143a079a4685a46da330a40472" uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" -version = "0.5.13" +version = "0.5.15" [[deps.Makie]] -deps = ["Animations", "Base64", "CRC32c", "ColorBrewer", "ColorSchemes", "ColorTypes", "Colors", "Contour", "Dates", "DelaunayTriangulation", "Distributions", "DocStringExtensions", "Downloads", "FFMPEG_jll", "FileIO", "FilePaths", "FixedPointNumbers", "Format", "FreeType", "FreeTypeAbstraction", "GeometryBasics", "GridLayoutBase", "ImageBase", "ImageIO", "InteractiveUtils", "Interpolations", "IntervalSets", "InverseFunctions", "Isoband", "KernelDensity", "LaTeXStrings", "LinearAlgebra", "MacroTools", "MakieCore", "Markdown", "MathTeXEngine", "Observables", "OffsetArrays", "Packing", "PlotUtils", "PolygonOps", "PrecompileTools", "Printf", "REPL", "Random", "RelocatableFolders", "Scratch", "ShaderAbstractions", "Showoff", "SignedDistanceFields", "SparseArrays", "Statistics", "StatsBase", "StatsFuns", "StructArrays", "TriplotBase", "UnicodeFun", "Unitful"] -git-tree-sha1 = "5e4e0e027642293da251bf35dac408d692ccba8b" +deps = ["Animations", "Base64", "CRC32c", "ColorBrewer", "ColorSchemes", "ColorTypes", "Colors", "Contour", "Dates", "DelaunayTriangulation", "Distributions", "DocStringExtensions", "Downloads", "FFMPEG_jll", "FileIO", "FilePaths", "FixedPointNumbers", "Format", "FreeType", "FreeTypeAbstraction", "GeometryBasics", "GridLayoutBase", "ImageBase", "ImageIO", "InteractiveUtils", "Interpolations", "IntervalSets", "InverseFunctions", "Isoband", "KernelDensity", "LaTeXStrings", "LinearAlgebra", "MacroTools", "MakieCore", "Markdown", "MathTeXEngine", "Observables", "OffsetArrays", "PNGFiles", "Packing", "PlotUtils", "PolygonOps", "PrecompileTools", "Printf", "REPL", "Random", "RelocatableFolders", "Scratch", "ShaderAbstractions", "Showoff", "SignedDistanceFields", "SparseArrays", "Statistics", "StatsBase", "StatsFuns", "StructArrays", "TriplotBase", "UnicodeFun", "Unitful"] +git-tree-sha1 = "e64b545d25e05a609521bfc36724baa072bfd31a" uuid = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a" -version = "0.21.16" +version = "0.22.2" [[deps.MakieCore]] deps = ["ColorTypes", "GeometryBasics", "IntervalSets", "Observables"] -git-tree-sha1 = "ae4dbe0fcf1594ed98594e5f4ee685295a2a6f74" +git-tree-sha1 = "605d6e8f2b7eba7f5bc6a16d297475075d5ea775" uuid = "20f20a25-4f0e-4fdf-b5d1-57303727442b" -version = "0.8.10" +version = "0.9.1" [[deps.ManualMemory]] git-tree-sha1 = "bcaef4fc7a0cfe2cba636d84cda54b5e4e4ca3cd" @@ -1591,9 +1605,9 @@ version = "2.28.2+1" [[deps.MicrosoftMPI_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "f12a29c4400ba812841c6ace3f4efbb6dbb3ba01" +git-tree-sha1 = "bc95bf4149bf535c09602e3acdf950d9b4376227" uuid = "9237b28f-5490-5468-be7b-bb81f5f5e6cf" -version = "10.1.4+2" +version = "10.1.4+3" [[deps.Missings]] deps = ["DataAPI"] @@ -1610,6 +1624,12 @@ git-tree-sha1 = "7b86a5d4d70a9f5cdf2dacb3cbe6d251d1a61dbe" uuid = "e94cdb99-869f-56ef-bcf0-1ae2bcbe0389" version = "0.3.4" +[[deps.Moshi]] +deps = ["ExproniconLite", "Jieko"] +git-tree-sha1 = "453de0fc2be3d11b9b93ca4d0fddd91196dcf1ed" +uuid = "2e0e35c7-a2e4-4343-998d-7ef72827ed2d" +version = "0.3.5" + [[deps.MozillaCACerts_jll]] uuid = "14a3606d-f60d-562e-9121-12d972cd8159" version = "2023.1.10" @@ -1633,9 +1653,9 @@ version = "1.0.20" [[deps.MutableArithmetics]] deps = ["LinearAlgebra", "SparseArrays", "Test"] -git-tree-sha1 = "90077f1e79de8c9c7c8a90644494411111f4e07b" +git-tree-sha1 = "491bdcdc943fcbc4c005900d7463c9f216aabf4c" uuid = "d8a4904e-b15c-11e9-3269-09a3773c0cb0" -version = "1.5.2" +version = "1.6.4" [[deps.NLSolversBase]] deps = ["DiffResults", "Distributed", "FiniteDiff", "ForwardDiff"] @@ -1651,9 +1671,9 @@ version = "4.5.1" [[deps.NaNMath]] deps = ["OpenLibm_jll"] -git-tree-sha1 = "0877504529a3e5c3343c6f8b4c0381e57e4387e4" +git-tree-sha1 = "cc0a5deefdb12ab3a096f00a6d42133af4560d71" uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" -version = "1.0.2" +version = "1.1.2" [[deps.Netpbm]] deps = ["FileIO", "ImageCore", "ImageMetadata"] @@ -1673,9 +1693,9 @@ version = "0.1.2" [[deps.NonlinearSolve]] deps = ["ADTypes", "ArrayInterface", "BracketingNonlinearSolve", "CommonSolve", "ConcreteStructs", "DiffEqBase", "DifferentiationInterface", "FastClosures", "FiniteDiff", "ForwardDiff", "LineSearch", "LinearAlgebra", "LinearSolve", "NonlinearSolveBase", "NonlinearSolveFirstOrder", "NonlinearSolveQuasiNewton", "NonlinearSolveSpectralMethods", "PrecompileTools", "Preferences", "Reexport", "SciMLBase", "SimpleNonlinearSolve", "SparseArrays", "SparseMatrixColorings", "StaticArraysCore", "SymbolicIndexingInterface"] -git-tree-sha1 = "22f3efdd47bd18d8a26bd559fff254e6b21000fd" +git-tree-sha1 = "95def4e218a6832d158feafb9963be0337ea432c" uuid = "8913a72c-1f9b-4ce2-8d82-65094dcecaec" -version = "4.1.0" +version = "4.4.0" [deps.NonlinearSolve.extensions] NonlinearSolveFastLevenbergMarquardtExt = "FastLevenbergMarquardt" @@ -1704,10 +1724,10 @@ version = "4.1.0" Sundials = "c3572dad-4567-51f8-b174-8c6c989267f4" [[deps.NonlinearSolveBase]] -deps = ["ADTypes", "Adapt", "ArrayInterface", "CommonSolve", "Compat", "ConcreteStructs", "DifferentiationInterface", "EnzymeCore", "FastClosures", "FunctionProperties", "LinearAlgebra", "Markdown", "MaybeInplace", "Preferences", "Printf", "RecursiveArrayTools", "SciMLBase", "SciMLJacobianOperators", "SciMLOperators", "StaticArraysCore", "SymbolicIndexingInterface", "TimerOutputs"] -git-tree-sha1 = "1589ef8aac99a21d132adf1ec5cbe6ef651760ff" +deps = ["ADTypes", "Adapt", "ArrayInterface", "CommonSolve", "Compat", "ConcreteStructs", "DifferentiationInterface", "EnzymeCore", "FastClosures", "LinearAlgebra", "Markdown", "MaybeInplace", "Preferences", "Printf", "RecursiveArrayTools", "SciMLBase", "SciMLJacobianOperators", "SciMLOperators", "StaticArraysCore", "SymbolicIndexingInterface", "TimerOutputs"] +git-tree-sha1 = "8a2437b5ead050301b6a6258f226e5137e511000" uuid = "be0214bd-f91f-a760-ac4e-3421ce2b2da0" -version = "1.3.1" +version = "1.5.0" [deps.NonlinearSolveBase.extensions] NonlinearSolveBaseBandedMatricesExt = "BandedMatrices" @@ -1728,28 +1748,36 @@ version = "1.3.1" SparseMatrixColorings = "0a514795-09f3-496d-8182-132a7b665d35" [[deps.NonlinearSolveFirstOrder]] -deps = ["ADTypes", "ArrayInterface", "CommonSolve", "ConcreteStructs", "DiffEqBase", "FiniteDiff", "ForwardDiff", "LinearAlgebra", "LinearSolve", "MaybeInplace", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase", "SciMLJacobianOperators", "Setfield", "StaticArraysCore"] -git-tree-sha1 = "dc8535cecb0f9d978019e44b7144b9e84ab85424" +deps = ["ADTypes", "ArrayInterface", "CommonSolve", "ConcreteStructs", "DiffEqBase", "FiniteDiff", "ForwardDiff", "LineSearch", "LinearAlgebra", "LinearSolve", "MaybeInplace", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase", "SciMLJacobianOperators", "Setfield", "StaticArraysCore"] +git-tree-sha1 = "aade7ab02ee4c80ec30dc8a2874fc67155c935f1" uuid = "5959db7a-ea39-4486-b5fe-2dd0bf03d60d" -version = "1.0.0" +version = "1.3.0" [[deps.NonlinearSolveQuasiNewton]] deps = ["ArrayInterface", "CommonSolve", "ConcreteStructs", "DiffEqBase", "LinearAlgebra", "LinearSolve", "MaybeInplace", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase", "SciMLOperators", "StaticArraysCore"] -git-tree-sha1 = "066d4940938f4bb5fd1ce146e61a373f40b89d31" +git-tree-sha1 = "44a132cb32aeafcb35a6238fd91a2f3f8ff5c5b0" uuid = "9a2c21bd-3a47-402d-9113-8faf9a0ee114" -version = "1.0.0" +version = "1.2.0" +weakdeps = ["ForwardDiff"] + + [deps.NonlinearSolveQuasiNewton.extensions] + NonlinearSolveQuasiNewtonForwardDiffExt = "ForwardDiff" [[deps.NonlinearSolveSpectralMethods]] deps = ["CommonSolve", "ConcreteStructs", "DiffEqBase", "LineSearch", "MaybeInplace", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase"] -git-tree-sha1 = "cc97c44e396ab820401c8c404bc1fd18d4c884bd" +git-tree-sha1 = "f28b1ab17b5f15eb2b174eaf8813cf17f0b3e6c0" uuid = "26075421-4e9a-44e1-8bd1-420ed7ad02b2" -version = "1.0.0" +version = "1.1.0" +weakdeps = ["ForwardDiff"] + + [deps.NonlinearSolveSpectralMethods.extensions] + NonlinearSolveSpectralMethodsForwardDiffExt = "ForwardDiff" [[deps.ObjectFile]] deps = ["Reexport", "StructIO"] -git-tree-sha1 = "7249afa1c4dfd86bfbcc9b28939ab6ef844f4e11" +git-tree-sha1 = "dfcc26739b1ffa3ab51fb16f01ba7eb144f7bc50" uuid = "d8793406-e978-5875-9003-1fc021f44a92" -version = "0.4.2" +version = "0.4.3" [[deps.Observables]] git-tree-sha1 = "7438a59546cf62428fc9d1bc94729146d37a7225" @@ -1757,9 +1785,9 @@ uuid = "510215fc-4207-5dde-b226-833fc4488ee2" version = "0.5.5" [[deps.OffsetArrays]] -git-tree-sha1 = "1a27764e945a152f7ca7efa04de513d473e9542e" +git-tree-sha1 = "5e1897147d1ff8d98883cda2be2187dcf57d8f0c" uuid = "6fe1bfb0-de20-5000-8ca7-80f57d26f881" -version = "1.14.1" +version = "1.15.0" weakdeps = ["Adapt"] [deps.OffsetArrays.extensions] @@ -1777,6 +1805,12 @@ git-tree-sha1 = "6065c4cff8fee6c6770b277af45d5082baacdba1" uuid = "656ef2d0-ae68-5445-9ca0-591084a874a2" version = "0.3.24+0" +[[deps.OpenBLASConsistentFPCSR_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl"] +git-tree-sha1 = "567515ca155d0020a45b05175449b499c63e7015" +uuid = "6cdc7f73-28fd-5e50-80fb-958a8875b1af" +version = "0.3.29+0" + [[deps.OpenBLAS_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" @@ -1797,19 +1831,19 @@ version = "3.2.4+0" [[deps.OpenLibm_jll]] deps = ["Artifacts", "Libdl"] uuid = "05823500-19ac-5b8b-9628-191a04bc5112" -version = "0.8.1+2" +version = "0.8.1+4" [[deps.OpenMPI_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "Hwloc_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML", "Zlib_jll"] -git-tree-sha1 = "bfce6d523861a6c562721b262c0d1aaeead2647f" +git-tree-sha1 = "da913f03f17b449951e0461da960229d4a3d1a8c" uuid = "fe0851c0-eecd-5654-98d4-656369965a5c" -version = "5.0.5+0" +version = "5.0.7+1" [[deps.OpenSSH_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "OpenSSL_jll", "Zlib_jll"] -git-tree-sha1 = "cbb7bdfca123d91205ba9341bbaabe700934078d" +git-tree-sha1 = "cf28501224f22b2b4d237d3cc7215c7c0cb52f6a" uuid = "9bd350c2-7e96-507f-8002-3f2e150b4e1b" -version = "9.9.1+1" +version = "9.9.2+0" [[deps.OpenSSL]] deps = ["BitFlags", "Dates", "MozillaCACerts_jll", "OpenSSL_jll", "Sockets"] @@ -1819,21 +1853,21 @@ version = "1.4.3" [[deps.OpenSSL_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "7493f61f55a6cce7325f197443aa80d32554ba10" +git-tree-sha1 = "a9697f1d06cc3eb3fb3ad49cc67f2cfabaac31ea" uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" -version = "3.0.15+1" +version = "3.0.16+0" [[deps.OpenSpecFun_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "13652491f6856acfd2db29360e1bbcd4565d04f1" +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl"] +git-tree-sha1 = "1346c9208249809840c91b26703912dff463d335" uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" -version = "0.5.5+0" +version = "0.5.6+0" [[deps.Optim]] deps = ["Compat", "FillArrays", "ForwardDiff", "LineSearches", "LinearAlgebra", "NLSolversBase", "NaNMath", "Parameters", "PositiveFactorizations", "Printf", "SparseArrays", "StatsBase"] -git-tree-sha1 = "d9b79c4eed437421ac4285148fcadf42e0700e89" +git-tree-sha1 = "c1f51f704f689f87f28b33836fd460ecf9b34583" uuid = "429524aa-4258-5aef-a3af-852621145aeb" -version = "1.9.4" +version = "1.11.0" [deps.Optim.extensions] OptimMOIExt = "MathOptInterface" @@ -1848,9 +1882,9 @@ uuid = "91d4177d-7536-5919-b921-800302f37372" version = "1.3.3+0" [[deps.OrderedCollections]] -git-tree-sha1 = "dfdf5519f235516220579f949664f1bf44e741c5" +git-tree-sha1 = "cc4054e898b852042d7b503313f7ad03de99c3dd" uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" -version = "1.6.3" +version = "1.8.0" [[deps.PCRE2_jll]] deps = ["Artifacts", "Libdl"] @@ -1859,9 +1893,9 @@ version = "10.42.0+1" [[deps.PDMats]] deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "949347156c25054de2db3b166c52ac4728cbad65" +git-tree-sha1 = "966b85253e959ea89c53a9abebbf2e964fbf593b" uuid = "90014a1f-27ba-587c-ab20-58faa44d9150" -version = "0.11.31" +version = "0.11.32" [[deps.PETSc]] deps = ["Libdl", "LinearAlgebra", "MPI", "MPIPreferences", "PETSc_jll", "Pkg", "SparseArrays"] @@ -1877,9 +1911,9 @@ version = "3.22.0+0" [[deps.PNGFiles]] deps = ["Base64", "CEnum", "ImageCore", "IndirectArrays", "OffsetArrays", "libpng_jll"] -git-tree-sha1 = "67186a2bc9a90f9f85ff3cc8277868961fb57cbd" +git-tree-sha1 = "cf181f0b1e6a18dfeb0ee8acc4a9d1672499626c" uuid = "f57f5aa1-a3ce-4bc8-8ab9-96f992907883" -version = "0.4.3" +version = "0.4.4" [[deps.PackageExtensionCompat]] git-tree-sha1 = "fb28e33b8a95c4cee25ce296c817d89cc2e53518" @@ -1889,9 +1923,9 @@ weakdeps = ["Requires", "TOML"] [[deps.Packing]] deps = ["GeometryBasics"] -git-tree-sha1 = "ec3edfe723df33528e085e632414499f26650501" +git-tree-sha1 = "bc5bf2ea3d5351edf285a06b0016788a121ce92c" uuid = "19eb6ba3-879d-56ad-ad62-d5c202156566" -version = "0.5.0" +version = "0.5.1" [[deps.PaddedViews]] deps = ["OffsetArrays"] @@ -1901,9 +1935,9 @@ version = "0.5.12" [[deps.Pango_jll]] deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "FriBidi_jll", "Glib_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl"] -git-tree-sha1 = "e127b609fb9ecba6f201ba7ab753d5a605d53801" +git-tree-sha1 = "3b31172c032a1def20c98dae3f2cdc9d10e3b561" uuid = "36c8627f-9965-5494-a995-c6b170f724f3" -version = "1.54.1+0" +version = "1.56.1+0" [[deps.Parameters]] deps = ["OrderedCollections", "UnPack"] @@ -1975,18 +2009,6 @@ git-tree-sha1 = "17275485f373e6673f7e7f97051f703ed5b15b20" uuid = "85a6dd25-e78a-55b7-8502-1745935b8125" version = "0.2.4" -[[deps.PreallocationTools]] -deps = ["Adapt", "ArrayInterface", "ForwardDiff"] -git-tree-sha1 = "6c62ce45f268f3f958821a1e5192cf91c75ae89c" -uuid = "d236fae5-4411-538c-8e31-a6e3d9e00b46" -version = "0.4.24" - - [deps.PreallocationTools.extensions] - PreallocationToolsReverseDiffExt = "ReverseDiff" - - [deps.PreallocationTools.weakdeps] - ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" - [[deps.PrecompileTools]] deps = ["Preferences"] git-tree-sha1 = "5aa36f7049a63a1528fe8f7c3f2113413ffd4e1f" @@ -2026,9 +2048,9 @@ uuid = "92933f4c-e287-5a05-a399-4b506db050ca" version = "1.10.2" [[deps.PtrArrays]] -git-tree-sha1 = "77a42d78b6a92df47ab37e177b2deac405e1c88f" +git-tree-sha1 = "1d36ef11a9aaf1e8b74dacc6a731dd1de8fd493d" uuid = "43287f4e-b6f4-7ad1-bb20-aadabca52c3d" -version = "1.2.1" +version = "1.3.0" [[deps.QOI]] deps = ["ColorTypes", "FileIO", "FixedPointNumbers"] @@ -2038,9 +2060,9 @@ version = "1.0.1" [[deps.QuadGK]] deps = ["DataStructures", "LinearAlgebra"] -git-tree-sha1 = "cda3b045cf9ef07a08ad46731f5a3165e56cf3da" +git-tree-sha1 = "9da16da70037ba9d701192e27befedefb91ec284" uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc" -version = "2.11.1" +version = "2.11.2" weakdeps = ["Enzyme"] [deps.QuadGK.extensions] @@ -2089,9 +2111,9 @@ version = "1.3.4" [[deps.RecursiveArrayTools]] deps = ["Adapt", "ArrayInterface", "DocStringExtensions", "GPUArraysCore", "IteratorInterfaceExtensions", "LinearAlgebra", "RecipesBase", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "Tables"] -git-tree-sha1 = "6f4dca5fd8e97087a76b7ab8384d1c3086ace0b7" +git-tree-sha1 = "35ac79a85c8086892258581d8b6df9cd8db5c91a" uuid = "731186ca-8d62-57ce-b412-fbd966d074cd" -version = "3.27.3" +version = "3.31.1" [deps.RecursiveArrayTools.extensions] RecursiveArrayToolsFastBroadcastExt = "FastBroadcast" @@ -2100,6 +2122,7 @@ version = "3.27.3" RecursiveArrayToolsMonteCarloMeasurementsExt = "MonteCarloMeasurements" RecursiveArrayToolsReverseDiffExt = ["ReverseDiff", "Zygote"] RecursiveArrayToolsSparseArraysExt = ["SparseArrays"] + RecursiveArrayToolsStructArraysExt = "StructArrays" RecursiveArrayToolsTrackerExt = "Tracker" RecursiveArrayToolsZygoteExt = "Zygote" @@ -2110,6 +2133,7 @@ version = "3.27.3" MonteCarloMeasurements = "0987c9cc-fe09-11e8-30f0-b96dd679fdca" ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + StructArrays = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" @@ -2138,9 +2162,9 @@ version = "1.0.1" [[deps.Requires]] deps = ["UUIDs"] -git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" +git-tree-sha1 = "62389eeff14780bfe55195b7204c0d8738436d64" uuid = "ae029012-a4dd-5104-9daa-d747884805df" -version = "1.3.0" +version = "1.3.1" [[deps.ResettableStacks]] deps = ["StaticArrays"] @@ -2195,9 +2219,9 @@ version = "0.7.0" [[deps.SIMD]] deps = ["PrecompileTools"] -git-tree-sha1 = "52af86e35dd1b177d051b12681e1c581f53c281b" +git-tree-sha1 = "fea870727142270bdf7624ad675901a1ee3b4c87" uuid = "fdea26ae-647d-5447-a871-4b548cad5224" -version = "3.7.0" +version = "3.7.1" [[deps.SIMDTypes]] git-tree-sha1 = "330289636fb8107c5f32088d2741e9fd7a061a5c" @@ -2217,23 +2241,25 @@ uuid = "322a6be2-4ae8-5d68-aaf1-3e960788d1d9" version = "0.2.0" [[deps.SciMLBase]] -deps = ["ADTypes", "Accessors", "ArrayInterface", "CommonSolve", "ConstructionBase", "Distributed", "DocStringExtensions", "EnumX", "Expronicon", "FunctionWrappersWrappers", "IteratorInterfaceExtensions", "LinearAlgebra", "Logging", "Markdown", "PrecompileTools", "Preferences", "Printf", "RecipesBase", "RecursiveArrayTools", "Reexport", "RuntimeGeneratedFunctions", "SciMLOperators", "SciMLStructures", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface"] -git-tree-sha1 = "7527b9adb22904f0f51d8ab85d826f81ebb6f78d" +deps = ["ADTypes", "Accessors", "ArrayInterface", "CommonSolve", "ConstructionBase", "Distributed", "DocStringExtensions", "EnumX", "FunctionWrappersWrappers", "IteratorInterfaceExtensions", "LinearAlgebra", "Logging", "Markdown", "Moshi", "PrecompileTools", "Preferences", "Printf", "RecipesBase", "RecursiveArrayTools", "Reexport", "RuntimeGeneratedFunctions", "SciMLOperators", "SciMLStructures", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface"] +git-tree-sha1 = "c779c485f384cc824dac44ab1ef1440209027016" uuid = "0bca4576-84f4-4d90-8ffe-ffa030f20462" -version = "2.59.2" +version = "2.76.0" [deps.SciMLBase.extensions] SciMLBaseChainRulesCoreExt = "ChainRulesCore" + SciMLBaseMLStyleExt = "MLStyle" SciMLBaseMakieExt = "Makie" SciMLBasePartialFunctionsExt = "PartialFunctions" SciMLBasePyCallExt = "PyCall" SciMLBasePythonCallExt = "PythonCall" SciMLBaseRCallExt = "RCall" - SciMLBaseZygoteExt = "Zygote" + SciMLBaseZygoteExt = ["Zygote", "ChainRulesCore"] [deps.SciMLBase.weakdeps] ChainRules = "082447d4-558c-5d27-93f4-14fc19e9eca2" ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + MLStyle = "d8e11817-5142-5d16-987a-aa16d5891078" Makie = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a" PartialFunctions = "570af359-4316-4cb7-8c74-252c00c2016b" PyCall = "438e738f-606a-5dbb-bf0a-cddfbfd45ab0" @@ -2266,9 +2292,9 @@ weakdeps = ["SparseArrays", "StaticArraysCore"] [[deps.SciMLStructures]] deps = ["ArrayInterface"] -git-tree-sha1 = "25514a6f200219cd1073e4ff23a6324e4a7efe64" +git-tree-sha1 = "566c4ed301ccb2a44cbd5a27da5f885e0ed1d5df" uuid = "53ae85a6-f571-4167-b2af-e1d143709226" -version = "1.5.0" +version = "1.7.0" [[deps.Scratch]] deps = ["Dates"] @@ -2281,15 +2307,15 @@ uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" [[deps.Setfield]] deps = ["ConstructionBase", "Future", "MacroTools", "StaticArraysCore"] -git-tree-sha1 = "e2cc6d8c88613c05e1defb55170bf5ff211fbeac" +git-tree-sha1 = "c5391c6ace3bc430ca630251d02ea9687169ca68" uuid = "efcf1570-3423-57d1-acb7-fd33fddbac46" -version = "1.1.1" +version = "1.1.2" [[deps.ShaderAbstractions]] -deps = ["ColorTypes", "FixedPointNumbers", "GeometryBasics", "LinearAlgebra", "Observables", "StaticArrays", "StructArrays", "Tables"] -git-tree-sha1 = "79123bc60c5507f035e6d1d9e563bb2971954ec8" +deps = ["ColorTypes", "FixedPointNumbers", "GeometryBasics", "LinearAlgebra", "Observables", "StaticArrays"] +git-tree-sha1 = "818554664a2e01fc3784becb2eb3a82326a604b6" uuid = "65257c39-d410-5151-9873-9b3e5be5013e" -version = "0.4.1" +version = "0.5.0" [[deps.SharedArrays]] deps = ["Distributed", "Mmap", "Random", "Serialization"] @@ -2314,9 +2340,9 @@ version = "1.2.0" [[deps.SimpleNonlinearSolve]] deps = ["ADTypes", "ArrayInterface", "BracketingNonlinearSolve", "CommonSolve", "ConcreteStructs", "DifferentiationInterface", "FastClosures", "FiniteDiff", "ForwardDiff", "LineSearch", "LinearAlgebra", "MaybeInplace", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase", "Setfield", "StaticArraysCore"] -git-tree-sha1 = "f7e2042e0b68c6bb19a0a1594839792737f51d84" +git-tree-sha1 = "a3868a6add9f5989d1f4bd21de0333ef89fb9d9f" uuid = "727e6d20-b764-4bd8-a329-72de5adea6c7" -version = "2.0.0" +version = "2.1.0" [deps.SimpleNonlinearSolve.extensions] SimpleNonlinearSolveChainRulesCoreExt = "ChainRulesCore" @@ -2364,9 +2390,9 @@ version = "1.10.0" [[deps.SparseConnectivityTracer]] deps = ["ADTypes", "DocStringExtensions", "FillArrays", "LinearAlgebra", "Random", "SparseArrays"] -git-tree-sha1 = "6914df6005bab9940e2a96879a97a43e1fb1ce78" +git-tree-sha1 = "e60ba2f27bf0c85cc20ac326a158182630032bb6" uuid = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" -version = "0.6.8" +version = "0.6.14" [deps.SparseConnectivityTracer.extensions] SparseConnectivityTracerDataInterpolationsExt = "DataInterpolations" @@ -2384,9 +2410,9 @@ version = "0.6.8" [[deps.SparseDiffTools]] deps = ["ADTypes", "Adapt", "ArrayInterface", "Compat", "DataStructures", "FiniteDiff", "ForwardDiff", "Graphs", "LinearAlgebra", "PackageExtensionCompat", "Random", "Reexport", "SciMLOperators", "Setfield", "SparseArrays", "StaticArrayInterface", "StaticArrays", "UnPack", "VertexSafeGraphs"] -git-tree-sha1 = "b906758c107b049b6b71599b9f928d9b14e5554a" +git-tree-sha1 = "d79802152d958607f414f5447cb25e314db979c0" uuid = "47a9eef4-7e08-11e9-0b38-333d64bd3804" -version = "2.23.0" +version = "2.23.1" [deps.SparseDiffTools.extensions] SparseDiffToolsEnzymeExt = "Enzyme" @@ -2404,9 +2430,9 @@ version = "2.23.0" [[deps.SparseMatrixColorings]] deps = ["ADTypes", "DataStructures", "DocStringExtensions", "LinearAlgebra", "Random", "SparseArrays"] -git-tree-sha1 = "670f2c8109e87d79788baef47880b946e529f1a2" +git-tree-sha1 = "e0ae9189392572abe85bc9fd4ce35e772b1e1e10" uuid = "0a514795-09f3-496d-8182-132a7b665d35" -version = "0.4.9" +version = "0.4.14" weakdeps = ["Colors"] [deps.SparseMatrixColorings.extensions] @@ -2420,9 +2446,9 @@ version = "0.3.9" [[deps.SpecialFunctions]] deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] -git-tree-sha1 = "2f5d4697f21388cbe1ff299430dd169ef97d7e14" +git-tree-sha1 = "64cca0c26b4f31ba18f13f6c12af7c85f478cfde" uuid = "276daf66-3868-5448-9aa4-cd146d93841b" -version = "2.4.0" +version = "2.5.0" weakdeps = ["ChainRulesCore"] [deps.SpecialFunctions.extensions] @@ -2448,9 +2474,9 @@ version = "0.1.1" [[deps.Static]] deps = ["CommonWorldInvalidations", "IfElse", "PrecompileTools"] -git-tree-sha1 = "87d51a3ee9a4b0d2fe054bdd3fc2436258db2603" +git-tree-sha1 = "f737d444cb0ad07e61b3c1bef8eb91203c321eff" uuid = "aedffcd0-7271-4cad-89d0-dc628f76c6d3" -version = "1.1.1" +version = "1.2.0" [[deps.StaticArrayInterface]] deps = ["ArrayInterface", "Compat", "IfElse", "LinearAlgebra", "PrecompileTools", "Static"] @@ -2465,9 +2491,9 @@ weakdeps = ["OffsetArrays", "StaticArrays"] [[deps.StaticArrays]] deps = ["LinearAlgebra", "PrecompileTools", "Random", "StaticArraysCore"] -git-tree-sha1 = "777657803913ffc7e8cc20f0fd04b634f871af8f" +git-tree-sha1 = "0feb6b9031bd5c51f9072393eb5ab3efd31bf9e4" uuid = "90137ffa-7385-5640-81b9-e52037218182" -version = "1.9.8" +version = "1.9.13" weakdeps = ["ChainRulesCore", "Statistics"] [deps.StaticArrays.extensions] @@ -2491,10 +2517,10 @@ uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" version = "1.7.0" [[deps.StatsBase]] -deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] -git-tree-sha1 = "5cf7606d6cef84b543b483848d4ae08ad9832b21" +deps = ["AliasTables", "DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] +git-tree-sha1 = "29321314c920c26684834965ec2ce0dacc9cf8e5" uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" -version = "0.34.3" +version = "0.34.4" [[deps.StatsFuns]] deps = ["HypergeometricFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"] @@ -2521,23 +2547,31 @@ version = "0.3.7" [[deps.StringManipulation]] deps = ["PrecompileTools"] -git-tree-sha1 = "a6b1675a536c5ad1a60e5a5153e1fee12eb146e3" +git-tree-sha1 = "725421ae8e530ec29bcbdddbe91ff8053421d023" uuid = "892a3eda-7b42-436c-8928-eab12a02cf0e" -version = "0.4.0" +version = "0.4.1" [[deps.StructArrays]] deps = ["ConstructionBase", "DataAPI", "Tables"] -git-tree-sha1 = "f4dc295e983502292c4c3f951dbb4e985e35b3be" +git-tree-sha1 = "5a3a31c41e15a1e042d60f2f4942adccba05d3c9" uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" -version = "0.6.18" -weakdeps = ["Adapt", "GPUArraysCore", "SparseArrays", "StaticArrays"] +version = "0.7.0" [deps.StructArrays.extensions] StructArraysAdaptExt = "Adapt" - StructArraysGPUArraysCoreExt = "GPUArraysCore" + StructArraysGPUArraysCoreExt = ["GPUArraysCore", "KernelAbstractions"] + StructArraysLinearAlgebraExt = "LinearAlgebra" StructArraysSparseArraysExt = "SparseArrays" StructArraysStaticArraysExt = "StaticArrays" + [deps.StructArrays.weakdeps] + Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" + GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" + KernelAbstractions = "63c18a36-062a-441e-b654-da1e3ab1ce7c" + LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" + [[deps.StructIO]] git-tree-sha1 = "c581be48ae1cbf83e899b14c07a807e1787512cc" uuid = "53d494c1-5632-5724-8f4c-31dff12d585f" @@ -2566,9 +2600,9 @@ version = "5.2.2+0" [[deps.SymbolicIndexingInterface]] deps = ["Accessors", "ArrayInterface", "RuntimeGeneratedFunctions", "StaticArraysCore"] -git-tree-sha1 = "20cf607cafb31f922bce84d60379203e7a126911" +git-tree-sha1 = "d6c04e26aa1c8f7d144e1a8c47f1c73d3013e289" uuid = "2efcf032-c050-4f8e-a9bb-153293bab1f5" -version = "0.3.34" +version = "0.3.38" [[deps.SymbolicLimits]] deps = ["SymbolicUtils"] @@ -2577,10 +2611,10 @@ uuid = "19f23fe9-fdab-4a78-91af-e7b7767979c3" version = "0.2.2" [[deps.SymbolicUtils]] -deps = ["AbstractTrees", "ArrayInterface", "Bijections", "ChainRulesCore", "Combinatorics", "ConstructionBase", "DataStructures", "DocStringExtensions", "DynamicPolynomials", "IfElse", "LinearAlgebra", "MultivariatePolynomials", "NaNMath", "Setfield", "SparseArrays", "SpecialFunctions", "StaticArrays", "SymbolicIndexingInterface", "TermInterface", "TimerOutputs", "Unityper"] -git-tree-sha1 = "04e9157537ba51dad58336976f8d04b9ab7122f0" +deps = ["AbstractTrees", "ArrayInterface", "Bijections", "ChainRulesCore", "Combinatorics", "ConstructionBase", "DataStructures", "DocStringExtensions", "DynamicPolynomials", "ExproniconLite", "LinearAlgebra", "MultivariatePolynomials", "NaNMath", "Setfield", "SparseArrays", "SpecialFunctions", "StaticArrays", "SymbolicIndexingInterface", "TaskLocalValues", "TermInterface", "TimerOutputs", "Unityper", "WeakValueDicts"] +git-tree-sha1 = "e2ddc57092cced7b05cb7bf848ab81181462ec5c" uuid = "d1185830-fcd6-423d-90d6-eec64667417b" -version = "3.7.2" +version = "3.19.0" [deps.SymbolicUtils.extensions] SymbolicUtilsLabelledArraysExt = "LabelledArrays" @@ -2591,10 +2625,10 @@ version = "3.7.2" ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" [[deps.Symbolics]] -deps = ["ADTypes", "ArrayInterface", "Bijections", "CommonWorldInvalidations", "ConstructionBase", "DataStructures", "DiffRules", "Distributions", "DocStringExtensions", "DomainSets", "DynamicPolynomials", "IfElse", "LaTeXStrings", "Latexify", "Libdl", "LinearAlgebra", "LogExpFunctions", "MacroTools", "Markdown", "NaNMath", "PrecompileTools", "Primes", "RecipesBase", "Reexport", "RuntimeGeneratedFunctions", "SciMLBase", "Setfield", "SparseArrays", "SpecialFunctions", "StaticArraysCore", "SymbolicIndexingInterface", "SymbolicLimits", "SymbolicUtils", "TermInterface"] -git-tree-sha1 = "0caef7687abf7094132fa3112bf5514c36a99226" +deps = ["ADTypes", "ArrayInterface", "Bijections", "CommonWorldInvalidations", "ConstructionBase", "DataStructures", "DiffRules", "Distributions", "DocStringExtensions", "DomainSets", "DynamicPolynomials", "LaTeXStrings", "Latexify", "Libdl", "LinearAlgebra", "LogExpFunctions", "MacroTools", "Markdown", "NaNMath", "OffsetArrays", "PrecompileTools", "Primes", "RecipesBase", "Reexport", "RuntimeGeneratedFunctions", "SciMLBase", "Setfield", "SparseArrays", "SpecialFunctions", "StaticArraysCore", "SymbolicIndexingInterface", "SymbolicLimits", "SymbolicUtils", "TermInterface"] +git-tree-sha1 = "326982e1f8a8214ff83cc427484acc858f975c74" uuid = "0c5d862f-8b57-4792-8d23-62f2024744c7" -version = "6.18.3" +version = "6.29.2" [deps.Symbolics.extensions] SymbolicsForwardDiffExt = "ForwardDiff" @@ -2634,6 +2668,11 @@ deps = ["ArgTools", "SHA"] uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" version = "1.10.0" +[[deps.TaskLocalValues]] +git-tree-sha1 = "d155450e6dff2a8bc2fcb81dcb194bd98b0aeb46" +uuid = "ed4db957-447d-4319-bfb6-7fa9ae7ecf34" +version = "0.1.2" + [[deps.TensorCore]] deps = ["LinearAlgebra"] git-tree-sha1 = "1feb45f88d133a655e001435632f019a9a1bcdb6" @@ -2657,15 +2696,21 @@ version = "0.5.2" [[deps.TiffImages]] deps = ["ColorTypes", "DataStructures", "DocStringExtensions", "FileIO", "FixedPointNumbers", "IndirectArrays", "Inflate", "Mmap", "OffsetArrays", "PkgVersion", "ProgressMeter", "SIMD", "UUIDs"] -git-tree-sha1 = "0248b1b2210285652fbc67fd6ced9bf0394bcfec" +git-tree-sha1 = "f21231b166166bebc73b99cea236071eb047525b" uuid = "731e570b-9d59-4bfa-96dc-6df516fadf69" -version = "0.11.1" +version = "0.11.3" [[deps.TimerOutputs]] deps = ["ExprTools", "Printf"] -git-tree-sha1 = "3a6f063d690135f5c1ba351412c82bae4d1402bf" +git-tree-sha1 = "f57facfd1be61c42321765d3551b3df50f7e09f6" uuid = "a759f4b9-e2f1-59dc-863e-4aeb61b1ea8f" -version = "0.5.25" +version = "0.5.28" + + [deps.TimerOutputs.extensions] + FlameGraphsExt = "FlameGraphs" + + [deps.TimerOutputs.weakdeps] + FlameGraphs = "08572546-2f56-4bcf-ba4e-bab62c3a3f89" [[deps.TranscodingStreams]] git-tree-sha1 = "0c45878dcfdcfa8480052b6ab162cdd138781742" @@ -2714,9 +2759,9 @@ version = "0.4.1" [[deps.Unitful]] deps = ["Dates", "LinearAlgebra", "Random"] -git-tree-sha1 = "d95fe458f26209c66a187b1114df96fd70839efd" +git-tree-sha1 = "c0667a8e676c53d390a09dc6870b3d8d6650e2bf" uuid = "1986cc42-f94f-5a68-af5c-568840ba703d" -version = "1.21.0" +version = "1.22.0" weakdeps = ["ConstructionBase", "InverseFunctions"] [deps.Unitful.extensions] @@ -2746,6 +2791,11 @@ git-tree-sha1 = "8351f8d73d7e880bfc042a8b6922684ebeafb35c" uuid = "19fa3120-7c27-5ec5-8db8-b0b0aa330d6f" version = "0.2.0" +[[deps.WeakValueDicts]] +git-tree-sha1 = "98528c2610a5479f091d470967a25becfd83edd0" +uuid = "897b6980-f191-5a31-bcb0-bf3c4585e0c1" +version = "0.1.0" + [[deps.Weave]] deps = ["Base64", "Dates", "Highlights", "JSON", "Markdown", "Mustache", "Pkg", "Printf", "REPL", "RelocatableFolders", "Requires", "Serialization", "YAML"] git-tree-sha1 = "092217eb5443926d200ae9325f103906efbb68b1" @@ -2766,87 +2816,87 @@ version = "1.0.0" [[deps.XML2_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Zlib_jll"] -git-tree-sha1 = "6a451c6f33a176150f315726eba8b92fbfdb9ae7" +git-tree-sha1 = "b8b243e47228b4a3877f1dd6aee0c5d56db7fcf4" uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" -version = "2.13.4+0" +version = "2.13.6+1" [[deps.XSLT_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgcrypt_jll", "Libgpg_error_jll", "Libiconv_jll", "XML2_jll", "Zlib_jll"] -git-tree-sha1 = "a54ee957f4c86b526460a720dbc882fa5edcbefc" +git-tree-sha1 = "7d1671acbe47ac88e981868a078bd6b4e27c5191" uuid = "aed1982a-8fda-507f-9586-7b0439959a61" -version = "1.1.41+0" +version = "1.1.42+0" [[deps.XZ_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "15e637a697345f6743674f1322beefbc5dcd5cfc" +git-tree-sha1 = "56c6604ec8b2d82cc4cfe01aa03b00426aac7e1f" uuid = "ffd25f8a-64ca-5728-b0f7-c24cf3aae800" -version = "5.6.3+0" +version = "5.6.4+1" [[deps.Xorg_libX11_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxcb_jll", "Xorg_xtrans_jll"] -git-tree-sha1 = "afead5aba5aa507ad5a3bf01f58f82c8d1403495" +git-tree-sha1 = "9dafcee1d24c4f024e7edc92603cedba72118283" uuid = "4f6342f7-b3d2-589e-9d20-edeb45f2b2bc" -version = "1.8.6+0" +version = "1.8.6+3" [[deps.Xorg_libXau_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "6035850dcc70518ca32f012e46015b9beeda49d8" +git-tree-sha1 = "e9216fdcd8514b7072b43653874fd688e4c6c003" uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec" -version = "1.0.11+0" +version = "1.0.12+0" [[deps.Xorg_libXdmcp_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "34d526d318358a859d7de23da945578e8e8727b7" +git-tree-sha1 = "89799ae67c17caa5b3b5a19b8469eeee474377db" uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05" -version = "1.1.4+0" +version = "1.1.5+0" [[deps.Xorg_libXext_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] -git-tree-sha1 = "d2d1a5c49fae4ba39983f63de6afcbea47194e85" +git-tree-sha1 = "d7155fea91a4123ef59f42c4afb5ab3b4ca95058" uuid = "1082639a-0dae-5f34-9b06-72781eeb8cb3" -version = "1.3.6+0" +version = "1.3.6+3" [[deps.Xorg_libXrender_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] -git-tree-sha1 = "47e45cd78224c53109495b3e324df0c37bb61fbe" +git-tree-sha1 = "a490c6212a0e90d2d55111ac956f7c4fa9c277a6" uuid = "ea2f1a96-1ddc-540d-b46f-429655e07cfa" -version = "0.9.11+0" +version = "0.9.11+1" [[deps.Xorg_libpthread_stubs_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "8fdda4c692503d44d04a0603d9ac0982054635f9" +git-tree-sha1 = "c57201109a9e4c0585b208bb408bc41d205ac4e9" uuid = "14d82f49-176c-5ed1-bb49-ad3f5cbd8c74" -version = "0.1.1+0" +version = "0.1.2+0" [[deps.Xorg_libxcb_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "XSLT_jll", "Xorg_libXau_jll", "Xorg_libXdmcp_jll", "Xorg_libpthread_stubs_jll"] -git-tree-sha1 = "bcd466676fef0878338c61e655629fa7bbc69d8e" +git-tree-sha1 = "1a74296303b6524a0472a8cb12d3d87a78eb3612" uuid = "c7cfdc94-dc32-55de-ac96-5a1b8d977c5b" -version = "1.17.0+0" +version = "1.17.0+3" [[deps.Xorg_xtrans_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "e92a1a012a10506618f10b7047e478403a046c77" +git-tree-sha1 = "6dba04dbfb72ae3ebe5418ba33d087ba8aa8cb00" uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10" -version = "1.5.0+0" +version = "1.5.1+0" [[deps.YAML]] deps = ["Base64", "Dates", "Printf", "StringEncodings"] -git-tree-sha1 = "dea63ff72079443240fbd013ba006bcbc8a9ac00" +git-tree-sha1 = "b46894beba6c05cd185d174654479aaec09ea6b1" uuid = "ddb6d928-2868-570f-bddf-ab3f9cf99eb6" -version = "0.4.12" +version = "0.4.13" [[deps.ZMQ]] deps = ["FileWatching", "PrecompileTools", "Sockets", "ZeroMQ_jll"] -git-tree-sha1 = "18cfd00df3cbbebf8ea4ec7ea6bbceb3af716bd0" +git-tree-sha1 = "33333bdded3835f81b9b6353da9243dc4ec62e0f" uuid = "c2297ded-f4af-51ae-bb23-16f91089e4e1" -version = "1.3.0" +version = "1.4.0" [[deps.ZeroMQ_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "libsodium_jll"] -git-tree-sha1 = "f02ce8f0fda1ed40f4d0d59a2ad05e35e8ac9b0e" +git-tree-sha1 = "766d90db2817565b667c1cc9cc420d668f2e8dba" uuid = "8f1865be-045e-5c20-9c9f-bfbfb0764568" -version = "4.3.5+1" +version = "4.3.6+0" [[deps.Zlib_jll]] deps = ["Libdl"] @@ -2855,9 +2905,9 @@ version = "1.2.13+1" [[deps.Zstd_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "555d1076590a6cc2fdee2ef1469451f872d8b41b" +git-tree-sha1 = "446b23e73536f84e8037f5dce465e92275f6a308" uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" -version = "1.5.6+1" +version = "1.5.7+1" [[deps.cminpack_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -2873,9 +2923,9 @@ version = "0.2.3+0" [[deps.libaom_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "1827acba325fdcdf1d2647fc8d5301dd9ba43a9d" +git-tree-sha1 = "522c1df09d05a71785765d19c9524661234738e9" uuid = "a4ae2306-e953-59d6-aa16-d00cac43593b" -version = "3.9.0+0" +version = "3.11.0+0" [[deps.libass_jll]] deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl", "Zlib_jll"] @@ -2896,9 +2946,9 @@ version = "2.0.3+0" [[deps.libpng_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Zlib_jll"] -git-tree-sha1 = "b70c870239dc3d7bc094eb2d6be9b73d27bef280" +git-tree-sha1 = "068dfe202b0a05b8332f1e8e6b4080684b9c7700" uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f" -version = "1.6.44+0" +version = "1.6.47+0" [[deps.libsass_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -2907,16 +2957,16 @@ uuid = "47bcb7c8-5119-555a-9eeb-0afcc36cd728" version = "3.6.6+0" [[deps.libsixel_jll]] -deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Pkg", "libpng_jll"] -git-tree-sha1 = "7dfa0fd9c783d3d0cc43ea1af53d69ba45c447df" +deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "Libdl", "libpng_jll"] +git-tree-sha1 = "c1733e347283df07689d71d61e14be986e49e47a" uuid = "075b6546-f08a-558a-be8f-8157d0f608a5" -version = "1.10.3+1" +version = "1.10.5+0" [[deps.libsodium_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "f76d682d87eefadd3f165d8d9fda436464213142" +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "011b0a7331b41c25524b64dc42afc9683ee89026" uuid = "a9144af2-ca23-56d9-984f-0d03f7b5ccf8" -version = "1.0.20+1" +version = "1.0.21+0" [[deps.libvorbis_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Ogg_jll", "Pkg"] @@ -2926,9 +2976,9 @@ version = "1.3.7+2" [[deps.libwebp_jll]] deps = ["Artifacts", "Giflib_jll", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libglvnd_jll", "Libtiff_jll", "libpng_jll"] -git-tree-sha1 = "ccbb625a89ec6195856a50aa2b668a5c08712c94" +git-tree-sha1 = "d2408cac540942921e7bd77272c32e58c33d8a77" uuid = "c5f90fcd-3b7e-5836-afba-fc50a0988cb2" -version = "1.4.0+0" +version = "1.5.0+0" [[deps.nghttp2_jll]] deps = ["Artifacts", "Libdl"] @@ -2937,9 +2987,9 @@ version = "1.52.0+1" [[deps.oneTBB_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "7d0ea0f4895ef2f5cb83645fa689e52cb55cf493" +git-tree-sha1 = "d5a767a3bb77135a99e433afe0eb14cd7f6914c3" uuid = "1317d2d5-d96f-522e-a858-c73665f53c3e" -version = "2021.12.0+0" +version = "2022.0.0+0" [[deps.p7zip_jll]] deps = ["Artifacts", "Libdl"] @@ -2948,9 +2998,9 @@ version = "17.4.0+2" [[deps.x264_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "35976a1216d6c066ea32cba2150c4fa682b276fc" +git-tree-sha1 = "14cc7083fc6dff3cc44f2bc435ee96d06ed79aa7" uuid = "1270edf5-f2f9-52d2-97e9-ab00b5d0237a" -version = "10164.0.0+0" +version = "10164.0.1+0" [[deps.x265_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] diff --git a/benchmarks/NonlinearProblem/bruss.jmd b/benchmarks/NonlinearProblem/bruss.jmd index 14b33302a..793a22765 100644 --- a/benchmarks/NonlinearProblem/bruss.jmd +++ b/benchmarks/NonlinearProblem/bruss.jmd @@ -61,38 +61,41 @@ function init_brusselator_2d(xyd, N) return u end -function generate_brusselator_problem(N::Int; sparsity = nothing, kwargs...) - xyd_brusselator = range(0; stop = 1, length = N) - - function brusselator_2d_loop(du_, u_, p) - A, B, α, δx = p - α = α / δx ^ 2 +function brusselator_2d_loop(du_, u_, p) + A, B, α, xyd_brusselator, N = p + δx = step(xyd_brusselator) + α = α / δx ^ 2 - du = reshape(du_, N, N, 2) - u = reshape(u_, N, N, 2) + du = reshape(du_, N, N, 2) + u = reshape(u_, N, N, 2) - @inbounds @simd for I in CartesianIndices((N, N)) - i, j = Tuple(I) - x, y = xyd_brusselator[I[1]], xyd_brusselator[I[2]] - ip1, im1 = limit(i + 1, N), limit(i - 1, N) - jp1, jm1 = limit(j + 1, N), limit(j - 1, N) - - du[i, j, 1] = α * (u[im1, j, 1] + u[ip1, j, 1] + u[i, jp1, 1] + u[i, jm1, 1] - - 4u[i, j, 1]) + - B + u[i, j, 1] ^ 2 * u[i, j, 2] - (A + 1) * u[i, j, 1] + - brusselator_f(x, y) - - du[i, j, 2] = α * (u[im1, j, 2] + u[ip1, j, 2] + u[i, jp1, 2] + u[i, jm1, 2] - - 4u[i, j, 2]) + - A * u[i, j, 1] - u[i, j, 1] ^ 2 * u[i, j, 2] - end - return nothing + # @inbounds + # @simd + for I in CartesianIndices((N, N)) + i, j = Tuple(I) + x, y = xyd_brusselator[I[1]], xyd_brusselator[I[2]] + ip1, im1 = limit(i + 1, N), limit(i - 1, N) + jp1, jm1 = limit(j + 1, N), limit(j - 1, N) + + du[i, j, 1] = α * (u[im1, j, 1] + u[ip1, j, 1] + u[i, jp1, 1] + u[i, jm1, 1] - + 4u[i, j, 1]) + + B + u[i, j, 1] ^ 2 * u[i, j, 2] - (A + 1) * u[i, j, 1] + + brusselator_f(x, y) + + du[i, j, 2] = α * (u[im1, j, 2] + u[ip1, j, 2] + u[i, jp1, 2] + u[i, jm1, 2] - + 4u[i, j, 2]) + + A * u[i, j, 1] - u[i, j, 1] ^ 2 * u[i, j, 2] end + return nothing +end + +function generate_brusselator_problem(N::Int; sparsity = nothing, kwargs...) + xyd_brusselator = range(0; stop = 1, length = N) return NonlinearProblem( NonlinearFunction(brusselator_2d_loop; sparsity), vec(init_brusselator_2d(xyd_brusselator, N)), - (3.4, 1.0, 10.0, step(xyd_brusselator)); + (3.4, 1.0, 10.0, xyd_brusselator, N); kwargs... ) end @@ -155,9 +158,7 @@ function cache_and_compute_10_jacobians(adtype, f!::F, y, x, p) where {F} return J end -# XXX: run till 8 on CI -# Ns = [2^i for i in 1:8] -Ns = [2^i for i in 1:6] +Ns = [2^i for i in 1:8] adtypes = [ ( @@ -355,24 +356,21 @@ First, let us experiment the scaling of each algorithm with the problem size. ```julia Ns = vcat(collect(2 .^ (2:7)), [150, 175, 200]) -# XXX: PETSc just segfaults solvers_scaling = [ (; pkg = :nonlinearsolve, sparsity = :none, name = "NR (No Sparsity)", alg = NewtonRaphson()), - # (; pkg = :nonlinearsolve, sparsity = :approx, name = "NR (Approx. Local Sparsity)", alg = NewtonRaphson()), (; pkg = :nonlinearsolve, sparsity = :exact, name = "NR (Exact Sparsity)", alg = NewtonRaphson()), (; pkg = :wrapper, sparsity = :none, name = "NR [NLsolve.jl]", alg = NLsolveJL(; method = :newton, autodiff = :forward)), (; pkg = :wrapper, sparsity = :none, name = "Mod. NR [Sundials]", alg = KINSOL()), - # (; pkg = :wrapper, sparsity = :none, name = "NR [PETSc] (No Sparsity)", alg = PETScSNES(; snes_type = "newtonls")), - # (; pkg = :wrapper, sparsity = :none, name = "NR [PETSc] (Approx. Local Sparsity)", alg = PETScSNES(; snes_type = "newtonls")), - # (; pkg = :wrapper, sparsity = :none, name = "NR [PETSc] (Exact Sparsity)", alg = PETScSNES(; snes_type = "newtonls")), + (; pkg = :wrapper, sparsity = :none, name = "NR [PETSc] (No Sparsity)", alg = PETScSNES(; snes_type = "newtonls")), + (; pkg = :wrapper, sparsity = :none, name = "NR [PETSc] (Approx. Local Sparsity)", alg = PETScSNES(; snes_type = "newtonls")), + (; pkg = :wrapper, sparsity = :none, name = "NR [PETSc] (Exact Sparsity)", alg = PETScSNES(; snes_type = "newtonls")), (; pkg = :nonlinearsolve, sparsity = :none, name = "TR (No Sparsity)", alg = TrustRegion(; radius_update_scheme = RUS.NLsolve)), - # (; pkg = :nonlinearsolve, sparsity = :approx, name = "TR (Approx. Local Sparsity)", alg = TrustRegion(; radius_update_scheme = RUS.NLsolve)), (; pkg = :nonlinearsolve, sparsity = :exact, name = "TR (Exact Sparsity)", alg = TrustRegion(; radius_update_scheme = RUS.NLsolve)), (; pkg = :wrapper, sparsity = :none, name = "TR [NLsolve.jl]", alg = NLsolveJL(; autodiff = :forward)), - # (; pkg = :wrapper, sparsity = :none, name = "TR [PETSc] (No Sparsity)", alg = PETScSNES(; snes_type = "newtontr")), - # (; pkg = :wrapper, sparsity = :none, name = "TR [PETSc] (Approx. Local Sparsity)", alg = PETScSNES(; snes_type = "newtontr")), - # (; pkg = :wrapper, sparsity = :none, name = "TR [PETSc] (Exact Sparsity)", alg = PETScSNES(; snes_type = "newtontr")), + (; pkg = :wrapper, sparsity = :none, name = "TR [PETSc] (No Sparsity)", alg = PETScSNES(; snes_type = "newtontr")), + (; pkg = :wrapper, sparsity = :none, name = "TR [PETSc] (Approx. Local Sparsity)", alg = PETScSNES(; snes_type = "newtontr")), + (; pkg = :wrapper, sparsity = :none, name = "TR [PETSc] (Exact Sparsity)", alg = PETScSNES(; snes_type = "newtontr")), (; pkg = :wrapper, sparsity = :none, name = "Mod. Powell [MINPACK]", alg = CMINPACK()), ] @@ -553,6 +551,7 @@ end Ns = 2 .^ (2:7) +# XXX: Add PETSc solvers_scaling_jacobian_free = [ (; pkg = :nonlinearsolve, name = "Newton Krylov", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES())), (; pkg = :nonlinearsolve, name = "Newton Krylov (ILU)", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES(; precs = incompletelu), concrete_jac = true)), @@ -695,6 +694,7 @@ In this section, we will generate the work-precision of the solvers. All solvers exploit sparsity will automatically do so. ```julia +# XXX: Add PETSc solvers_all = [ (; pkg = :nonlinearsolve, name = "Default PolyAlg", solver = Dict(:alg => FastShortcutNonlinearPolyalg())), (; pkg = :nonlinearsolve, name = "RobustMultiNewton (GMRES)", solver = Dict(:alg => RobustMultiNewton(; linsolve = KrylovJL_GMRES()))), From d80a5d1f968c814e7c2ff5ab773c6d8781149e13 Mon Sep 17 00:00:00 2001 From: Avik Pal Date: Wed, 9 Apr 2025 17:49:42 -0400 Subject: [PATCH 02/39] fix: try disabling gc --- benchmarks/NonlinearProblem/Manifest.toml | 380 ++++++++++++---------- benchmarks/NonlinearProblem/bruss.jmd | 148 ++++----- 2 files changed, 281 insertions(+), 247 deletions(-) diff --git a/benchmarks/NonlinearProblem/Manifest.toml b/benchmarks/NonlinearProblem/Manifest.toml index f360faafc..a3cf19776 100644 --- a/benchmarks/NonlinearProblem/Manifest.toml +++ b/benchmarks/NonlinearProblem/Manifest.toml @@ -1,8 +1,8 @@ # This file is machine-generated - editing it directly is not advised -julia_version = "1.10.9" +julia_version = "1.11.4" manifest_format = "2.0" -project_hash = "8ac8121c04e325182b3891d30875e92678cafb2e" +project_hash = "de0574819742a8dd5f436fcca2084771e05bc2da" [[deps.ADTypes]] git-tree-sha1 = "e2478490447631aedba0823d4d7a80b2cc8cdb32" @@ -102,7 +102,7 @@ version = "0.4.2" [[deps.ArgTools]] uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" -version = "1.1.1" +version = "1.1.2" [[deps.ArnoldiMethod]] deps = ["LinearAlgebra", "Random", "StaticArrays"] @@ -154,6 +154,7 @@ weakdeps = ["SparseArrays"] [[deps.Artifacts]] uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" +version = "1.11.0" [[deps.Automa]] deps = ["PrecompileTools", "SIMD", "TranscodingStreams"] @@ -175,6 +176,7 @@ version = "0.4.7" [[deps.Base64]] uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" +version = "1.11.0" [[deps.BenchmarkTools]] deps = ["Compat", "JSON", "Logging", "Printf", "Profile", "Statistics", "UUIDs"] @@ -200,9 +202,9 @@ version = "0.1.6" [[deps.BracketingNonlinearSolve]] deps = ["CommonSolve", "ConcreteStructs", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase"] -git-tree-sha1 = "95cb19c37ea427617e9795655667712f03058d98" +git-tree-sha1 = "bfdafcc043eb34fe21a2dae769734fd918546d6b" uuid = "70df07ce-3d50-431d-a3e7-ca6ddb60ac1e" -version = "1.1.0" +version = "1.1.3" weakdeps = ["ForwardDiff"] [deps.BracketingNonlinearSolve.extensions] @@ -227,6 +229,7 @@ version = "0.2.6" [[deps.CRC32c]] uuid = "8bf52ea8-c179-5cab-976a-9e18b702a9bc" +version = "1.11.0" [[deps.CRlibm_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -242,15 +245,15 @@ version = "1.1.1" [[deps.CairoMakie]] deps = ["CRC32c", "Cairo", "Cairo_jll", "Colors", "FileIO", "FreeType", "GeometryBasics", "LinearAlgebra", "Makie", "PrecompileTools"] -git-tree-sha1 = "15d6504f47633ee9b63be11a0384925ba0c84f61" +git-tree-sha1 = "a10fffc5ef0ab87666c0c4883e9116d516d76156" uuid = "13f3f980-e62b-5c42-98c6-ff1f3baf88f0" -version = "0.13.2" +version = "0.13.3" [[deps.Cairo_jll]] deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "LZO_jll", "Libdl", "Pixman_jll", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"] -git-tree-sha1 = "009060c9a6168704143100f36ab08f06c2af4642" +git-tree-sha1 = "2ac646d71d0d24b44f3f8c84da8c9f4d70fb67df" uuid = "83423d85-b0ee-5818-9007-b63ccbeb887a" -version = "1.18.2+1" +version = "1.18.4+0" [[deps.ChainRulesCore]] deps = ["Compat", "LinearAlgebra"] @@ -288,16 +291,14 @@ version = "3.29.0" [[deps.ColorTypes]] deps = ["FixedPointNumbers", "Random"] -git-tree-sha1 = "c7acce7a7e1078a20a285211dd73cd3941a871d6" +git-tree-sha1 = "67e11ee83a43eb71ddc950302c53bf33f0690dfe" uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" -version = "0.12.0" +version = "0.12.1" +weakdeps = ["StyledStrings"] [deps.ColorTypes.extensions] StyledStringsExt = "StyledStrings" - [deps.ColorTypes.weakdeps] - StyledStrings = "f489334b-da3d-4c2e-b8f0-e476e12c162b" - [[deps.ColorVectorSpace]] deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "Requires", "Statistics", "TensorCore"] git-tree-sha1 = "8b3b6f87ce8f65a2b4f857528fd8d70086cd72b1" @@ -426,9 +427,9 @@ version = "1.16.0" [[deps.DataStructures]] deps = ["Compat", "InteractiveUtils", "OrderedCollections"] -git-tree-sha1 = "1d0a14036acb104d9e89698bd408f63ab58cdc82" +git-tree-sha1 = "4e1fe97fdaed23e9dc21d4d664bea76b65fc50a0" uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" -version = "0.18.20" +version = "0.18.22" [[deps.DataValueInterfaces]] git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" @@ -438,6 +439,7 @@ version = "1.0.0" [[deps.Dates]] deps = ["Printf"] uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" +version = "1.11.0" [[deps.DelaunayTriangulation]] deps = ["AdaptivePredicates", "EnumX", "ExactPredicates", "Random"] @@ -447,9 +449,9 @@ version = "1.6.4" [[deps.DiffEqBase]] deps = ["ArrayInterface", "ConcreteStructs", "DataStructures", "DocStringExtensions", "EnumX", "EnzymeCore", "FastBroadcast", "FastClosures", "FastPower", "FunctionWrappers", "FunctionWrappersWrappers", "LinearAlgebra", "Logging", "Markdown", "MuladdMacro", "Parameters", "PrecompileTools", "Printf", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "SciMLStructures", "Setfield", "Static", "StaticArraysCore", "Statistics", "TruncatedStacktraces"] -git-tree-sha1 = "b68847ddc7b8f3c77a84521b0fd50375274a380b" +git-tree-sha1 = "e384a2cf3bb402e6dc66b1503ade22c7c1471c4d" uuid = "2b5f629d-d688-5b77-993f-72d75c75574e" -version = "6.165.1" +version = "6.167.2" [deps.DiffEqBase.extensions] DiffEqBaseCUDAExt = "CUDA" @@ -485,9 +487,9 @@ version = "6.165.1" [[deps.DiffEqDevTools]] deps = ["DiffEqBase", "DiffEqNoiseProcess", "Distributed", "LinearAlgebra", "Logging", "NLsolve", "RecipesBase", "RecursiveArrayTools", "RootedTrees", "SciMLBase", "Statistics", "StructArrays"] -git-tree-sha1 = "0076cabfaad1167719005f956c2cc186490662a2" +git-tree-sha1 = "53aa030c02c786270542debbb577b53f6383796b" uuid = "f3b72e0c-5b89-59e1-b016-84e28bfd966d" -version = "2.46.0" +version = "2.48.0" [[deps.DiffEqNoiseProcess]] deps = ["DiffEqBase", "Distributions", "GPUArraysCore", "LinearAlgebra", "Markdown", "Optim", "PoissonRandom", "QuadGK", "Random", "Random123", "RandomNumbers", "RecipesBase", "RecursiveArrayTools", "ResettableStacks", "SciMLBase", "StaticArraysCore", "Statistics"] @@ -515,9 +517,9 @@ version = "1.15.1" [[deps.DifferentiationInterface]] deps = ["ADTypes", "LinearAlgebra"] -git-tree-sha1 = "3999a7934cc723719e79ff7db33160b141297444" +git-tree-sha1 = "70e500f6d5d50091d87859251de7b8cd060c1cce" uuid = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" -version = "0.6.44" +version = "0.6.50" [deps.DifferentiationInterface.extensions] DifferentiationInterfaceChainRulesCoreExt = "ChainRulesCore" @@ -575,6 +577,7 @@ weakdeps = ["ChainRulesCore", "SparseArrays"] [[deps.Distributed]] deps = ["Random", "Serialization", "Sockets"] uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" +version = "1.11.0" [[deps.Distributions]] deps = ["AliasTables", "FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns"] @@ -593,16 +596,15 @@ version = "0.25.118" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [[deps.DocStringExtensions]] -deps = ["LibGit2"] -git-tree-sha1 = "2fb1e02f2b635d0845df5d7c167fec4dd739b00d" +git-tree-sha1 = "e7b7e6f178525d17c720ab9c081e4ef04429f860" uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" -version = "0.9.3" +version = "0.9.4" [[deps.Documenter]] deps = ["ANSIColoredPrinters", "AbstractTrees", "Base64", "CodecZlib", "Dates", "DocStringExtensions", "Downloads", "Git", "IOCapture", "InteractiveUtils", "JSON", "LibGit2", "Logging", "Markdown", "MarkdownAST", "Pkg", "PrecompileTools", "REPL", "RegistryInstances", "SHA", "TOML", "Test", "Unicode"] -git-tree-sha1 = "30f520c66490393bf4e4ff2bb144db65f569d974" +git-tree-sha1 = "9d733459cea04dcf1c41522ec25c31576387be8a" uuid = "e30172f5-a6a5-5a46-863b-614d45cd2de4" -version = "1.9.0" +version = "1.10.1" [[deps.DocumenterTools]] deps = ["AbstractTrees", "Base64", "DocStringExtensions", "Documenter", "FileWatching", "Git", "Gumbo", "LibGit2", "OpenSSH_jll", "Sass"] @@ -638,15 +640,15 @@ uuid = "5ae413db-bbd1-5e63-b57d-d24a61df00f5" version = "2.2.4+0" [[deps.EnumX]] -git-tree-sha1 = "bdb1942cd4c45e3c678fd11569d5cccd80976237" +git-tree-sha1 = "bddad79635af6aec424f53ed8aad5d7555dc6f00" uuid = "4e289a0a-7415-4d19-859d-a7e5c4648b56" -version = "1.0.4" +version = "1.0.5" [[deps.Enzyme]] deps = ["CEnum", "EnzymeCore", "Enzyme_jll", "GPUCompiler", "LLVM", "Libdl", "LinearAlgebra", "ObjectFile", "PrecompileTools", "Preferences", "Printf", "Random", "SparseArrays"] -git-tree-sha1 = "dd01733a63f664890bbd687adca1d2cd0a3dc87b" +git-tree-sha1 = "59c1db6e150d55f2df6a1383759931bf8571c6b8" uuid = "7da242da-08ed-463a-9acd-ee780be4f1d9" -version = "0.13.32" +version = "0.13.35" [deps.Enzyme.extensions] EnzymeBFloat16sExt = "BFloat16s" @@ -675,9 +677,9 @@ weakdeps = ["Adapt"] [[deps.Enzyme_jll]] deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl", "TOML"] -git-tree-sha1 = "b81b0143399acd84a2ed2a1fa0b4ab55e25ee625" +git-tree-sha1 = "c29af735ddb2381732cdf5dd72fc32069315619d" uuid = "7cc45869-7501-5eee-bdea-0790c847d4ef" -version = "0.0.172+0" +version = "0.0.173+0" [[deps.ExactPredicates]] deps = ["IntervalArithmetic", "Random", "StaticArrays"] @@ -725,10 +727,10 @@ uuid = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341" version = "1.8.1" [[deps.FFTW_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "4d81ed14783ec49ce9f2e168208a12ce1815aa25" +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "6d6219a004b8cf1e0b4dbe27a2860b8e04eba0be" uuid = "f5851436-0d7a-5f13-b9de-f02708fd171a" -version = "3.3.10+3" +version = "3.3.11+0" [[deps.FastBroadcast]] deps = ["ArrayInterface", "LinearAlgebra", "Polyester", "Static", "StaticArrayInterface", "StrideArraysCore"] @@ -748,9 +750,9 @@ uuid = "29a986be-02c6-4525-aec4-84b980013641" version = "2.0.4" [[deps.FastPower]] -git-tree-sha1 = "58c3431137131577a7c379d00fea00be524338fb" +git-tree-sha1 = "df32f07f373f06260cd6af5371385b5ef85dd762" uuid = "a4df4552-cc26-4903-aec0-212e50a0e84b" -version = "1.1.1" +version = "1.1.2" [deps.FastPower.extensions] FastPowerEnzymeExt = "Enzyme" @@ -797,6 +799,7 @@ weakdeps = ["Mmap", "Test"] [[deps.FileWatching]] uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" +version = "1.11.0" [[deps.FillArrays]] deps = ["LinearAlgebra"] @@ -836,9 +839,9 @@ version = "0.8.5" [[deps.Fontconfig_jll]] deps = ["Artifacts", "Bzip2_jll", "Expat_jll", "FreeType2_jll", "JLLWrappers", "Libdl", "Libuuid_jll", "Zlib_jll"] -git-tree-sha1 = "21fac3c77d7b5a9fc03b0ec503aa1a6392c34d2b" +git-tree-sha1 = "301b5d5d731a0654825f1f2e906990f7141a106b" uuid = "a3f928ae-7b40-5064-980b-68af3947d34b" -version = "2.15.0+0" +version = "2.16.0+0" [[deps.Format]] git-tree-sha1 = "9c68794ef81b08086aeb32eeaf33531668d5f5fc" @@ -863,9 +866,9 @@ version = "4.1.1" [[deps.FreeType2_jll]] deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Zlib_jll"] -git-tree-sha1 = "786e968a8d2fb167f2e4880baba62e0e26bd8e4e" +git-tree-sha1 = "2c5512e11c791d1baed2049c5652441b28fc6a31" uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7" -version = "2.13.3+1" +version = "2.13.4+0" [[deps.FreeTypeAbstraction]] deps = ["ColorVectorSpace", "Colors", "FreeType", "GeometryBasics"] @@ -875,9 +878,9 @@ version = "0.10.6" [[deps.FriBidi_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "846f7026a9decf3679419122b49f8a1fdb48d2d5" +git-tree-sha1 = "7a214fdac5ed5f59a22c2d9a885a16da1c74bbc7" uuid = "559328eb-81f9-559d-9380-de523a88c83c" -version = "1.0.16+0" +version = "1.0.17+0" [[deps.FunctionWrappers]] git-tree-sha1 = "d62485945ce5ae9c0c48f124a84998d755bae00e" @@ -893,6 +896,7 @@ version = "0.1.3" [[deps.Future]] deps = ["Random"] uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" +version = "1.11.0" [[deps.GPUArraysCore]] deps = ["Adapt"] @@ -902,9 +906,9 @@ version = "0.2.0" [[deps.GPUCompiler]] deps = ["ExprTools", "InteractiveUtils", "LLVM", "Libdl", "Logging", "PrecompileTools", "Preferences", "Scratch", "Serialization", "TOML", "TimerOutputs", "UUIDs"] -git-tree-sha1 = "199f213e40a7982e9138bc9edc3299419d510390" +git-tree-sha1 = "b08c164134dd0dbc76ff54e45e016cf7f30e16a4" uuid = "61eb1bfa-7361-4325-ad38-22787b887f55" -version = "1.2.0" +version = "1.3.2" [[deps.GeoFormatTypes]] git-tree-sha1 = "8e233d5167e63d708d41f87597433f59a0f213fe" @@ -919,9 +923,9 @@ version = "1.4.1" [[deps.GeometryBasics]] deps = ["EarCut_jll", "Extents", "GeoInterface", "IterTools", "LinearAlgebra", "PrecompileTools", "Random", "StaticArrays"] -git-tree-sha1 = "3ba0e2818cc2ff79a5989d4dca4bc63120a98bd9" +git-tree-sha1 = "65e3f5c519c3ec6a4c59f4c3ba21b6ff3add95b0" uuid = "5c1252a2-5f33-56bf-86c9-59e7332b4326" -version = "0.5.5" +version = "0.5.7" [[deps.Gettext_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "XML2_jll"] @@ -943,9 +947,9 @@ version = "1.3.1" [[deps.Git_jll]] deps = ["Artifacts", "Expat_jll", "JLLWrappers", "LibCURL_jll", "Libdl", "Libiconv_jll", "OpenSSL_jll", "PCRE2_jll", "Zlib_jll"] -git-tree-sha1 = "399f4a308c804b446ae4c91eeafadb2fe2c54ff9" +git-tree-sha1 = "2f6d6f7e6d6de361865d4394b802c02fc944fc7c" uuid = "f8c6e375-362e-5223-8a59-34ff63f689eb" -version = "2.47.1+0" +version = "2.49.0+0" [[deps.Glib_jll]] deps = ["Artifacts", "Gettext_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Zlib_jll"] @@ -960,16 +964,16 @@ uuid = "a2bd30eb-e257-5431-a919-1863eab51364" version = "1.1.3" [[deps.Graphite2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "01979f9b37367603e2848ea225918a3b3861b606" +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "8a6dbda1fd736d60cc477d99f2e7a042acfa46e8" uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472" -version = "1.3.14+1" +version = "1.3.15+0" [[deps.Graphs]] deps = ["ArnoldiMethod", "Compat", "DataStructures", "Distributed", "Inflate", "LinearAlgebra", "Random", "SharedArrays", "SimpleTraits", "SparseArrays", "Statistics"] -git-tree-sha1 = "1dc470db8b1131cfc7fb4c115de89fe391b9e780" +git-tree-sha1 = "3169fd3440a02f35e549728b0890904cfd4ae58a" uuid = "86223c79-3864-5bf0-83f7-82e725a168b6" -version = "1.12.0" +version = "1.12.1" [[deps.GridLayoutBase]] deps = ["GeometryBasics", "InteractiveUtils", "Observables"] @@ -1031,10 +1035,10 @@ uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a" version = "0.3.28" [[deps.IJulia]] -deps = ["Base64", "Conda", "Dates", "InteractiveUtils", "JSON", "Libdl", "Logging", "Markdown", "MbedTLS", "Pkg", "Printf", "REPL", "Random", "SoftGlobalScope", "Test", "UUIDs", "ZMQ"] -git-tree-sha1 = "1b1299f7d6617291f3d260e9f5b0250afdaac8c0" +deps = ["Base64", "Conda", "Dates", "InteractiveUtils", "JSON", "Logging", "Markdown", "MbedTLS", "Pkg", "Printf", "REPL", "Random", "SoftGlobalScope", "UUIDs", "ZMQ"] +git-tree-sha1 = "be30be76e25b0aff2c9a85930ed3ac34c5f10c83" uuid = "7073ff75-c697-5162-941a-fcdaad2a7d2a" -version = "1.26.0" +version = "1.27.0" [[deps.IOCapture]] deps = ["Logging", "Random"] @@ -1113,6 +1117,7 @@ version = "2025.0.4+0" [[deps.InteractiveUtils]] deps = ["Markdown"] uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" +version = "1.11.0" [[deps.Interpolations]] deps = ["Adapt", "AxisAlgorithms", "ChainRulesCore", "LinearAlgebra", "OffsetArrays", "Random", "Ratios", "Requires", "SharedArrays", "SparseArrays", "StaticArrays", "WoodburyMatrices"] @@ -1126,9 +1131,9 @@ weakdeps = ["Unitful"] [[deps.IntervalArithmetic]] deps = ["CRlibm_jll", "LinearAlgebra", "MacroTools", "OpenBLASConsistentFPCSR_jll", "RoundingEmulator"] -git-tree-sha1 = "7b3603d3a5c52bcb18de8e46fa62e4176055f31e" +git-tree-sha1 = "5aad168b75fc3b6b25e99feb1e6e3168d41e4c08" uuid = "d1acc4aa-44c8-5952-acd4-ba5d80a2a253" -version = "0.22.25" +version = "0.22.28" weakdeps = ["DiffRules", "ForwardDiff", "IntervalSets", "RecipesBase"] [deps.IntervalArithmetic.extensions] @@ -1199,9 +1204,9 @@ version = "0.2.1" [[deps.JpegTurbo]] deps = ["CEnum", "FileIO", "ImageCore", "JpegTurbo_jll", "TOML"] -git-tree-sha1 = "fa6d0bcff8583bac20f1ffa708c3913ca605c611" +git-tree-sha1 = "9496de8fb52c224a2e3f9ff403947674517317d9" uuid = "b835a17e-a41a-41e7-81f0-2f016b05efe0" -version = "0.1.5" +version = "0.1.6" [[deps.JpegTurbo_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -1276,9 +1281,9 @@ version = "1.4.0" [[deps.Latexify]] deps = ["Format", "InteractiveUtils", "LaTeXStrings", "MacroTools", "Markdown", "OrderedCollections", "Requires"] -git-tree-sha1 = "cd714447457c660382fe634710fb56eb255ee42e" +git-tree-sha1 = "cd10d2cc78d34c0e2a3a36420ab607b611debfbb" uuid = "23fbe1c1-3f47-55db-b15f-69d7ec21a316" -version = "0.16.6" +version = "0.16.7" [deps.Latexify.extensions] DataFramesExt = "DataFrames" @@ -1322,6 +1327,7 @@ version = "2.6.1" [[deps.LazyArtifacts]] deps = ["Artifacts", "Pkg"] uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" +version = "1.11.0" [[deps.LazyModules]] git-tree-sha1 = "a560dd966b386ac9ae60bdd3a3d3a326062d3c3e" @@ -1336,16 +1342,17 @@ version = "0.6.4" [[deps.LibCURL_jll]] deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" -version = "8.4.0+0" +version = "8.6.0+0" [[deps.LibGit2]] deps = ["Base64", "LibGit2_jll", "NetworkOptions", "Printf", "SHA"] uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" +version = "1.11.0" [[deps.LibGit2_jll]] deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll"] uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5" -version = "1.6.4+0" +version = "1.7.2+0" [[deps.LibSSH2_jll]] deps = ["Artifacts", "Libdl", "MbedTLS_jll"] @@ -1354,6 +1361,7 @@ version = "1.11.0+1" [[deps.Libdl]] uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" +version = "1.11.0" [[deps.Libffi_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -1363,9 +1371,9 @@ version = "3.2.2+2" [[deps.Libgcrypt_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgpg_error_jll"] -git-tree-sha1 = "8be878062e0ffa2c3f67bb58a595375eda5de80b" +git-tree-sha1 = "d77592fa54ad343c5043b6f38a03f1a3c3959ffe" uuid = "d4300ac3-e22c-5743-9152-c294e39db1e4" -version = "1.11.0+0" +version = "1.11.1+0" [[deps.Libglvnd_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll", "Xorg_libXext_jll"] @@ -1387,9 +1395,9 @@ version = "1.18.0+0" [[deps.Libmount_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "89211ea35d9df5831fca5d33552c02bd33878419" +git-tree-sha1 = "a31572773ac1b745e0343fe5e2c8ddda7a37e997" uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9" -version = "2.40.3+0" +version = "2.41.0+0" [[deps.Libtiff_jll]] deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "LERC_jll", "Libdl", "XZ_jll", "Zlib_jll", "Zstd_jll"] @@ -1399,9 +1407,9 @@ version = "4.7.1+0" [[deps.Libuuid_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "e888ad02ce716b319e6bdb985d2ef300e7089889" +git-tree-sha1 = "321ccef73a96ba828cd51f2ab5b9f917fa73945a" uuid = "38a345b3-de98-5d2b-a5d3-14cd9215e700" -version = "2.40.3+0" +version = "2.41.0+0" [[deps.LineSearch]] deps = ["ADTypes", "CommonSolve", "ConcreteStructs", "FastClosures", "LinearAlgebra", "MaybeInplace", "SciMLBase", "SciMLJacobianOperators", "StaticArraysCore"] @@ -1422,12 +1430,13 @@ version = "7.3.0" [[deps.LinearAlgebra]] deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" +version = "1.11.0" [[deps.LinearSolve]] deps = ["ArrayInterface", "ChainRulesCore", "ConcreteStructs", "DocStringExtensions", "EnumX", "FastLapackInterface", "GPUArraysCore", "InteractiveUtils", "KLU", "Krylov", "LazyArrays", "Libdl", "LinearAlgebra", "MKL_jll", "Markdown", "PrecompileTools", "Preferences", "RecursiveFactorization", "Reexport", "SciMLBase", "SciMLOperators", "Setfield", "SparseArrays", "Sparspak", "StaticArraysCore", "UnPack"] -git-tree-sha1 = "5ce16a2ba4acab3be950c0ccda011a10ae05ba31" +git-tree-sha1 = "f604ad2fbc9470b97404f63d7bc7b3c4762f7bfb" uuid = "7ed4a6bd-45f5-4d41-b270-4a48e9bafcae" -version = "2.39.0" +version = "2.39.1" [deps.LinearSolve.extensions] LinearSolveBandedMatricesExt = "BandedMatrices" @@ -1477,6 +1486,7 @@ version = "0.3.29" [[deps.Logging]] uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" +version = "1.11.0" [[deps.LoggingExtras]] deps = ["Dates", "Logging"] @@ -1486,9 +1496,9 @@ version = "1.1.0" [[deps.LoopVectorization]] deps = ["ArrayInterface", "CPUSummary", "CloseOpenIntervals", "DocStringExtensions", "HostCPUFeatures", "IfElse", "LayoutPointers", "LinearAlgebra", "OffsetArrays", "PolyesterWeave", "PrecompileTools", "SIMDTypes", "SLEEFPirates", "Static", "StaticArrayInterface", "ThreadingUtilities", "UnPack", "VectorizationBase"] -git-tree-sha1 = "8084c25a250e00ae427a379a5b607e7aed96a2dd" +git-tree-sha1 = "e5afce7eaf5b5ca0d444bcb4dc4fd78c54cbbac0" uuid = "bdcacae8-1622-11e9-2a5c-532679323890" -version = "0.12.171" +version = "0.12.172" weakdeps = ["ChainRulesCore", "ForwardDiff", "SpecialFunctions"] [deps.LoopVectorization.extensions] @@ -1546,15 +1556,15 @@ version = "0.5.15" [[deps.Makie]] deps = ["Animations", "Base64", "CRC32c", "ColorBrewer", "ColorSchemes", "ColorTypes", "Colors", "Contour", "Dates", "DelaunayTriangulation", "Distributions", "DocStringExtensions", "Downloads", "FFMPEG_jll", "FileIO", "FilePaths", "FixedPointNumbers", "Format", "FreeType", "FreeTypeAbstraction", "GeometryBasics", "GridLayoutBase", "ImageBase", "ImageIO", "InteractiveUtils", "Interpolations", "IntervalSets", "InverseFunctions", "Isoband", "KernelDensity", "LaTeXStrings", "LinearAlgebra", "MacroTools", "MakieCore", "Markdown", "MathTeXEngine", "Observables", "OffsetArrays", "PNGFiles", "Packing", "PlotUtils", "PolygonOps", "PrecompileTools", "Printf", "REPL", "Random", "RelocatableFolders", "Scratch", "ShaderAbstractions", "Showoff", "SignedDistanceFields", "SparseArrays", "Statistics", "StatsBase", "StatsFuns", "StructArrays", "TriplotBase", "UnicodeFun", "Unitful"] -git-tree-sha1 = "e64b545d25e05a609521bfc36724baa072bfd31a" +git-tree-sha1 = "6c286ee413da382fd2734992a08cfdb4e13f8acf" uuid = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a" -version = "0.22.2" +version = "0.22.3" [[deps.MakieCore]] deps = ["ColorTypes", "GeometryBasics", "IntervalSets", "Observables"] -git-tree-sha1 = "605d6e8f2b7eba7f5bc6a16d297475075d5ea775" +git-tree-sha1 = "903ef1d9d326ebc4a9e6cf24f22194d8da022b50" uuid = "20f20a25-4f0e-4fdf-b5d1-57303727442b" -version = "0.9.1" +version = "0.9.2" [[deps.ManualMemory]] git-tree-sha1 = "bcaef4fc7a0cfe2cba636d84cda54b5e4e4ca3cd" @@ -1569,6 +1579,7 @@ version = "0.4.2" [[deps.Markdown]] deps = ["Base64"] uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" +version = "1.11.0" [[deps.MarkdownAST]] deps = ["AbstractTrees", "Markdown"] @@ -1601,7 +1612,7 @@ version = "1.1.9" [[deps.MbedTLS_jll]] deps = ["Artifacts", "Libdl"] uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" -version = "2.28.2+1" +version = "2.28.6+0" [[deps.MicrosoftMPI_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -1617,6 +1628,7 @@ version = "1.2.0" [[deps.Mmap]] uuid = "a63ad114-7e13-5084-954f-fe012c677804" +version = "1.11.0" [[deps.MosaicViews]] deps = ["MappedArrays", "OffsetArrays", "PaddedViews", "StackViews"] @@ -1632,7 +1644,7 @@ version = "0.3.5" [[deps.MozillaCACerts_jll]] uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -version = "2023.1.10" +version = "2023.12.12" [[deps.MuladdMacro]] git-tree-sha1 = "cac9cc5499c25554cba55cd3c30543cff5ca4fab" @@ -1658,10 +1670,10 @@ uuid = "d8a4904e-b15c-11e9-3269-09a3773c0cb0" version = "1.6.4" [[deps.NLSolversBase]] -deps = ["DiffResults", "Distributed", "FiniteDiff", "ForwardDiff"] -git-tree-sha1 = "a0b464d183da839699f4c79e7606d9d186ec172c" +deps = ["ADTypes", "DifferentiationInterface", "Distributed", "FiniteDiff", "ForwardDiff"] +git-tree-sha1 = "b14c7be6046e7d48e9063a0053f95ee0fc954176" uuid = "d41bc354-129a-5804-8e4c-c37616107c6c" -version = "7.8.3" +version = "7.9.1" [[deps.NLsolve]] deps = ["Distances", "LineSearches", "LinearAlgebra", "NLSolversBase", "Printf", "Reexport"] @@ -1671,9 +1683,9 @@ version = "4.5.1" [[deps.NaNMath]] deps = ["OpenLibm_jll"] -git-tree-sha1 = "cc0a5deefdb12ab3a096f00a6d42133af4560d71" +git-tree-sha1 = "9b8215b1ee9e78a293f99797cd31375471b2bcae" uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" -version = "1.1.2" +version = "1.1.3" [[deps.Netpbm]] deps = ["FileIO", "ImageCore", "ImageMetadata"] @@ -1693,9 +1705,9 @@ version = "0.1.2" [[deps.NonlinearSolve]] deps = ["ADTypes", "ArrayInterface", "BracketingNonlinearSolve", "CommonSolve", "ConcreteStructs", "DiffEqBase", "DifferentiationInterface", "FastClosures", "FiniteDiff", "ForwardDiff", "LineSearch", "LinearAlgebra", "LinearSolve", "NonlinearSolveBase", "NonlinearSolveFirstOrder", "NonlinearSolveQuasiNewton", "NonlinearSolveSpectralMethods", "PrecompileTools", "Preferences", "Reexport", "SciMLBase", "SimpleNonlinearSolve", "SparseArrays", "SparseMatrixColorings", "StaticArraysCore", "SymbolicIndexingInterface"] -git-tree-sha1 = "95def4e218a6832d158feafb9963be0337ea432c" +git-tree-sha1 = "7ae7322d658544bd8f6b24a1a0374a6b4ac1fc7e" uuid = "8913a72c-1f9b-4ce2-8d82-65094dcecaec" -version = "4.4.0" +version = "4.5.1" [deps.NonlinearSolve.extensions] NonlinearSolveFastLevenbergMarquardtExt = "FastLevenbergMarquardt" @@ -1725,9 +1737,9 @@ version = "4.4.0" [[deps.NonlinearSolveBase]] deps = ["ADTypes", "Adapt", "ArrayInterface", "CommonSolve", "Compat", "ConcreteStructs", "DifferentiationInterface", "EnzymeCore", "FastClosures", "LinearAlgebra", "Markdown", "MaybeInplace", "Preferences", "Printf", "RecursiveArrayTools", "SciMLBase", "SciMLJacobianOperators", "SciMLOperators", "StaticArraysCore", "SymbolicIndexingInterface", "TimerOutputs"] -git-tree-sha1 = "8a2437b5ead050301b6a6258f226e5137e511000" +git-tree-sha1 = "f8ece81557f7e42879f017fa089e5283988a5f67" uuid = "be0214bd-f91f-a760-ac4e-3421ce2b2da0" -version = "1.5.0" +version = "1.5.2" [deps.NonlinearSolveBase.extensions] NonlinearSolveBaseBandedMatricesExt = "BandedMatrices" @@ -1749,15 +1761,15 @@ version = "1.5.0" [[deps.NonlinearSolveFirstOrder]] deps = ["ADTypes", "ArrayInterface", "CommonSolve", "ConcreteStructs", "DiffEqBase", "FiniteDiff", "ForwardDiff", "LineSearch", "LinearAlgebra", "LinearSolve", "MaybeInplace", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase", "SciMLJacobianOperators", "Setfield", "StaticArraysCore"] -git-tree-sha1 = "aade7ab02ee4c80ec30dc8a2874fc67155c935f1" +git-tree-sha1 = "53e9df7c663c5b9ee5443ce4591f145143095c23" uuid = "5959db7a-ea39-4486-b5fe-2dd0bf03d60d" -version = "1.3.0" +version = "1.3.1" [[deps.NonlinearSolveQuasiNewton]] deps = ["ArrayInterface", "CommonSolve", "ConcreteStructs", "DiffEqBase", "LinearAlgebra", "LinearSolve", "MaybeInplace", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase", "SciMLOperators", "StaticArraysCore"] -git-tree-sha1 = "44a132cb32aeafcb35a6238fd91a2f3f8ff5c5b0" +git-tree-sha1 = "61341153cec9ab307b6bae09f2661ebbd34cc1f9" uuid = "9a2c21bd-3a47-402d-9113-8faf9a0ee114" -version = "1.2.0" +version = "1.2.1" weakdeps = ["ForwardDiff"] [deps.NonlinearSolveQuasiNewton.extensions] @@ -1765,9 +1777,9 @@ weakdeps = ["ForwardDiff"] [[deps.NonlinearSolveSpectralMethods]] deps = ["CommonSolve", "ConcreteStructs", "DiffEqBase", "LineSearch", "MaybeInplace", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase"] -git-tree-sha1 = "f28b1ab17b5f15eb2b174eaf8813cf17f0b3e6c0" +git-tree-sha1 = "7e94679f6989398b90a4d665f6b0d16c0263a451" uuid = "26075421-4e9a-44e1-8bd1-420ed7ad02b2" -version = "1.1.0" +version = "1.1.1" weakdeps = ["ForwardDiff"] [deps.NonlinearSolveSpectralMethods.extensions] @@ -1775,9 +1787,9 @@ weakdeps = ["ForwardDiff"] [[deps.ObjectFile]] deps = ["Reexport", "StructIO"] -git-tree-sha1 = "dfcc26739b1ffa3ab51fb16f01ba7eb144f7bc50" +git-tree-sha1 = "09b1fe6ff16e6587fa240c165347474322e77cf1" uuid = "d8793406-e978-5875-9003-1fc021f44a92" -version = "0.4.3" +version = "0.4.4" [[deps.Observables]] git-tree-sha1 = "7438a59546cf62428fc9d1bc94729146d37a7225" @@ -1785,9 +1797,9 @@ uuid = "510215fc-4207-5dde-b226-833fc4488ee2" version = "0.5.5" [[deps.OffsetArrays]] -git-tree-sha1 = "5e1897147d1ff8d98883cda2be2187dcf57d8f0c" +git-tree-sha1 = "a414039192a155fb38c4599a60110f0018c6ec82" uuid = "6fe1bfb0-de20-5000-8ca7-80f57d26f881" -version = "1.15.0" +version = "1.16.0" weakdeps = ["Adapt"] [deps.OffsetArrays.extensions] @@ -1801,9 +1813,9 @@ version = "1.3.5+1" [[deps.OpenBLAS32_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl"] -git-tree-sha1 = "6065c4cff8fee6c6770b277af45d5082baacdba1" +git-tree-sha1 = "ece4587683695fe4c5f20e990da0ed7e83c351e7" uuid = "656ef2d0-ae68-5445-9ca0-591084a874a2" -version = "0.3.24+0" +version = "0.3.29+0" [[deps.OpenBLASConsistentFPCSR_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl"] @@ -1814,7 +1826,7 @@ version = "0.3.29+0" [[deps.OpenBLAS_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" -version = "0.3.23+4" +version = "0.3.27+1" [[deps.OpenEXR]] deps = ["Colors", "FileIO", "OpenEXR_jll"] @@ -1835,9 +1847,9 @@ version = "0.8.1+4" [[deps.OpenMPI_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "Hwloc_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "MPIPreferences", "TOML", "Zlib_jll"] -git-tree-sha1 = "da913f03f17b449951e0461da960229d4a3d1a8c" +git-tree-sha1 = "047b66eb62f3cae59ed260ebb9075a32a04350f1" uuid = "fe0851c0-eecd-5654-98d4-656369965a5c" -version = "5.0.7+1" +version = "5.0.7+2" [[deps.OpenSSH_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "OpenSSL_jll", "Zlib_jll"] @@ -1864,10 +1876,10 @@ uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" version = "0.5.6+0" [[deps.Optim]] -deps = ["Compat", "FillArrays", "ForwardDiff", "LineSearches", "LinearAlgebra", "NLSolversBase", "NaNMath", "Parameters", "PositiveFactorizations", "Printf", "SparseArrays", "StatsBase"] -git-tree-sha1 = "c1f51f704f689f87f28b33836fd460ecf9b34583" +deps = ["Compat", "EnumX", "FillArrays", "ForwardDiff", "LineSearches", "LinearAlgebra", "NLSolversBase", "NaNMath", "PositiveFactorizations", "Printf", "SparseArrays", "StatsBase"] +git-tree-sha1 = "31b3b1b8e83ef9f1d50d74f1dd5f19a37a304a1f" uuid = "429524aa-4258-5aef-a3af-852621145aeb" -version = "1.11.0" +version = "1.12.0" [deps.Optim.extensions] OptimMOIExt = "MathOptInterface" @@ -1893,9 +1905,9 @@ version = "10.42.0+1" [[deps.PDMats]] deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "966b85253e959ea89c53a9abebbf2e964fbf593b" +git-tree-sha1 = "48566789a6d5f6492688279e22445002d171cf76" uuid = "90014a1f-27ba-587c-ab20-58faa44d9150" -version = "0.11.32" +version = "0.11.33" [[deps.PETSc]] deps = ["Libdl", "LinearAlgebra", "MPI", "MPIPreferences", "PETSc_jll", "Pkg", "SparseArrays"] @@ -1953,14 +1965,18 @@ version = "2.8.1" [[deps.Pixman_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LLVMOpenMP_jll", "Libdl"] -git-tree-sha1 = "35621f10a7531bc8fa58f74610b1bfb70a3cfc6b" +git-tree-sha1 = "db76b1ecd5e9715f3d043cec13b2ec93ce015d53" uuid = "30392449-352a-5448-841d-b1acce4e97dc" -version = "0.43.4+0" +version = "0.44.2+0" [[deps.Pkg]] -deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] +deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "Random", "SHA", "TOML", "Tar", "UUIDs", "p7zip_jll"] uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" -version = "1.10.0" +version = "1.11.0" +weakdeps = ["REPL"] + + [deps.Pkg.extensions] + REPLExt = "REPL" [[deps.PkgVersion]] deps = ["Pkg"] @@ -1988,9 +2004,9 @@ version = "0.7.16" [[deps.PolyesterForwardDiff]] deps = ["ForwardDiff", "Polyester"] -git-tree-sha1 = "5cd736337b9dc0de9bfe894f067f300274fceab1" +git-tree-sha1 = "72365df717fae8dcbbb02d8704ebeb0f2dbf2e39" uuid = "98d1487c-24ca-40b6-b7ab-df2af84e126b" -version = "0.1.2" +version = "0.1.3" [[deps.PolyesterWeave]] deps = ["BitTwiddlingConvenienceFunctions", "CPUSummary", "IfElse", "Static", "ThreadingUtilities"] @@ -2029,23 +2045,24 @@ version = "2.4.0" [[deps.Primes]] deps = ["IntegerMathUtils"] -git-tree-sha1 = "cb420f77dc474d23ee47ca8d14c90810cafe69e7" +git-tree-sha1 = "25cdd1d20cd005b52fc12cb6be3f75faaf59bb9b" uuid = "27ebfcd6-29c5-5fa9-bf4b-fb8fc14df3ae" -version = "0.5.6" +version = "0.5.7" [[deps.Printf]] deps = ["Unicode"] uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" +version = "1.11.0" [[deps.Profile]] -deps = ["Printf"] uuid = "9abbd945-dff8-562f-b5e8-e1ebf5ef1b79" +version = "1.11.0" [[deps.ProgressMeter]] deps = ["Distributed", "Printf"] -git-tree-sha1 = "8f6bc219586aef8baf0ff9a5fe16ee9c70cb65e4" +git-tree-sha1 = "13c5103482a8ed1536a54c08d0e742ae3dca2d42" uuid = "92933f4c-e287-5a05-a399-4b506db050ca" -version = "1.10.2" +version = "1.10.4" [[deps.PtrArrays]] git-tree-sha1 = "1d36ef11a9aaf1e8b74dacc6a731dd1de8fd493d" @@ -2069,12 +2086,14 @@ weakdeps = ["Enzyme"] QuadGKEnzymeExt = "Enzyme" [[deps.REPL]] -deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] +deps = ["InteractiveUtils", "Markdown", "Sockets", "StyledStrings", "Unicode"] uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" +version = "1.11.0" [[deps.Random]] deps = ["SHA"] uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" +version = "1.11.0" [[deps.Random123]] deps = ["Random", "RandomNumbers"] @@ -2111,9 +2130,9 @@ version = "1.3.4" [[deps.RecursiveArrayTools]] deps = ["Adapt", "ArrayInterface", "DocStringExtensions", "GPUArraysCore", "IteratorInterfaceExtensions", "LinearAlgebra", "RecipesBase", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "Tables"] -git-tree-sha1 = "35ac79a85c8086892258581d8b6df9cd8db5c91a" +git-tree-sha1 = "112c876cee36a5784df19098b55db2b238afc36a" uuid = "731186ca-8d62-57ce-b412-fbd966d074cd" -version = "3.31.1" +version = "3.31.2" [deps.RecursiveArrayTools.extensions] RecursiveArrayToolsFastBroadcastExt = "FastBroadcast" @@ -2242,9 +2261,9 @@ version = "0.2.0" [[deps.SciMLBase]] deps = ["ADTypes", "Accessors", "ArrayInterface", "CommonSolve", "ConstructionBase", "Distributed", "DocStringExtensions", "EnumX", "FunctionWrappersWrappers", "IteratorInterfaceExtensions", "LinearAlgebra", "Logging", "Markdown", "Moshi", "PrecompileTools", "Preferences", "Printf", "RecipesBase", "RecursiveArrayTools", "Reexport", "RuntimeGeneratedFunctions", "SciMLOperators", "SciMLStructures", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface"] -git-tree-sha1 = "c779c485f384cc824dac44ab1ef1440209027016" +git-tree-sha1 = "d1fea0667570b46bc984da28315519d1c42023f9" uuid = "0bca4576-84f4-4d90-8ffe-ffa030f20462" -version = "2.76.0" +version = "2.82.1" [deps.SciMLBase.extensions] SciMLBaseChainRulesCoreExt = "ChainRulesCore" @@ -2275,15 +2294,15 @@ version = "0.1.3" [[deps.SciMLJacobianOperators]] deps = ["ADTypes", "ArrayInterface", "ConcreteStructs", "ConstructionBase", "DifferentiationInterface", "FastClosures", "LinearAlgebra", "SciMLBase", "SciMLOperators"] -git-tree-sha1 = "f66048bb969e67bd7d1bdd03cd0b81219642bbd0" +git-tree-sha1 = "15634a7c06849c6871a3a2391346d48ef3ba0fbe" uuid = "19f34311-ddf3-4b8b-af20-060888a46c0e" -version = "0.1.1" +version = "0.1.2" [[deps.SciMLOperators]] deps = ["Accessors", "ArrayInterface", "DocStringExtensions", "LinearAlgebra", "MacroTools"] -git-tree-sha1 = "6149620767866d4b0f0f7028639b6e661b6a1e44" +git-tree-sha1 = "1c4b7f6c3e14e6de0af66e66b86d525cae10ecb4" uuid = "c0aeaf25-5076-4817-a8d5-81caf7dfa961" -version = "0.3.12" +version = "0.3.13" weakdeps = ["SparseArrays", "StaticArraysCore"] [deps.SciMLOperators.extensions] @@ -2304,6 +2323,7 @@ version = "1.2.1" [[deps.Serialization]] uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" +version = "1.11.0" [[deps.Setfield]] deps = ["ConstructionBase", "Future", "MacroTools", "StaticArraysCore"] @@ -2320,6 +2340,7 @@ version = "0.5.0" [[deps.SharedArrays]] deps = ["Distributed", "Mmap", "Random", "Serialization"] uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383" +version = "1.11.0" [[deps.Showoff]] deps = ["Dates", "Grisu"] @@ -2340,9 +2361,9 @@ version = "1.2.0" [[deps.SimpleNonlinearSolve]] deps = ["ADTypes", "ArrayInterface", "BracketingNonlinearSolve", "CommonSolve", "ConcreteStructs", "DifferentiationInterface", "FastClosures", "FiniteDiff", "ForwardDiff", "LineSearch", "LinearAlgebra", "MaybeInplace", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase", "Setfield", "StaticArraysCore"] -git-tree-sha1 = "a3868a6add9f5989d1f4bd21de0333ef89fb9d9f" +git-tree-sha1 = "a65e81385d9c45c6abe49d7676d71b07b5b6bbc1" uuid = "727e6d20-b764-4bd8-a329-72de5adea6c7" -version = "2.1.0" +version = "2.2.1" [deps.SimpleNonlinearSolve.extensions] SimpleNonlinearSolveChainRulesCoreExt = "ChainRulesCore" @@ -2370,6 +2391,7 @@ version = "0.1.3" [[deps.Sockets]] uuid = "6462fe0b-24de-5631-8697-dd941f90decc" +version = "1.11.0" [[deps.SoftGlobalScope]] deps = ["REPL"] @@ -2386,13 +2408,13 @@ version = "1.2.1" [[deps.SparseArrays]] deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" -version = "1.10.0" +version = "1.11.0" [[deps.SparseConnectivityTracer]] deps = ["ADTypes", "DocStringExtensions", "FillArrays", "LinearAlgebra", "Random", "SparseArrays"] -git-tree-sha1 = "e60ba2f27bf0c85cc20ac326a158182630032bb6" +git-tree-sha1 = "9603842a7a68464a066b5754e89fc7f810db8ae7" uuid = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" -version = "0.6.14" +version = "0.6.15" [deps.SparseConnectivityTracer.extensions] SparseConnectivityTracerDataInterpolationsExt = "DataInterpolations" @@ -2410,9 +2432,9 @@ version = "0.6.14" [[deps.SparseDiffTools]] deps = ["ADTypes", "Adapt", "ArrayInterface", "Compat", "DataStructures", "FiniteDiff", "ForwardDiff", "Graphs", "LinearAlgebra", "PackageExtensionCompat", "Random", "Reexport", "SciMLOperators", "Setfield", "SparseArrays", "StaticArrayInterface", "StaticArrays", "UnPack", "VertexSafeGraphs"] -git-tree-sha1 = "d79802152d958607f414f5447cb25e314db979c0" +git-tree-sha1 = "59bad850b1fc622051bf80a2be86c95b487e0243" uuid = "47a9eef4-7e08-11e9-0b38-333d64bd3804" -version = "2.23.1" +version = "2.24.0" [deps.SparseDiffTools.extensions] SparseDiffToolsEnzymeExt = "Enzyme" @@ -2429,15 +2451,19 @@ version = "2.23.1" Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" [[deps.SparseMatrixColorings]] -deps = ["ADTypes", "DataStructures", "DocStringExtensions", "LinearAlgebra", "Random", "SparseArrays"] -git-tree-sha1 = "e0ae9189392572abe85bc9fd4ce35e772b1e1e10" +deps = ["ADTypes", "DocStringExtensions", "LinearAlgebra", "Random", "SparseArrays"] +git-tree-sha1 = "3abb70c9055dd01344fe2992b7909928ab60c1c5" uuid = "0a514795-09f3-496d-8182-132a7b665d35" -version = "0.4.14" -weakdeps = ["Colors"] +version = "0.4.17" [deps.SparseMatrixColorings.extensions] + SparseMatrixColoringsCliqueTreesExt = "CliqueTrees" SparseMatrixColoringsColorsExt = "Colors" + [deps.SparseMatrixColorings.weakdeps] + CliqueTrees = "60701a23-6482-424a-84db-faee86b9b1f8" + Colors = "5ae59095-9a9b-59fe-a467-6f913c188581" + [[deps.Sparspak]] deps = ["Libdl", "LinearAlgebra", "Logging", "OffsetArrays", "Printf", "SparseArrays", "Test"] git-tree-sha1 = "342cf4b449c299d8d1ceaf00b7a49f4fbc7940e7" @@ -2506,9 +2532,14 @@ uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" version = "1.4.3" [[deps.Statistics]] -deps = ["LinearAlgebra", "SparseArrays"] +deps = ["LinearAlgebra"] +git-tree-sha1 = "ae3bb1eb3bba077cd276bc5cfc337cc65c3075c0" uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" -version = "1.10.0" +version = "1.11.1" +weakdeps = ["SparseArrays"] + + [deps.Statistics.extensions] + SparseArraysExt = ["SparseArrays"] [[deps.StatsAPI]] deps = ["LinearAlgebra"] @@ -2524,9 +2555,9 @@ version = "0.34.4" [[deps.StatsFuns]] deps = ["HypergeometricFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"] -git-tree-sha1 = "b423576adc27097764a90e163157bcfc9acf0f46" +git-tree-sha1 = "35b09e80be285516e52c9054792c884b9216ae3c" uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c" -version = "1.3.2" +version = "1.4.0" weakdeps = ["ChainRulesCore", "InverseFunctions"] [deps.StatsFuns.extensions] @@ -2553,9 +2584,9 @@ version = "0.4.1" [[deps.StructArrays]] deps = ["ConstructionBase", "DataAPI", "Tables"] -git-tree-sha1 = "5a3a31c41e15a1e042d60f2f4942adccba05d3c9" +git-tree-sha1 = "8ad2e38cbb812e29348719cc63580ec1dfeb9de4" uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" -version = "0.7.0" +version = "0.7.1" [deps.StructArrays.extensions] StructArraysAdaptExt = "Adapt" @@ -2577,6 +2608,10 @@ git-tree-sha1 = "c581be48ae1cbf83e899b14c07a807e1787512cc" uuid = "53d494c1-5632-5724-8f4c-31dff12d585f" version = "0.3.1" +[[deps.StyledStrings]] +uuid = "f489334b-da3d-4c2e-b8f0-e476e12c162b" +version = "1.11.0" + [[deps.SuiteSparse]] deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" @@ -2584,19 +2619,19 @@ uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" [[deps.SuiteSparse_jll]] deps = ["Artifacts", "Libdl", "libblastrampoline_jll"] uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" -version = "7.2.1+1" +version = "7.7.0+0" [[deps.Sundials]] deps = ["CEnum", "DataStructures", "DiffEqBase", "Libdl", "LinearAlgebra", "Logging", "PrecompileTools", "Reexport", "SciMLBase", "SparseArrays", "Sundials_jll"] -git-tree-sha1 = "56661ac133ea6df96fea8d6bb4eb18875b002206" +git-tree-sha1 = "c135b599cec3558be36eaf86ab1ce7e259ef9534" uuid = "c3572dad-4567-51f8-b174-8c6c989267f4" -version = "4.26.1" +version = "4.27.0" [[deps.Sundials_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "SuiteSparse_jll", "libblastrampoline_jll"] -git-tree-sha1 = "ba4d38faeb62de7ef47155ed321dce40a549c305" +git-tree-sha1 = "91db7ed92c66f81435fe880947171f1212936b14" uuid = "fb77eaff-e24c-56d4-86b1-d163f2edb164" -version = "5.2.2+0" +version = "5.2.3+0" [[deps.SymbolicIndexingInterface]] deps = ["Accessors", "ArrayInterface", "RuntimeGeneratedFunctions", "StaticArraysCore"] @@ -2612,9 +2647,9 @@ version = "0.2.2" [[deps.SymbolicUtils]] deps = ["AbstractTrees", "ArrayInterface", "Bijections", "ChainRulesCore", "Combinatorics", "ConstructionBase", "DataStructures", "DocStringExtensions", "DynamicPolynomials", "ExproniconLite", "LinearAlgebra", "MultivariatePolynomials", "NaNMath", "Setfield", "SparseArrays", "SpecialFunctions", "StaticArrays", "SymbolicIndexingInterface", "TaskLocalValues", "TermInterface", "TimerOutputs", "Unityper", "WeakValueDicts"] -git-tree-sha1 = "e2ddc57092cced7b05cb7bf848ab81181462ec5c" +git-tree-sha1 = "ca5929df933a8b7272bc7f01dcd14b2d976c56e2" uuid = "d1185830-fcd6-423d-90d6-eec64667417b" -version = "3.19.0" +version = "3.25.1" [deps.SymbolicUtils.extensions] SymbolicUtilsLabelledArraysExt = "LabelledArrays" @@ -2626,9 +2661,9 @@ version = "3.19.0" [[deps.Symbolics]] deps = ["ADTypes", "ArrayInterface", "Bijections", "CommonWorldInvalidations", "ConstructionBase", "DataStructures", "DiffRules", "Distributions", "DocStringExtensions", "DomainSets", "DynamicPolynomials", "LaTeXStrings", "Latexify", "Libdl", "LinearAlgebra", "LogExpFunctions", "MacroTools", "Markdown", "NaNMath", "OffsetArrays", "PrecompileTools", "Primes", "RecipesBase", "Reexport", "RuntimeGeneratedFunctions", "SciMLBase", "Setfield", "SparseArrays", "SpecialFunctions", "StaticArraysCore", "SymbolicIndexingInterface", "SymbolicLimits", "SymbolicUtils", "TermInterface"] -git-tree-sha1 = "326982e1f8a8214ff83cc427484acc858f975c74" +git-tree-sha1 = "12a14cf31a2b05acd548965c435d4b4e4884b4ad" uuid = "0c5d862f-8b57-4792-8d23-62f2024744c7" -version = "6.29.2" +version = "6.37.1" [deps.Symbolics.extensions] SymbolicsForwardDiffExt = "ForwardDiff" @@ -2687,12 +2722,13 @@ version = "2.0.0" [[deps.Test]] deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" +version = "1.11.0" [[deps.ThreadingUtilities]] deps = ["ManualMemory"] -git-tree-sha1 = "eda08f7e9818eb53661b3deb74e3159460dfbc27" +git-tree-sha1 = "18ad3613e129312fe67789a71720c3747e598a61" uuid = "8290d209-cae3-49c0-8002-c8c24d57dab5" -version = "0.5.2" +version = "0.5.3" [[deps.TiffImages]] deps = ["ColorTypes", "DataStructures", "DocStringExtensions", "FileIO", "FixedPointNumbers", "IndirectArrays", "Inflate", "Mmap", "OffsetArrays", "PkgVersion", "ProgressMeter", "SIMD", "UUIDs"] @@ -2735,13 +2771,14 @@ uuid = "781d530d-4396-4725-bb49-402e4bee1e77" version = "1.4.0" [[deps.URIs]] -git-tree-sha1 = "67db6cc7b3821e19ebe75791a9dd19c9b1188f2b" +git-tree-sha1 = "cbbebadbcc76c5ca1cc4b4f3b0614b3e603b5000" uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" -version = "1.5.1" +version = "1.5.2" [[deps.UUIDs]] deps = ["Random", "SHA"] uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" +version = "1.11.0" [[deps.UnPack]] git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b" @@ -2750,6 +2787,7 @@ version = "1.0.2" [[deps.Unicode]] uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" +version = "1.11.0" [[deps.UnicodeFun]] deps = ["REPL"] @@ -2822,15 +2860,15 @@ version = "2.13.6+1" [[deps.XSLT_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgcrypt_jll", "Libgpg_error_jll", "Libiconv_jll", "XML2_jll", "Zlib_jll"] -git-tree-sha1 = "7d1671acbe47ac88e981868a078bd6b4e27c5191" +git-tree-sha1 = "82df486bfc568c29de4a207f7566d6716db6377c" uuid = "aed1982a-8fda-507f-9586-7b0439959a61" -version = "1.1.42+0" +version = "1.1.43+0" [[deps.XZ_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "56c6604ec8b2d82cc4cfe01aa03b00426aac7e1f" +git-tree-sha1 = "fee71455b0aaa3440dfdd54a9a36ccef829be7d4" uuid = "ffd25f8a-64ca-5728-b0f7-c24cf3aae800" -version = "5.6.4+1" +version = "5.8.1+0" [[deps.Xorg_libX11_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxcb_jll", "Xorg_xtrans_jll"] @@ -2876,9 +2914,9 @@ version = "1.17.0+3" [[deps.Xorg_xtrans_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "6dba04dbfb72ae3ebe5418ba33d087ba8aa8cb00" +git-tree-sha1 = "a63799ff68005991f9d9491b6e95bd3478d783cb" uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10" -version = "1.5.1+0" +version = "1.6.0+0" [[deps.YAML]] deps = ["Base64", "Dates", "Printf", "StringEncodings"] @@ -2910,10 +2948,10 @@ uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" version = "1.5.7+1" [[deps.cminpack_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "4914f5bc10179ca652137b6cd27e1eb930a17a18" +deps = ["Artifacts", "JLLWrappers", "Libdl", "libblastrampoline_jll"] +git-tree-sha1 = "720469d4732c660ef6b38bf0449a2db0f5de2462" uuid = "b792d7bf-f512-5dba-8a02-6d8084434f1d" -version = "1.3.8+0" +version = "1.3.11+0" [[deps.isoband_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -2983,7 +3021,7 @@ version = "1.5.0+0" [[deps.nghttp2_jll]] deps = ["Artifacts", "Libdl"] uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" -version = "1.52.0+1" +version = "1.59.0+0" [[deps.oneTBB_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] diff --git a/benchmarks/NonlinearProblem/bruss.jmd b/benchmarks/NonlinearProblem/bruss.jmd index 793a22765..bbf09e91c 100644 --- a/benchmarks/NonlinearProblem/bruss.jmd +++ b/benchmarks/NonlinearProblem/bruss.jmd @@ -61,41 +61,38 @@ function init_brusselator_2d(xyd, N) return u end -function brusselator_2d_loop(du_, u_, p) - A, B, α, xyd_brusselator, N = p - δx = step(xyd_brusselator) - α = α / δx ^ 2 +function generate_brusselator_problem(N::Int; sparsity = nothing, kwargs...) + xyd_brusselator = range(0; stop = 1, length = N) - du = reshape(du_, N, N, 2) - u = reshape(u_, N, N, 2) + function brusselator_2d_loop(du_, u_, p) + A, B, α, δx = p + α = α / δx ^ 2 - # @inbounds - # @simd - for I in CartesianIndices((N, N)) - i, j = Tuple(I) - x, y = xyd_brusselator[I[1]], xyd_brusselator[I[2]] - ip1, im1 = limit(i + 1, N), limit(i - 1, N) - jp1, jm1 = limit(j + 1, N), limit(j - 1, N) - - du[i, j, 1] = α * (u[im1, j, 1] + u[ip1, j, 1] + u[i, jp1, 1] + u[i, jm1, 1] - - 4u[i, j, 1]) + - B + u[i, j, 1] ^ 2 * u[i, j, 2] - (A + 1) * u[i, j, 1] + - brusselator_f(x, y) - - du[i, j, 2] = α * (u[im1, j, 2] + u[ip1, j, 2] + u[i, jp1, 2] + u[i, jm1, 2] - - 4u[i, j, 2]) + - A * u[i, j, 1] - u[i, j, 1] ^ 2 * u[i, j, 2] - end - return nothing -end + du = reshape(du_, N, N, 2) + u = reshape(u_, N, N, 2) -function generate_brusselator_problem(N::Int; sparsity = nothing, kwargs...) - xyd_brusselator = range(0; stop = 1, length = N) + @inbounds @simd for I in CartesianIndices((N, N)) + i, j = Tuple(I) + x, y = xyd_brusselator[I[1]], xyd_brusselator[I[2]] + ip1, im1 = limit(i + 1, N), limit(i - 1, N) + jp1, jm1 = limit(j + 1, N), limit(j - 1, N) + + du[i, j, 1] = α * (u[im1, j, 1] + u[ip1, j, 1] + u[i, jp1, 1] + u[i, jm1, 1] - + 4u[i, j, 1]) + + B + u[i, j, 1] ^ 2 * u[i, j, 2] - (A + 1) * u[i, j, 1] + + brusselator_f(x, y) + + du[i, j, 2] = α * (u[im1, j, 2] + u[ip1, j, 2] + u[i, jp1, 2] + u[i, jm1, 2] - + 4u[i, j, 2]) + + A * u[i, j, 1] - u[i, j, 1] ^ 2 * u[i, j, 2] + end + return nothing + end return NonlinearProblem( NonlinearFunction(brusselator_2d_loop; sparsity), vec(init_brusselator_2d(xyd_brusselator, N)), - (3.4, 1.0, 10.0, xyd_brusselator, N); + (3.4, 1.0, 10.0, step(xyd_brusselator)); kwargs... ) end @@ -158,7 +155,7 @@ function cache_and_compute_10_jacobians(adtype, f!::F, y, x, p) where {F} return J end -Ns = [2^i for i in 1:8] +Ns = [2^i for i in 1:4] adtypes = [ ( @@ -170,7 +167,7 @@ adtypes = [ AutoPolyesterForwardDiff(; chunksize=8); sparsity_detector=TracerSparsityDetector() ), - [:forwarddiff, :exact_sparse] + [:polyester, :exact_sparse] ), ( AutoSparse( @@ -213,7 +210,7 @@ adtypes = [ times = Matrix{Float64}(undef, length(Ns), length(adtypes)) for (i, N) in enumerate(Ns) - @info N + str = "$(lpad(N, 10)) " test_problem = generate_brusselator_problem(N) bruss_f! = test_problem.f u0 = test_problem.u0 @@ -225,8 +222,9 @@ for (i, N) in enumerate(Ns) $(adtype), $(bruss_f!), $(y), $(u0), $(test_problem.p) ) end - @info times[i, j] + str = str * "$(lpad(times[i, j], 16))" end + println(str) end ``` @@ -253,7 +251,7 @@ fig = begin xtickwidth=2.5, ytickwidth=2.5, spinewidth=2.5, yreversed=true) spy!(ax, J_; markersize=1, marker=:circle, framecolor=:lightgray, - colormap=:seaborn_bright) + colormap=:tableau_20) ax = Axis(fig[1, 2]; title="Scaling of Sparse Jacobian Computation", titlesize=22, titlegap=10, xscale=log10, yscale=log10, @@ -262,7 +260,7 @@ fig = begin xlabel=L"Input Dimension ($\mathbf{N}$)", ylabel=L"Time $\mathbf{(s)}$", xlabelsize=22, ylabelsize=22, yaxisposition=:right) - colors = cgrad(:seaborn_bright, length(adtypes); categorical=true) + colors = cgrad(:tableau_20, length(adtypes); categorical=true) line_list = [] scatter_list = [] @@ -357,24 +355,24 @@ First, let us experiment the scaling of each algorithm with the problem size. Ns = vcat(collect(2 .^ (2:7)), [150, 175, 200]) solvers_scaling = [ - (; pkg = :nonlinearsolve, sparsity = :none, name = "NR (No Sparsity)", alg = NewtonRaphson()), - (; pkg = :nonlinearsolve, sparsity = :exact, name = "NR (Exact Sparsity)", alg = NewtonRaphson()), - (; pkg = :wrapper, sparsity = :none, name = "NR [NLsolve.jl]", alg = NLsolveJL(; method = :newton, autodiff = :forward)), - (; pkg = :wrapper, sparsity = :none, name = "Mod. NR [Sundials]", alg = KINSOL()), - (; pkg = :wrapper, sparsity = :none, name = "NR [PETSc] (No Sparsity)", alg = PETScSNES(; snes_type = "newtonls")), - (; pkg = :wrapper, sparsity = :none, name = "NR [PETSc] (Approx. Local Sparsity)", alg = PETScSNES(; snes_type = "newtonls")), - (; pkg = :wrapper, sparsity = :none, name = "NR [PETSc] (Exact Sparsity)", alg = PETScSNES(; snes_type = "newtonls")), - - (; pkg = :nonlinearsolve, sparsity = :none, name = "TR (No Sparsity)", alg = TrustRegion(; radius_update_scheme = RUS.NLsolve)), - (; pkg = :nonlinearsolve, sparsity = :exact, name = "TR (Exact Sparsity)", alg = TrustRegion(; radius_update_scheme = RUS.NLsolve)), - (; pkg = :wrapper, sparsity = :none, name = "TR [NLsolve.jl]", alg = NLsolveJL(; autodiff = :forward)), - (; pkg = :wrapper, sparsity = :none, name = "TR [PETSc] (No Sparsity)", alg = PETScSNES(; snes_type = "newtontr")), - (; pkg = :wrapper, sparsity = :none, name = "TR [PETSc] (Approx. Local Sparsity)", alg = PETScSNES(; snes_type = "newtontr")), - (; pkg = :wrapper, sparsity = :none, name = "TR [PETSc] (Exact Sparsity)", alg = PETScSNES(; snes_type = "newtontr")), - - (; pkg = :wrapper, sparsity = :none, name = "Mod. Powell [MINPACK]", alg = CMINPACK()), + (; pkg = :nonlinearsolve, sparsity = :none, name = "NR (No Sparsity)", alg = NewtonRaphson()), + (; pkg = :nonlinearsolve, sparsity = :exact, name = "NR (Exact Sparsity)", alg = NewtonRaphson()), + (; pkg = :wrapper, sparsity = :none, name = "NR [NLsolve.jl]", alg = NLsolveJL(; method = :newton, autodiff = :forward)), + (; pkg = :wrapper, sparsity = :none, name = "Mod. NR [Sundials]", alg = KINSOL()), + (; pkg = :wrapper, sparsity = :none, name = "NR [PETSc] (No Sparsity)", alg = PETScSNES(; snes_type = "newtonls")), + (; pkg = :wrapper, sparsity = :exact, name = "NR [PETSc] (Exact Sparsity)", alg = PETScSNES(; snes_type = "newtonls")), + + (; pkg = :nonlinearsolve, sparsity = :none, name = "TR (No Sparsity)", alg = TrustRegion(; radius_update_scheme = RUS.NLsolve)), + (; pkg = :nonlinearsolve, sparsity = :exact, name = "TR (Exact Sparsity)", alg = TrustRegion(; radius_update_scheme = RUS.NLsolve)), + (; pkg = :wrapper, sparsity = :none, name = "TR [NLsolve.jl]", alg = NLsolveJL(; autodiff = :forward)), + (; pkg = :wrapper, sparsity = :none, name = "TR [PETSc] (No Sparsity)", alg = PETScSNES(; snes_type = "newtontr")), + (; pkg = :wrapper, sparsity = :exact, name = "TR [PETSc] (Exact Sparsity)", alg = PETScSNES(; snes_type = "newtontr")), + + (; pkg = :wrapper, sparsity = :none, name = "Mod. Powell [MINPACK]", alg = CMINPACK()), ] +GC.enable(false) # for PETSc + runtimes_scaling = fill(-1.0, length(solvers_scaling), length(Ns)) for (i, N) in enumerate(Ns) @@ -444,7 +442,7 @@ fig = begin STROKEWIDTH = 2.5 cycle = Cycle([:marker], covary = true) - colors = cgrad(:seaborn_bright, length(solvers_scaling); categorical = true) + colors = cgrad(:tableau_20, length(solvers_scaling); categorical = true) theme = Theme(Lines = (cycle = cycle,), Scatter = (cycle = cycle,)) LINESTYLES = Dict( (:nonlinearsolve, :none) => :solid, @@ -551,17 +549,16 @@ end Ns = 2 .^ (2:7) -# XXX: Add PETSc solvers_scaling_jacobian_free = [ - (; pkg = :nonlinearsolve, name = "Newton Krylov", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES())), - (; pkg = :nonlinearsolve, name = "Newton Krylov (ILU)", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES(; precs = incompletelu), concrete_jac = true)), - (; pkg = :nonlinearsolve, name = "Newton Krylov (AMG)", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES(; precs = algebraicmultigrid), concrete_jac = true)), - (; pkg = :nonlinearsolve, name = "Newton Krylov (AMG Jacobi)", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES(; precs = algebraicmultigrid_jacobi), concrete_jac = true)), - (; pkg = :nonlinearsolve, name = "TR Krylov", alg = TrustRegion(; linsolve = KrylovJL_GMRES())), - (; pkg = :nonlinearsolve, name = "TR Krylov (ILU)", alg = TrustRegion(; linsolve = KrylovJL_GMRES(; precs = incompletelu), concrete_jac = true)), - (; pkg = :nonlinearsolve, name = "TR Krylov (AMG)", alg = TrustRegion(; linsolve = KrylovJL_GMRES(; precs = algebraicmultigrid), concrete_jac = true)), - (; pkg = :nonlinearsolve, name = "TR Krylov (AMG Jacobi)", alg = TrustRegion(; linsolve = KrylovJL_GMRES(; precs = algebraicmultigrid_jacobi), concrete_jac = true)), - (; pkg = :wrapper, name = "Newton Krylov [Sundials]", alg = KINSOL(; linear_solver = :GMRES)), + (; pkg = :nonlinearsolve, name = "Newton Krylov", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES())), + (; pkg = :nonlinearsolve, name = "Newton Krylov (ILU)", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES(; precs = incompletelu), concrete_jac = true)), + (; pkg = :nonlinearsolve, name = "Newton Krylov (AMG)", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES(; precs = algebraicmultigrid), concrete_jac = true)), + (; pkg = :nonlinearsolve, name = "Newton Krylov (AMG Jacobi)", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES(; precs = algebraicmultigrid_jacobi), concrete_jac = true)), + (; pkg = :nonlinearsolve, name = "TR Krylov", alg = TrustRegion(; linsolve = KrylovJL_GMRES())), + (; pkg = :nonlinearsolve, name = "TR Krylov (ILU)", alg = TrustRegion(; linsolve = KrylovJL_GMRES(; precs = incompletelu), concrete_jac = true)), + (; pkg = :nonlinearsolve, name = "TR Krylov (AMG)", alg = TrustRegion(; linsolve = KrylovJL_GMRES(; precs = algebraicmultigrid), concrete_jac = true)), + (; pkg = :nonlinearsolve, name = "TR Krylov (AMG Jacobi)", alg = TrustRegion(; linsolve = KrylovJL_GMRES(; precs = algebraicmultigrid_jacobi), concrete_jac = true)), + (; pkg = :wrapper, name = "Newton Krylov [Sundials]", alg = KINSOL(; linear_solver = :GMRES)), ] runtimes_scaling = zeros(length(solvers_scaling_jacobian_free), length(Ns)) .- 1 @@ -623,7 +620,7 @@ fig = begin STROKEWIDTH = 2.5 cycle = Cycle([:marker], covary = true) - colors = cgrad(:seaborn_bright, length(solvers_scaling_jacobian_free); categorical = true) + colors = cgrad(:tableau_20, length(solvers_scaling_jacobian_free); categorical = true) theme = Theme(Lines = (cycle = cycle,), Scatter = (cycle = cycle,)) LINESTYLES = Dict( (:nonlinearsolve, :none) => :solid, @@ -694,20 +691,19 @@ In this section, we will generate the work-precision of the solvers. All solvers exploit sparsity will automatically do so. ```julia -# XXX: Add PETSc solvers_all = [ - (; pkg = :nonlinearsolve, name = "Default PolyAlg", solver = Dict(:alg => FastShortcutNonlinearPolyalg())), - (; pkg = :nonlinearsolve, name = "RobustMultiNewton (GMRES)", solver = Dict(:alg => RobustMultiNewton(; linsolve = KrylovJL_GMRES()))), - (; pkg = :nonlinearsolve, name = "Newton Raphson", solver = Dict(:alg => NewtonRaphson(; linsolve = nothing))), - (; pkg = :nonlinearsolve, name = "Newton Krylov", solver = Dict(:alg => NewtonRaphson(; linsolve = KrylovJL_GMRES()))), - (; pkg = :nonlinearsolve, name = "Trust Region", solver = Dict(:alg => TrustRegion())), - (; pkg = :nonlinearsolve, name = "TR Krylov", solver = Dict(:alg => TrustRegion(; linsolve = KrylovJL_GMRES()))), - (; pkg = :wrapper, name = "NR [NLsolve.jl]", solver = Dict(:alg => NLsolveJL(; method = :newton, autodiff = :forward))), - (; pkg = :wrapper, name = "TR [NLsolve.jl]", solver = Dict(:alg => NLsolveJL(; autodiff = :forward))), - (; pkg = :wrapper, name = "NR [Sundials]", solver = Dict(:alg => KINSOL())), - (; pkg = :wrapper, name = "Newton Krylov [Sundials]", solver = Dict(:alg => KINSOL(; linear_solver = :GMRES))), - - (; pkg = :wrapper, name = "Mod. Powell [MINPACK]", solver = Dict(:alg => CMINPACK())), + (; pkg = :nonlinearsolve, name = "Default PolyAlg", solver = Dict(:alg => FastShortcutNonlinearPolyalg())), + (; pkg = :nonlinearsolve, name = "RobustMultiNewton (GMRES)", solver = Dict(:alg => RobustMultiNewton(; linsolve = KrylovJL_GMRES()))), + (; pkg = :nonlinearsolve, name = "Newton Raphson", solver = Dict(:alg => NewtonRaphson(; linsolve = nothing))), + (; pkg = :nonlinearsolve, name = "Newton Krylov", solver = Dict(:alg => NewtonRaphson(; linsolve = KrylovJL_GMRES()))), + (; pkg = :nonlinearsolve, name = "Trust Region", solver = Dict(:alg => TrustRegion())), + (; pkg = :nonlinearsolve, name = "TR Krylov", solver = Dict(:alg => TrustRegion(; linsolve = KrylovJL_GMRES()))), + (; pkg = :wrapper, name = "NR [NLsolve.jl]", solver = Dict(:alg => NLsolveJL(; method = :newton, autodiff = :forward))), + (; pkg = :wrapper, name = "TR [NLsolve.jl]", solver = Dict(:alg => NLsolveJL(; autodiff = :forward))), + (; pkg = :wrapper, name = "NR [Sundials]", solver = Dict(:alg => KINSOL())), + (; pkg = :wrapper, name = "Newton Krylov [Sundials]", solver = Dict(:alg => KINSOL(; linear_solver = :GMRES))), + + (; pkg = :wrapper, name = "Mod. Powell [MINPACK]", solver = Dict(:alg => CMINPACK())), ]; ``` @@ -770,7 +766,7 @@ fig = begin HEIGHT = round(Int, WIDTH * ASPECT_RATIO) STROKEWIDTH = 2.5 - colors = cgrad(:seaborn_bright, length(successful_solvers); categorical = true) + colors = cgrad(:tableau_20, length(successful_solvers); categorical = true) cycle = Cycle([:marker], covary = true) plot_theme = Theme(Lines = (; cycle), Scatter = (; cycle)) From 85780eabcee1c571ddcd57e83cc5628f0dfa0759 Mon Sep 17 00:00:00 2001 From: Avik Pal Date: Wed, 9 Apr 2025 18:30:34 -0400 Subject: [PATCH 03/39] fix: compat --- benchmarks/NonlinearProblem/Manifest.toml | 83 +++++++---------------- 1 file changed, 24 insertions(+), 59 deletions(-) diff --git a/benchmarks/NonlinearProblem/Manifest.toml b/benchmarks/NonlinearProblem/Manifest.toml index a3cf19776..2851e4e69 100644 --- a/benchmarks/NonlinearProblem/Manifest.toml +++ b/benchmarks/NonlinearProblem/Manifest.toml @@ -1,8 +1,8 @@ # This file is machine-generated - editing it directly is not advised -julia_version = "1.11.4" +julia_version = "1.10.9" manifest_format = "2.0" -project_hash = "de0574819742a8dd5f436fcca2084771e05bc2da" +project_hash = "8ac8121c04e325182b3891d30875e92678cafb2e" [[deps.ADTypes]] git-tree-sha1 = "e2478490447631aedba0823d4d7a80b2cc8cdb32" @@ -102,7 +102,7 @@ version = "0.4.2" [[deps.ArgTools]] uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" -version = "1.1.2" +version = "1.1.1" [[deps.ArnoldiMethod]] deps = ["LinearAlgebra", "Random", "StaticArrays"] @@ -154,7 +154,6 @@ weakdeps = ["SparseArrays"] [[deps.Artifacts]] uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" -version = "1.11.0" [[deps.Automa]] deps = ["PrecompileTools", "SIMD", "TranscodingStreams"] @@ -176,7 +175,6 @@ version = "0.4.7" [[deps.Base64]] uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" -version = "1.11.0" [[deps.BenchmarkTools]] deps = ["Compat", "JSON", "Logging", "Printf", "Profile", "Statistics", "UUIDs"] @@ -229,7 +227,6 @@ version = "0.2.6" [[deps.CRC32c]] uuid = "8bf52ea8-c179-5cab-976a-9e18b702a9bc" -version = "1.11.0" [[deps.CRlibm_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -294,11 +291,13 @@ deps = ["FixedPointNumbers", "Random"] git-tree-sha1 = "67e11ee83a43eb71ddc950302c53bf33f0690dfe" uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" version = "0.12.1" -weakdeps = ["StyledStrings"] [deps.ColorTypes.extensions] StyledStringsExt = "StyledStrings" + [deps.ColorTypes.weakdeps] + StyledStrings = "f489334b-da3d-4c2e-b8f0-e476e12c162b" + [[deps.ColorVectorSpace]] deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "Requires", "Statistics", "TensorCore"] git-tree-sha1 = "8b3b6f87ce8f65a2b4f857528fd8d70086cd72b1" @@ -439,7 +438,6 @@ version = "1.0.0" [[deps.Dates]] deps = ["Printf"] uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" -version = "1.11.0" [[deps.DelaunayTriangulation]] deps = ["AdaptivePredicates", "EnumX", "ExactPredicates", "Random"] @@ -577,7 +575,6 @@ weakdeps = ["ChainRulesCore", "SparseArrays"] [[deps.Distributed]] deps = ["Random", "Serialization", "Sockets"] uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" -version = "1.11.0" [[deps.Distributions]] deps = ["AliasTables", "FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns"] @@ -799,7 +796,6 @@ weakdeps = ["Mmap", "Test"] [[deps.FileWatching]] uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" -version = "1.11.0" [[deps.FillArrays]] deps = ["LinearAlgebra"] @@ -896,7 +892,6 @@ version = "0.1.3" [[deps.Future]] deps = ["Random"] uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" -version = "1.11.0" [[deps.GPUArraysCore]] deps = ["Adapt"] @@ -1117,7 +1112,6 @@ version = "2025.0.4+0" [[deps.InteractiveUtils]] deps = ["Markdown"] uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" -version = "1.11.0" [[deps.Interpolations]] deps = ["Adapt", "AxisAlgorithms", "ChainRulesCore", "LinearAlgebra", "OffsetArrays", "Random", "Ratios", "Requires", "SharedArrays", "SparseArrays", "StaticArrays", "WoodburyMatrices"] @@ -1327,7 +1321,6 @@ version = "2.6.1" [[deps.LazyArtifacts]] deps = ["Artifacts", "Pkg"] uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" -version = "1.11.0" [[deps.LazyModules]] git-tree-sha1 = "a560dd966b386ac9ae60bdd3a3d3a326062d3c3e" @@ -1342,17 +1335,16 @@ version = "0.6.4" [[deps.LibCURL_jll]] deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" -version = "8.6.0+0" +version = "8.4.0+0" [[deps.LibGit2]] deps = ["Base64", "LibGit2_jll", "NetworkOptions", "Printf", "SHA"] uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" -version = "1.11.0" [[deps.LibGit2_jll]] deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll"] uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5" -version = "1.7.2+0" +version = "1.6.4+0" [[deps.LibSSH2_jll]] deps = ["Artifacts", "Libdl", "MbedTLS_jll"] @@ -1361,7 +1353,6 @@ version = "1.11.0+1" [[deps.Libdl]] uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" -version = "1.11.0" [[deps.Libffi_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -1430,7 +1421,6 @@ version = "7.3.0" [[deps.LinearAlgebra]] deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" -version = "1.11.0" [[deps.LinearSolve]] deps = ["ArrayInterface", "ChainRulesCore", "ConcreteStructs", "DocStringExtensions", "EnumX", "FastLapackInterface", "GPUArraysCore", "InteractiveUtils", "KLU", "Krylov", "LazyArrays", "Libdl", "LinearAlgebra", "MKL_jll", "Markdown", "PrecompileTools", "Preferences", "RecursiveFactorization", "Reexport", "SciMLBase", "SciMLOperators", "Setfield", "SparseArrays", "Sparspak", "StaticArraysCore", "UnPack"] @@ -1486,7 +1476,6 @@ version = "0.3.29" [[deps.Logging]] uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" -version = "1.11.0" [[deps.LoggingExtras]] deps = ["Dates", "Logging"] @@ -1579,7 +1568,6 @@ version = "0.4.2" [[deps.Markdown]] deps = ["Base64"] uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" -version = "1.11.0" [[deps.MarkdownAST]] deps = ["AbstractTrees", "Markdown"] @@ -1612,7 +1600,7 @@ version = "1.1.9" [[deps.MbedTLS_jll]] deps = ["Artifacts", "Libdl"] uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" -version = "2.28.6+0" +version = "2.28.2+1" [[deps.MicrosoftMPI_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -1628,7 +1616,6 @@ version = "1.2.0" [[deps.Mmap]] uuid = "a63ad114-7e13-5084-954f-fe012c677804" -version = "1.11.0" [[deps.MosaicViews]] deps = ["MappedArrays", "OffsetArrays", "PaddedViews", "StackViews"] @@ -1644,7 +1631,7 @@ version = "0.3.5" [[deps.MozillaCACerts_jll]] uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -version = "2023.12.12" +version = "2023.1.10" [[deps.MuladdMacro]] git-tree-sha1 = "cac9cc5499c25554cba55cd3c30543cff5ca4fab" @@ -1813,9 +1800,9 @@ version = "1.3.5+1" [[deps.OpenBLAS32_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl"] -git-tree-sha1 = "ece4587683695fe4c5f20e990da0ed7e83c351e7" +git-tree-sha1 = "6065c4cff8fee6c6770b277af45d5082baacdba1" uuid = "656ef2d0-ae68-5445-9ca0-591084a874a2" -version = "0.3.29+0" +version = "0.3.24+0" [[deps.OpenBLASConsistentFPCSR_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl"] @@ -1826,7 +1813,7 @@ version = "0.3.29+0" [[deps.OpenBLAS_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" -version = "0.3.27+1" +version = "0.3.23+4" [[deps.OpenEXR]] deps = ["Colors", "FileIO", "OpenEXR_jll"] @@ -1970,13 +1957,9 @@ uuid = "30392449-352a-5448-841d-b1acce4e97dc" version = "0.44.2+0" [[deps.Pkg]] -deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "Random", "SHA", "TOML", "Tar", "UUIDs", "p7zip_jll"] +deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" -version = "1.11.0" -weakdeps = ["REPL"] - - [deps.Pkg.extensions] - REPLExt = "REPL" +version = "1.10.0" [[deps.PkgVersion]] deps = ["Pkg"] @@ -2052,11 +2035,10 @@ version = "0.5.7" [[deps.Printf]] deps = ["Unicode"] uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" -version = "1.11.0" [[deps.Profile]] +deps = ["Printf"] uuid = "9abbd945-dff8-562f-b5e8-e1ebf5ef1b79" -version = "1.11.0" [[deps.ProgressMeter]] deps = ["Distributed", "Printf"] @@ -2086,14 +2068,12 @@ weakdeps = ["Enzyme"] QuadGKEnzymeExt = "Enzyme" [[deps.REPL]] -deps = ["InteractiveUtils", "Markdown", "Sockets", "StyledStrings", "Unicode"] +deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" -version = "1.11.0" [[deps.Random]] deps = ["SHA"] uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" -version = "1.11.0" [[deps.Random123]] deps = ["Random", "RandomNumbers"] @@ -2323,7 +2303,6 @@ version = "1.2.1" [[deps.Serialization]] uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" -version = "1.11.0" [[deps.Setfield]] deps = ["ConstructionBase", "Future", "MacroTools", "StaticArraysCore"] @@ -2340,7 +2319,6 @@ version = "0.5.0" [[deps.SharedArrays]] deps = ["Distributed", "Mmap", "Random", "Serialization"] uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383" -version = "1.11.0" [[deps.Showoff]] deps = ["Dates", "Grisu"] @@ -2391,7 +2369,6 @@ version = "0.1.3" [[deps.Sockets]] uuid = "6462fe0b-24de-5631-8697-dd941f90decc" -version = "1.11.0" [[deps.SoftGlobalScope]] deps = ["REPL"] @@ -2408,7 +2385,7 @@ version = "1.2.1" [[deps.SparseArrays]] deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" -version = "1.11.0" +version = "1.10.0" [[deps.SparseConnectivityTracer]] deps = ["ADTypes", "DocStringExtensions", "FillArrays", "LinearAlgebra", "Random", "SparseArrays"] @@ -2532,14 +2509,9 @@ uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" version = "1.4.3" [[deps.Statistics]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "ae3bb1eb3bba077cd276bc5cfc337cc65c3075c0" +deps = ["LinearAlgebra", "SparseArrays"] uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" -version = "1.11.1" -weakdeps = ["SparseArrays"] - - [deps.Statistics.extensions] - SparseArraysExt = ["SparseArrays"] +version = "1.10.0" [[deps.StatsAPI]] deps = ["LinearAlgebra"] @@ -2608,10 +2580,6 @@ git-tree-sha1 = "c581be48ae1cbf83e899b14c07a807e1787512cc" uuid = "53d494c1-5632-5724-8f4c-31dff12d585f" version = "0.3.1" -[[deps.StyledStrings]] -uuid = "f489334b-da3d-4c2e-b8f0-e476e12c162b" -version = "1.11.0" - [[deps.SuiteSparse]] deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" @@ -2619,7 +2587,7 @@ uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" [[deps.SuiteSparse_jll]] deps = ["Artifacts", "Libdl", "libblastrampoline_jll"] uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" -version = "7.7.0+0" +version = "7.2.1+1" [[deps.Sundials]] deps = ["CEnum", "DataStructures", "DiffEqBase", "Libdl", "LinearAlgebra", "Logging", "PrecompileTools", "Reexport", "SciMLBase", "SparseArrays", "Sundials_jll"] @@ -2629,9 +2597,9 @@ version = "4.27.0" [[deps.Sundials_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "SuiteSparse_jll", "libblastrampoline_jll"] -git-tree-sha1 = "91db7ed92c66f81435fe880947171f1212936b14" +git-tree-sha1 = "ba4d38faeb62de7ef47155ed321dce40a549c305" uuid = "fb77eaff-e24c-56d4-86b1-d163f2edb164" -version = "5.2.3+0" +version = "5.2.2+0" [[deps.SymbolicIndexingInterface]] deps = ["Accessors", "ArrayInterface", "RuntimeGeneratedFunctions", "StaticArraysCore"] @@ -2722,7 +2690,6 @@ version = "2.0.0" [[deps.Test]] deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" -version = "1.11.0" [[deps.ThreadingUtilities]] deps = ["ManualMemory"] @@ -2778,7 +2745,6 @@ version = "1.5.2" [[deps.UUIDs]] deps = ["Random", "SHA"] uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" -version = "1.11.0" [[deps.UnPack]] git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b" @@ -2787,7 +2753,6 @@ version = "1.0.2" [[deps.Unicode]] uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" -version = "1.11.0" [[deps.UnicodeFun]] deps = ["REPL"] @@ -3021,7 +2986,7 @@ version = "1.5.0+0" [[deps.nghttp2_jll]] deps = ["Artifacts", "Libdl"] uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" -version = "1.59.0+0" +version = "1.52.0+1" [[deps.oneTBB_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] From 2831f6250116d5d846498fb61cb0558e8eef4456 Mon Sep 17 00:00:00 2001 From: Avik Pal Date: Sun, 13 Apr 2025 13:18:27 -0400 Subject: [PATCH 04/39] fix: pin MINPACK --- benchmarks/NonlinearProblem/Manifest.toml | 13 ++++--------- .../NonlinearProblem/nonlinear_battery_problem.jmd | 2 +- .../NonlinearProblem/nonlinear_solver_23_tests.jmd | 4 ++-- benchmarks/NonlinearProblem/quadratic_nonlinear.jmd | 8 ++++---- 4 files changed, 11 insertions(+), 16 deletions(-) diff --git a/benchmarks/NonlinearProblem/Manifest.toml b/benchmarks/NonlinearProblem/Manifest.toml index 2851e4e69..d967cb7e0 100644 --- a/benchmarks/NonlinearProblem/Manifest.toml +++ b/benchmarks/NonlinearProblem/Manifest.toml @@ -1495,10 +1495,11 @@ weakdeps = ["ChainRulesCore", "ForwardDiff", "SpecialFunctions"] SpecialFunctionsExt = "SpecialFunctions" [[deps.MINPACK]] -deps = ["LinearAlgebra", "Printf", "cminpack_jll"] -git-tree-sha1 = "7833d5fda5c9a7a62b39d37ebd3c7d716fbc0cfc" +deps = ["LinearAlgebra", "Printf"] +git-tree-sha1 = "f52ca94d3349e0f7da6e88a03b15dabf3d305ca4" +pinned = true uuid = "4854310b-de5a-5eb6-a2a5-c1dee2bd17f9" -version = "1.3.0" +version = "1.2.0" [[deps.MKL_jll]] deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "oneTBB_jll"] @@ -2912,12 +2913,6 @@ git-tree-sha1 = "446b23e73536f84e8037f5dce465e92275f6a308" uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" version = "1.5.7+1" -[[deps.cminpack_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "libblastrampoline_jll"] -git-tree-sha1 = "720469d4732c660ef6b38bf0449a2db0f5de2462" -uuid = "b792d7bf-f512-5dba-8a02-6d8084434f1d" -version = "1.3.11+0" - [[deps.isoband_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] git-tree-sha1 = "51b5eeb3f98367157a7a12a1fb0aa5328946c03c" diff --git a/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd b/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd index 10b283e79..5169bced1 100644 --- a/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd +++ b/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd @@ -259,7 +259,7 @@ fig = begin HEIGHT = round(Int, WIDTH * ASPECT_RATIO) STROKEWIDTH = 2.5 - colors = cgrad(:seaborn_bright, length(successful_solvers); categorical = true) + colors = cgrad(::tableau_20, length(successful_solvers); categorical = true) cycle = Cycle([:marker], covary = true) plot_theme = Theme(Lines = (; cycle), Scatter = (; cycle)) diff --git a/benchmarks/NonlinearProblem/nonlinear_solver_23_tests.jmd b/benchmarks/NonlinearProblem/nonlinear_solver_23_tests.jmd index ed7577df5..9ad04424c 100644 --- a/benchmarks/NonlinearProblem/nonlinear_solver_23_tests.jmd +++ b/benchmarks/NonlinearProblem/nonlinear_solver_23_tests.jmd @@ -215,7 +215,7 @@ function plot_collective_benchmark(prob_name, wp_general, wp_NR, wp_TR, wp_LM) HEIGHT = round(Int, WIDTH * ASPECT_RATIO) STROKEWIDTH = 2.5 - colors = cgrad(:seaborn_bright, length(solvers_all); categorical = true) + colors = cgrad(::tableau_20, length(solvers_all); categorical = true) cycle = Cycle([:marker], covary = true) plot_theme = Theme(Lines = (; cycle), Scatter = (; cycle)) @@ -468,7 +468,7 @@ fig = begin HEIGHT = round(Int, WIDTH * ASPECT_RATIO) STROKEWIDTH = 2.5 - colors = cgrad(:seaborn_bright, length(solvers_all); categorical = true) + colors = cgrad(::tableau_20, length(solvers_all); categorical = true) cycle = Cycle([:marker], covary = true) plot_theme = Theme(Lines = (; cycle), Scatter = (; cycle)) diff --git a/benchmarks/NonlinearProblem/quadratic_nonlinear.jmd b/benchmarks/NonlinearProblem/quadratic_nonlinear.jmd index 9129ee964..bcecf1843 100644 --- a/benchmarks/NonlinearProblem/quadratic_nonlinear.jmd +++ b/benchmarks/NonlinearProblem/quadratic_nonlinear.jmd @@ -110,7 +110,7 @@ function plot_all_wpsets(wpset_list, solver_all, titles, suptitle) HEIGHT = round(Int, WIDTH * ASPECT_RATIO) STROKEWIDTH = 2.5 - colors = cgrad(:seaborn_bright, length(solver_all); categorical = true) + colors = cgrad(::tableau_20, length(solver_all); categorical = true) cycle = Cycle([:marker], covary = true) plot_theme = Theme(Lines = (; cycle,), Scatter = (; cycle,)) @@ -290,7 +290,7 @@ fig = begin xticklabelrotation = π / 4, xticklabelsize = 20, yticklabelsize = 20) axs[1, i] = ax - barplot!(ax, xs, ys; color = dodge, colormap = :seaborn_bright, strokewidth = 2) + barplot!(ax, xs, ys; color = dodge, colormap = ::tableau_20, strokewidth = 2) hlines!(ax, [1.0], color = :black, linestyle = :dash, linewidth = 2) end @@ -315,7 +315,7 @@ fig = begin xticklabelrotation = π / 4, xticklabelsize = 20, yticklabelsize = 20) axs[1, i] = ax - barplot!(ax, xs, ys; color = dodge, dodge = dodge, colormap = :seaborn_bright, + barplot!(ax, xs, ys; color = dodge, dodge = dodge, colormap = ::tableau_20, strokewidth = 3) hlines!(ax, [1.0], color = :black, linestyle = :dash, linewidth = 3) @@ -333,7 +333,7 @@ fig = begin fontsize = 22, tellheight = false, rotation = π / 2) labels = ["NonlinearSolve.jl", "NLsolve.jl", "Sundials"] - colors = cgrad(:seaborn_bright, length(labels); categorical = true) + colors = cgrad(::tableau_20, length(labels); categorical = true) elements = [PolyElement(; polycolor = colors[i], strokewidth = 3) for i in 1:3] axislegend(axs[1, 4], elements, labels, "Package", patchsize = (20, 20), labelsize = 16, titlesize = 20, framewidth = STROKEWIDTH, rowgap = 5) From d123f7143355cdbf2c4c4ea5b4779dc07dbab483 Mon Sep 17 00:00:00 2001 From: Avik Pal Date: Sun, 13 Apr 2025 13:37:30 -0400 Subject: [PATCH 05/39] fix: disable PETSc for sparsity --- benchmarks/NonlinearProblem/bruss.jmd | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/benchmarks/NonlinearProblem/bruss.jmd b/benchmarks/NonlinearProblem/bruss.jmd index bbf09e91c..a2b6273da 100644 --- a/benchmarks/NonlinearProblem/bruss.jmd +++ b/benchmarks/NonlinearProblem/bruss.jmd @@ -360,13 +360,16 @@ solvers_scaling = [ (; pkg = :wrapper, sparsity = :none, name = "NR [NLsolve.jl]", alg = NLsolveJL(; method = :newton, autodiff = :forward)), (; pkg = :wrapper, sparsity = :none, name = "Mod. NR [Sundials]", alg = KINSOL()), (; pkg = :wrapper, sparsity = :none, name = "NR [PETSc] (No Sparsity)", alg = PETScSNES(; snes_type = "newtonls")), - (; pkg = :wrapper, sparsity = :exact, name = "NR [PETSc] (Exact Sparsity)", alg = PETScSNES(; snes_type = "newtonls")), + # TODO: fix sparsity detection for PETSc + # (; pkg = :wrapper, sparsity = :exact, name = "NR [PETSc] (Exact Sparsity)", alg = PETScSNES(; snes_type = "newtonls")), (; pkg = :nonlinearsolve, sparsity = :none, name = "TR (No Sparsity)", alg = TrustRegion(; radius_update_scheme = RUS.NLsolve)), - (; pkg = :nonlinearsolve, sparsity = :exact, name = "TR (Exact Sparsity)", alg = TrustRegion(; radius_update_scheme = RUS.NLsolve)), + # TODO: fix sparsity detection for PETSc + # (; pkg = :nonlinearsolve, sparsity = :exact, name = "TR (Exact Sparsity)", alg = TrustRegion(; radius_update_scheme = RUS.NLsolve)), (; pkg = :wrapper, sparsity = :none, name = "TR [NLsolve.jl]", alg = NLsolveJL(; autodiff = :forward)), (; pkg = :wrapper, sparsity = :none, name = "TR [PETSc] (No Sparsity)", alg = PETScSNES(; snes_type = "newtontr")), - (; pkg = :wrapper, sparsity = :exact, name = "TR [PETSc] (Exact Sparsity)", alg = PETScSNES(; snes_type = "newtontr")), + # TODO: fix sparsity detection for PETSc + # (; pkg = :wrapper, sparsity = :exact, name = "TR [PETSc] (Exact Sparsity)", alg = PETScSNES(; snes_type = "newtontr")), (; pkg = :wrapper, sparsity = :none, name = "Mod. Powell [MINPACK]", alg = CMINPACK()), ] @@ -404,7 +407,7 @@ for (i, N) in enumerate(Ns) (alg isa GeneralizedFirstOrderAlgorithm && alg.name == :TrustRegion && N > 64) || (alg isa NLsolveJL && N > 128 && alg.method == :newton) || (alg isa GeneralizedFirstOrderAlgorithm && alg.name == :NewtonRaphson && N > 128 && ptype == :none) || - (alg isa GeneralizedFirstOrderAlgorithm && alg.name == :NewtonRaphson && N > 150 && ptype == :approx) + (alg isa PETScSNES && N > 64 && ptype == :exact) # The last benchmark failed so skip this too runtimes_scaling[j, i] = NaN @warn "$(name): Would Have Timed out" From aca9f6da438da7702c2f795bef65029936d22a3c Mon Sep 17 00:00:00 2001 From: Avik Pal Date: Sun, 13 Apr 2025 13:39:36 -0400 Subject: [PATCH 06/39] fix: sparsity --- benchmarks/NonlinearProblem/bruss.jmd | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/benchmarks/NonlinearProblem/bruss.jmd b/benchmarks/NonlinearProblem/bruss.jmd index a2b6273da..895b0be57 100644 --- a/benchmarks/NonlinearProblem/bruss.jmd +++ b/benchmarks/NonlinearProblem/bruss.jmd @@ -360,16 +360,13 @@ solvers_scaling = [ (; pkg = :wrapper, sparsity = :none, name = "NR [NLsolve.jl]", alg = NLsolveJL(; method = :newton, autodiff = :forward)), (; pkg = :wrapper, sparsity = :none, name = "Mod. NR [Sundials]", alg = KINSOL()), (; pkg = :wrapper, sparsity = :none, name = "NR [PETSc] (No Sparsity)", alg = PETScSNES(; snes_type = "newtonls")), - # TODO: fix sparsity detection for PETSc - # (; pkg = :wrapper, sparsity = :exact, name = "NR [PETSc] (Exact Sparsity)", alg = PETScSNES(; snes_type = "newtonls")), + (; pkg = :wrapper, sparsity = :exact, name = "NR [PETSc] (Exact Sparsity)", alg = PETScSNES(; snes_type = "newtonls")), (; pkg = :nonlinearsolve, sparsity = :none, name = "TR (No Sparsity)", alg = TrustRegion(; radius_update_scheme = RUS.NLsolve)), - # TODO: fix sparsity detection for PETSc - # (; pkg = :nonlinearsolve, sparsity = :exact, name = "TR (Exact Sparsity)", alg = TrustRegion(; radius_update_scheme = RUS.NLsolve)), + (; pkg = :nonlinearsolve, sparsity = :exact, name = "TR (Exact Sparsity)", alg = TrustRegion(; radius_update_scheme = RUS.NLsolve)), (; pkg = :wrapper, sparsity = :none, name = "TR [NLsolve.jl]", alg = NLsolveJL(; autodiff = :forward)), (; pkg = :wrapper, sparsity = :none, name = "TR [PETSc] (No Sparsity)", alg = PETScSNES(; snes_type = "newtontr")), - # TODO: fix sparsity detection for PETSc - # (; pkg = :wrapper, sparsity = :exact, name = "TR [PETSc] (Exact Sparsity)", alg = PETScSNES(; snes_type = "newtontr")), + (; pkg = :wrapper, sparsity = :exact, name = "TR [PETSc] (Exact Sparsity)", alg = PETScSNES(; snes_type = "newtontr")), (; pkg = :wrapper, sparsity = :none, name = "Mod. Powell [MINPACK]", alg = CMINPACK()), ] From d0e94d175bc1225e8a73fb68ab2fedbc43b52953 Mon Sep 17 00:00:00 2001 From: Avik Pal Date: Sun, 13 Apr 2025 14:05:22 -0400 Subject: [PATCH 07/39] feat: add PETSc to battery --- benchmarks/NonlinearProblem/bruss.jmd | 1 + .../NonlinearProblem/nonlinear_battery_problem.jmd | 13 +++++++++---- .../NonlinearProblem/nonlinear_solver_23_tests.jmd | 1 + benchmarks/NonlinearProblem/quadratic_nonlinear.jmd | 1 + src/SciMLBenchmarks.jl | 13 ++++++++++--- 5 files changed, 22 insertions(+), 7 deletions(-) diff --git a/benchmarks/NonlinearProblem/bruss.jmd b/benchmarks/NonlinearProblem/bruss.jmd index 895b0be57..4f46b81a2 100644 --- a/benchmarks/NonlinearProblem/bruss.jmd +++ b/benchmarks/NonlinearProblem/bruss.jmd @@ -1,6 +1,7 @@ --- title: Ill-Conditioned Nonlinear System Work-Precision Diagrams author: Avik Pal +priority: 10 --- # Setup diff --git a/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd b/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd index 5169bced1..1508d6469 100644 --- a/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd +++ b/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd @@ -1,6 +1,7 @@ --- title: Doyle-Fuller-Newman (DFN) Battery Model Initialization author: Marc D. Berliner & Avik Pal +priority: 10000 --- These benchmarks compares the runtime and error for a range of nonlinear solvers. The solvers are implemented in [NonlinearProblemLibrary.jl](https://github.com/SciML/DiffEqProblemLibrary.jl/blob/master/lib/NonlinearProblemLibrary/src/NonlinearProblemLibrary.jl), where you can find the problem function declarations. We test the following solvers: @@ -23,7 +24,7 @@ Fetch required packages. using NonlinearSolve, LinearSolve, StaticArrays, Sundials, SpeedMapping, BenchmarkTools, LinearAlgebra, DiffEqDevTools, PolyesterForwardDiff, CairoMakie, RecursiveFactorization -import MINPACK, NLsolve +import MINPACK, NLsolve, PETSc import LineSearches const RUS = RadiusUpdateSchemes; @@ -35,7 +36,8 @@ Declare the benchmarked solvers (and their names and plotting options). HagerZhang() = LineSearchesJL(; method = LineSearches.HagerZhang()) MoreThuente() = LineSearchesJL(; method = LineSearches.MoreThuente()) -# XXX: Add PETSc +GC.enable(false) # for PETSc + solvers_all = [ (; pkg = :nonlinearsolve, name = "Default PolyAlgorithm", solver = Dict(:alg => FastShortcutNonlinearPolyalg())), (; pkg = :nonlinearsolve, name = "Newton Raphson", solver = Dict(:alg => NewtonRaphson())), @@ -55,6 +57,9 @@ solvers_all = [ (; pkg = :nonlinearsolve, name = "Levenberg-Marquardt with Cholesky", solver = Dict(:alg => LevenbergMarquardt(; linsolve = CholeskyFactorization()))), (; pkg = :nonlinearsolve, name = "Levenberg-Marquardt (No Geodesic Accln.)", solver = Dict(:alg => LevenbergMarquardt(; disable_geodesic = Val(true)))), (; pkg = :nonlinearsolve, name = "Levenberg-Marquardt (No Geodesic Accln.) with Cholesky", solver = Dict(:alg => LevenbergMarquardt(; disable_geodesic = Val(true), linsolve = CholeskyFactorization()))), + (; pkg = :wrapper, name = "Newton Raphson with BackTracking [PETSc]", solver = Dict(:alg => PETScSNES(; snes_type = "newtonls"))), + (; pkg = :wrapper, name = "Trust Region [PETSc]", solver = Dict(:alg => PETScSNES(; snes_type = "newtontr"))), + (; pkg = :wrapper, name = "Nonlinear GMRES [PETSc]", solver = Dict(:alg => PETScSNES(; snes_type = "ngmres"))), (; pkg = :wrapper, name = "Modified Powell [MINPACK]", solver = Dict(:alg => CMINPACK(; method = :hybr))), (; pkg = :wrapper, name = "Levenberg-Marquardt [MINPACK]", solver = Dict(:alg => CMINPACK(; method = :lm))), (; pkg = :wrapper, name = "Newton Raphson [NLsolve.jl]", solver = Dict(:alg => NLsolveJL(; method = :newton, autodiff = :forward))), @@ -62,7 +67,7 @@ solvers_all = [ (; pkg = :wrapper, name = "Mod. Newton Raphson [Sundials]", solver = Dict(:alg => KINSOL())), (; pkg = :wrapper, name = "Newton Krylov [Sundials]", solver = Dict(:alg => KINSOL(; linear_solver = :GMRES))), (; pkg = :wrapper, name = "Newton Raphson with LineSearch [Sundials]", solver = Dict(:alg => KINSOL(; globalization_strategy = :LineSearch))), - (; pkg = :wrapper, name = "Speed Mapping [SpeedMapping.jl]", solver = Dict(:alg => SpeedMappingJL())) + (; pkg = :wrapper, name = "Speed Mapping [SpeedMapping.jl]", solver = Dict(:alg => SpeedMappingJL())), ]; ``` @@ -265,7 +270,7 @@ fig = begin idxs = sortperm(median.(getfield.(wp_set.wps, :times))) - with_theme(plot_theme) do + with_theme(plot_theme) do fig = Figure(; size = (WIDTH, HEIGHT)) # `textbf` doesn't work ax = Axis(fig[1, 1], ylabel = L"Time $\mathbf{(s)}$", diff --git a/benchmarks/NonlinearProblem/nonlinear_solver_23_tests.jmd b/benchmarks/NonlinearProblem/nonlinear_solver_23_tests.jmd index 9ad04424c..695bfd512 100644 --- a/benchmarks/NonlinearProblem/nonlinear_solver_23_tests.jmd +++ b/benchmarks/NonlinearProblem/nonlinear_solver_23_tests.jmd @@ -1,6 +1,7 @@ --- title: Nonlinear Solver 23 Test Problems author: Torkel Loman & Avik Pal +priority: 1000 --- These benchmarks compares the runtime and error for a range of nonlinear solvers. The problems are a standard set of problems as described [here](https://people.sc.fsu.edu/~jburkardt/m_src/test_nonlin/test_nonlin.html). The solvers are implemented in [NonlinearProblemLibrary.jl](https://github.com/SciML/DiffEqProblemLibrary.jl/blob/master/lib/NonlinearProblemLibrary/src/NonlinearProblemLibrary.jl), where you can find the problem function declarations. For each problem we test the following solvers: diff --git a/benchmarks/NonlinearProblem/quadratic_nonlinear.jmd b/benchmarks/NonlinearProblem/quadratic_nonlinear.jmd index bcecf1843..5996ee781 100644 --- a/benchmarks/NonlinearProblem/quadratic_nonlinear.jmd +++ b/benchmarks/NonlinearProblem/quadratic_nonlinear.jmd @@ -1,6 +1,7 @@ --- title: Quadratic Nonlinear Rootfinding Benchmark author: Avik Pal +priority: 1 --- This is a test of a simple small nonlinear rootfinding problem. diff --git a/src/SciMLBenchmarks.jl b/src/SciMLBenchmarks.jl index 3bcc706a2..1c5555cb3 100644 --- a/src/SciMLBenchmarks.jl +++ b/src/SciMLBenchmarks.jl @@ -68,12 +68,19 @@ function weave_all(build_list=(:script,:github)) end function weave_folder(folder, build_list=(:script,:github)) + weave_files = String[] + priorities = Int[] for file in readdir(folder) # Skip non-`.jmd` files - if !endswith(file, ".jmd") - continue - end + endswith(file, ".jmd") || continue + push!(weave_files, file) + weave_doc = Weave.WeaveDoc(joinpath(folder, file)) + push!(priorities, get(weave_doc.header, "priority", 0)) + end + + weave_files = weave_files[sortperm(priorities; rev=true)] + for file in weave_files try @eval @subprocess begin using SciMLBenchmarks From 4a73dce6491e623bd9d9efaf07c8cef1599e14ca Mon Sep 17 00:00:00 2001 From: Avik Pal Date: Sun, 13 Apr 2025 14:31:04 -0400 Subject: [PATCH 08/39] fix: naming --- benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd | 2 +- benchmarks/NonlinearProblem/nonlinear_solver_23_tests.jmd | 4 ++-- benchmarks/NonlinearProblem/quadratic_nonlinear.jmd | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd b/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd index 1508d6469..70e2e2fd7 100644 --- a/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd +++ b/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd @@ -264,7 +264,7 @@ fig = begin HEIGHT = round(Int, WIDTH * ASPECT_RATIO) STROKEWIDTH = 2.5 - colors = cgrad(::tableau_20, length(successful_solvers); categorical = true) + colors = cgrad(:tableau_20, length(successful_solvers); categorical = true) cycle = Cycle([:marker], covary = true) plot_theme = Theme(Lines = (; cycle), Scatter = (; cycle)) diff --git a/benchmarks/NonlinearProblem/nonlinear_solver_23_tests.jmd b/benchmarks/NonlinearProblem/nonlinear_solver_23_tests.jmd index 695bfd512..28b5bd999 100644 --- a/benchmarks/NonlinearProblem/nonlinear_solver_23_tests.jmd +++ b/benchmarks/NonlinearProblem/nonlinear_solver_23_tests.jmd @@ -216,7 +216,7 @@ function plot_collective_benchmark(prob_name, wp_general, wp_NR, wp_TR, wp_LM) HEIGHT = round(Int, WIDTH * ASPECT_RATIO) STROKEWIDTH = 2.5 - colors = cgrad(::tableau_20, length(solvers_all); categorical = true) + colors = cgrad(:tableau_20, length(solvers_all); categorical = true) cycle = Cycle([:marker], covary = true) plot_theme = Theme(Lines = (; cycle), Scatter = (; cycle)) @@ -469,7 +469,7 @@ fig = begin HEIGHT = round(Int, WIDTH * ASPECT_RATIO) STROKEWIDTH = 2.5 - colors = cgrad(::tableau_20, length(solvers_all); categorical = true) + colors = cgrad(:tableau_20, length(solvers_all); categorical = true) cycle = Cycle([:marker], covary = true) plot_theme = Theme(Lines = (; cycle), Scatter = (; cycle)) diff --git a/benchmarks/NonlinearProblem/quadratic_nonlinear.jmd b/benchmarks/NonlinearProblem/quadratic_nonlinear.jmd index 5996ee781..97a824860 100644 --- a/benchmarks/NonlinearProblem/quadratic_nonlinear.jmd +++ b/benchmarks/NonlinearProblem/quadratic_nonlinear.jmd @@ -111,7 +111,7 @@ function plot_all_wpsets(wpset_list, solver_all, titles, suptitle) HEIGHT = round(Int, WIDTH * ASPECT_RATIO) STROKEWIDTH = 2.5 - colors = cgrad(::tableau_20, length(solver_all); categorical = true) + colors = cgrad(:tableau_20, length(solver_all); categorical = true) cycle = Cycle([:marker], covary = true) plot_theme = Theme(Lines = (; cycle,), Scatter = (; cycle,)) @@ -291,7 +291,7 @@ fig = begin xticklabelrotation = π / 4, xticklabelsize = 20, yticklabelsize = 20) axs[1, i] = ax - barplot!(ax, xs, ys; color = dodge, colormap = ::tableau_20, strokewidth = 2) + barplot!(ax, xs, ys; color = dodge, colormap = :tableau_20, strokewidth = 2) hlines!(ax, [1.0], color = :black, linestyle = :dash, linewidth = 2) end @@ -316,7 +316,7 @@ fig = begin xticklabelrotation = π / 4, xticklabelsize = 20, yticklabelsize = 20) axs[1, i] = ax - barplot!(ax, xs, ys; color = dodge, dodge = dodge, colormap = ::tableau_20, + barplot!(ax, xs, ys; color = dodge, dodge = dodge, colormap = :tableau_20, strokewidth = 3) hlines!(ax, [1.0], color = :black, linestyle = :dash, linewidth = 3) @@ -334,7 +334,7 @@ fig = begin fontsize = 22, tellheight = false, rotation = π / 2) labels = ["NonlinearSolve.jl", "NLsolve.jl", "Sundials"] - colors = cgrad(::tableau_20, length(labels); categorical = true) + colors = cgrad(:tableau_20, length(labels); categorical = true) elements = [PolyElement(; polycolor = colors[i], strokewidth = 3) for i in 1:3] axislegend(axs[1, 4], elements, labels, "Package", patchsize = (20, 20), labelsize = 16, titlesize = 20, framewidth = STROKEWIDTH, rowgap = 5) From 2460eb6d283c969802c958c94856c489e451f4cc Mon Sep 17 00:00:00 2001 From: Avik Pal Date: Sun, 13 Apr 2025 14:33:29 -0400 Subject: [PATCH 09/39] fix: total --- benchmarks/NonlinearProblem/bruss.jmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/benchmarks/NonlinearProblem/bruss.jmd b/benchmarks/NonlinearProblem/bruss.jmd index 4f46b81a2..c3007cfee 100644 --- a/benchmarks/NonlinearProblem/bruss.jmd +++ b/benchmarks/NonlinearProblem/bruss.jmd @@ -156,7 +156,7 @@ function cache_and_compute_10_jacobians(adtype, f!::F, y, x, p) where {F} return J end -Ns = [2^i for i in 1:4] +Ns = [2^i for i in 1:8] adtypes = [ ( From 3a05ba94f295109d9d5c341f55a15373245ed6ae Mon Sep 17 00:00:00 2001 From: Avik Pal Date: Sun, 13 Apr 2025 14:47:23 -0400 Subject: [PATCH 10/39] fix: ls --- benchmarks/NonlinearProblem/nonlinear_solver_23_tests.jmd | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/benchmarks/NonlinearProblem/nonlinear_solver_23_tests.jmd b/benchmarks/NonlinearProblem/nonlinear_solver_23_tests.jmd index 28b5bd999..1cca33fcb 100644 --- a/benchmarks/NonlinearProblem/nonlinear_solver_23_tests.jmd +++ b/benchmarks/NonlinearProblem/nonlinear_solver_23_tests.jmd @@ -39,7 +39,7 @@ Fetch required packages. using NonlinearSolve, LinearSolve, StaticArrays, Sundials, Setfield, BenchmarkTools, LinearAlgebra, DiffEqDevTools, NonlinearProblemLibrary, CairoMakie, RecursiveFactorization -import PolyesterForwardDiff, MINPACK, NLsolve +import PolyesterForwardDiff, MINPACK, NLsolve, LineSearches const RUS = RadiusUpdateSchemes; ``` @@ -47,7 +47,9 @@ const RUS = RadiusUpdateSchemes; Declare the benchmarked solvers (and their names and plotting options). ```julia -# XXX: Add PETSc +HagerZhang() = LineSearchesJL(; method = LineSearches.HagerZhang()) +MoreThuente() = LineSearchesJL(; method = LineSearches.MoreThuente()) + solvers_all = [ (; pkg = :nonlinearsolve, type = :general, name = "Default PolyAlg.", solver = Dict(:alg => FastShortcutNonlinearPolyalg(; u0_len = 10))), (; pkg = :nonlinearsolve, type = :NR, name = "Newton Raphson", solver = Dict(:alg => NewtonRaphson())), From 6b08fc59dcd0c8efc4ee1b5255f1546b9c9f7af5 Mon Sep 17 00:00:00 2001 From: Avik Pal Date: Sun, 13 Apr 2025 14:52:58 -0400 Subject: [PATCH 11/39] fix: config --- .../nonlinear_battery_problem.jmd | 27 ++++++++++++++----- 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd b/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd index 70e2e2fd7..90c16c9ad 100644 --- a/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd +++ b/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd @@ -57,9 +57,10 @@ solvers_all = [ (; pkg = :nonlinearsolve, name = "Levenberg-Marquardt with Cholesky", solver = Dict(:alg => LevenbergMarquardt(; linsolve = CholeskyFactorization()))), (; pkg = :nonlinearsolve, name = "Levenberg-Marquardt (No Geodesic Accln.)", solver = Dict(:alg => LevenbergMarquardt(; disable_geodesic = Val(true)))), (; pkg = :nonlinearsolve, name = "Levenberg-Marquardt (No Geodesic Accln.) with Cholesky", solver = Dict(:alg => LevenbergMarquardt(; disable_geodesic = Val(true), linsolve = CholeskyFactorization()))), + (; pkg = :wrapper, name = "Newton Raphson [PETSc]", solver = Dict(:alg => PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic"))), (; pkg = :wrapper, name = "Newton Raphson with BackTracking [PETSc]", solver = Dict(:alg => PETScSNES(; snes_type = "newtonls"))), (; pkg = :wrapper, name = "Trust Region [PETSc]", solver = Dict(:alg => PETScSNES(; snes_type = "newtontr"))), - (; pkg = :wrapper, name = "Nonlinear GMRES [PETSc]", solver = Dict(:alg => PETScSNES(; snes_type = "ngmres"))), + (; pkg = :wrapper, name = "Newton Krylov with GMRES [PETSc]", solver = Dict(:alg => PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres"))), (; pkg = :wrapper, name = "Modified Powell [MINPACK]", solver = Dict(:alg => CMINPACK(; method = :hybr))), (; pkg = :wrapper, name = "Levenberg-Marquardt [MINPACK]", solver = Dict(:alg => CMINPACK(; method = :lm))), (; pkg = :wrapper, name = "Newton Raphson [NLsolve.jl]", solver = Dict(:alg => NLsolveJL(; method = :newton, autodiff = :forward))), @@ -205,28 +206,42 @@ reltols = 1.0 ./ 10.0 .^ (3:0.5:6); Prepares various helper functions for benchmarking a specific problem. ```julia +function log_msg(msg; kwargs...) + if startswith(msg, "[Info]") + @info msg + elseif startswith(msg, "[Warn]") + @warn msg + elseif startswith(msg, "[Error]") + @error msg + else + @info msg + end + Base.printstyled(msg; kwargs...) + return +end + function check_solver(prob, solver) try sol = solve(prob.prob, solver.solver[:alg]; abstol = 1e-4, reltol = 1e-4, maxiters = 10000) err = norm(sol.resid, Inf) if !SciMLBase.successful_retcode(sol.retcode) - Base.printstyled("[Warn] Solver $(solver.name) returned retcode $(sol.retcode) with an residual norm = $(norm(sol.resid)).\n"; + log_msg("[Warn] Solver $(solver.name) returned retcode $(sol.retcode) with an residual norm = $(norm(sol.resid)).\n"; color = :red) return false elseif err > 1e3 - Base.printstyled("[Warn] Solver $(solver.name) had a very large residual (norm = $(norm(sol.resid))).\n"; + log_msg("[Warn] Solver $(solver.name) had a very large residual (norm = $(norm(sol.resid))).\n"; color = :red) return false elseif isinf(err) || isnan(err) - Base.printstyled("[Warn] Solver $(solver.name) had a residual of $(err).\n"; + log_msg("[Warn] Solver $(solver.name) had a residual of $(err).\n"; color = :red) return false end - Base.printstyled("[Info] Solver $(solver.name) successfully solved the problem (norm = $(norm(sol.resid))).\n"; + log_msg("[Info] Solver $(solver.name) successfully solved the problem (norm = $(norm(sol.resid))).\n"; color = :green) catch e - Base.printstyled("[Warn] Solver $(solver.name) threw an error: $e.\n"; color = :red) + log_msg("[Warn] Solver $(solver.name) threw an error: $e.\n"; color = :red) return false end return true From 507d16ea818360baf1cf1f0ee7d81e568e82871e Mon Sep 17 00:00:00 2001 From: Avik Pal Date: Sun, 13 Apr 2025 15:27:51 -0400 Subject: [PATCH 12/39] fix: run PETSc with QR --- benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd | 2 ++ 1 file changed, 2 insertions(+) diff --git a/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd b/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd index 90c16c9ad..5680da25c 100644 --- a/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd +++ b/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd @@ -58,7 +58,9 @@ solvers_all = [ (; pkg = :nonlinearsolve, name = "Levenberg-Marquardt (No Geodesic Accln.)", solver = Dict(:alg => LevenbergMarquardt(; disable_geodesic = Val(true)))), (; pkg = :nonlinearsolve, name = "Levenberg-Marquardt (No Geodesic Accln.) with Cholesky", solver = Dict(:alg => LevenbergMarquardt(; disable_geodesic = Val(true), linsolve = CholeskyFactorization()))), (; pkg = :wrapper, name = "Newton Raphson [PETSc]", solver = Dict(:alg => PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic"))), + (; pkg = :wrapper, name = "Newton Raphson with QR [PETSc]", solver = Dict(:alg => PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", pc_type = "qr"))), (; pkg = :wrapper, name = "Newton Raphson with BackTracking [PETSc]", solver = Dict(:alg => PETScSNES(; snes_type = "newtonls"))), + (; pkg = :wrapper, name = "Newton Raphson with BackTracking & QR [PETSc]", solver = Dict(:alg => PETScSNES(; snes_type = "newtonls", pc_type = "qr"))), (; pkg = :wrapper, name = "Trust Region [PETSc]", solver = Dict(:alg => PETScSNES(; snes_type = "newtontr"))), (; pkg = :wrapper, name = "Newton Krylov with GMRES [PETSc]", solver = Dict(:alg => PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres"))), (; pkg = :wrapper, name = "Modified Powell [MINPACK]", solver = Dict(:alg => CMINPACK(; method = :hybr))), From db5e40fa1cea3f510147dce1470728dfcf6b6306 Mon Sep 17 00:00:00 2001 From: Avik Pal Date: Sun, 13 Apr 2025 15:37:46 -0400 Subject: [PATCH 13/39] fix: update compats --- benchmarks/NonlinearProblem/Manifest.toml | 138 ++++++++-------------- benchmarks/NonlinearProblem/Project.toml | 4 +- 2 files changed, 50 insertions(+), 92 deletions(-) diff --git a/benchmarks/NonlinearProblem/Manifest.toml b/benchmarks/NonlinearProblem/Manifest.toml index d967cb7e0..7b47ee9ef 100644 --- a/benchmarks/NonlinearProblem/Manifest.toml +++ b/benchmarks/NonlinearProblem/Manifest.toml @@ -2,7 +2,7 @@ julia_version = "1.10.9" manifest_format = "2.0" -project_hash = "8ac8121c04e325182b3891d30875e92678cafb2e" +project_hash = "cd9959830f6db746c990086c85b190f684bf136a" [[deps.ADTypes]] git-tree-sha1 = "e2478490447631aedba0823d4d7a80b2cc8cdb32" @@ -84,9 +84,9 @@ version = "1.2.0" [[deps.AlgebraicMultigrid]] deps = ["CommonSolve", "LinearAlgebra", "LinearSolve", "Printf", "Reexport", "SparseArrays"] -git-tree-sha1 = "eb3dbbca423d8e8a1d4061b890f775dcd31b8d7c" +git-tree-sha1 = "327499cc7227323ef10a726156ab53eb7830aa1a" uuid = "2169fc97-5a83-5252-b627-83903c6c433c" -version = "0.6.0" +version = "1.0.0" [[deps.AliasTables]] deps = ["PtrArrays", "Random"] @@ -242,9 +242,9 @@ version = "1.1.1" [[deps.CairoMakie]] deps = ["CRC32c", "Cairo", "Cairo_jll", "Colors", "FileIO", "FreeType", "GeometryBasics", "LinearAlgebra", "Makie", "PrecompileTools"] -git-tree-sha1 = "a10fffc5ef0ab87666c0c4883e9116d516d76156" +git-tree-sha1 = "c1c90ea6bba91f769a8fc3ccda802e96620eb24c" uuid = "13f3f980-e62b-5c42-98c6-ff1f3baf88f0" -version = "0.13.3" +version = "0.13.4" [[deps.Cairo_jll]] deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "LZO_jll", "Libdl", "Pixman_jll", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"] @@ -515,9 +515,9 @@ version = "1.15.1" [[deps.DifferentiationInterface]] deps = ["ADTypes", "LinearAlgebra"] -git-tree-sha1 = "70e500f6d5d50091d87859251de7b8cd060c1cce" +git-tree-sha1 = "e41b6696c84291c4ad15f5f6eaf071b4dfbfda06" uuid = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" -version = "0.6.50" +version = "0.6.51" [deps.DifferentiationInterface.extensions] DifferentiationInterfaceChainRulesCoreExt = "ChainRulesCore" @@ -740,12 +740,6 @@ git-tree-sha1 = "acebe244d53ee1b461970f8910c235b259e772ef" uuid = "9aa1b823-49e4-5ca5-8b0f-3971ec8bab6a" version = "0.3.2" -[[deps.FastLapackInterface]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "cbf5edddb61a43669710cbc2241bc08b36d9e660" -uuid = "29a986be-02c6-4525-aec4-84b980013641" -version = "2.0.4" - [[deps.FastPower]] git-tree-sha1 = "df32f07f373f06260cd6af5371385b5ef85dd762" uuid = "a4df4552-cc26-4903-aec0-212e50a0e84b" @@ -995,9 +989,9 @@ version = "0.10.2+0" [[deps.HTTP]] deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "PrecompileTools", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] -git-tree-sha1 = "c67b33b085f6e2faf8bf79a61962e7339a81129c" +git-tree-sha1 = "f93655dc73d7a0b4a368e3c0bce296ae035ad76e" uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" -version = "1.10.15" +version = "1.10.16" [[deps.HarfBuzz_jll]] deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll"] @@ -1208,12 +1202,6 @@ git-tree-sha1 = "eac1206917768cb54957c65a615460d87b455fc1" uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8" version = "3.1.1+0" -[[deps.KLU]] -deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse_jll"] -git-tree-sha1 = "07649c499349dad9f08dde4243a4c597064663e9" -uuid = "ef3ab10e-7fda-4108-b977-705223b18434" -version = "0.6.0" - [[deps.KernelDensity]] deps = ["Distributions", "DocStringExtensions", "FFTW", "Interpolations", "StatsBase"] git-tree-sha1 = "7d703202e65efa1369de1279c162b915e245eed1" @@ -1360,24 +1348,12 @@ git-tree-sha1 = "27ecae93dd25ee0909666e6835051dd684cc035e" uuid = "e9f186c6-92d2-5b65-8a66-fee21dc1b490" version = "3.2.2+2" -[[deps.Libgcrypt_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgpg_error_jll"] -git-tree-sha1 = "d77592fa54ad343c5043b6f38a03f1a3c3959ffe" -uuid = "d4300ac3-e22c-5743-9152-c294e39db1e4" -version = "1.11.1+0" - [[deps.Libglvnd_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll", "Xorg_libXext_jll"] git-tree-sha1 = "ff3b4b9d35de638936a525ecd36e86a8bb919d11" uuid = "7e76a0d4-f3c7-5321-8279-8d96eeed0f29" version = "1.7.0+0" -[[deps.Libgpg_error_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "df37206100d39f79b3376afb6b9cee4970041c61" -uuid = "7add5ba3-2f88-524e-9cd5-f83b8a55f7b8" -version = "1.51.1+0" - [[deps.Libiconv_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] git-tree-sha1 = "be484f5c92fad0bd8acfef35fe017900b0b73809" @@ -1423,10 +1399,10 @@ deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" [[deps.LinearSolve]] -deps = ["ArrayInterface", "ChainRulesCore", "ConcreteStructs", "DocStringExtensions", "EnumX", "FastLapackInterface", "GPUArraysCore", "InteractiveUtils", "KLU", "Krylov", "LazyArrays", "Libdl", "LinearAlgebra", "MKL_jll", "Markdown", "PrecompileTools", "Preferences", "RecursiveFactorization", "Reexport", "SciMLBase", "SciMLOperators", "Setfield", "SparseArrays", "Sparspak", "StaticArraysCore", "UnPack"] -git-tree-sha1 = "f604ad2fbc9470b97404f63d7bc7b3c4762f7bfb" +deps = ["ArrayInterface", "ChainRulesCore", "ConcreteStructs", "DocStringExtensions", "EnumX", "GPUArraysCore", "InteractiveUtils", "Krylov", "LazyArrays", "Libdl", "LinearAlgebra", "MKL_jll", "Markdown", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "Setfield", "StaticArraysCore", "UnPack"] +git-tree-sha1 = "2bbbdcce6d80a4aed929365d0d97b15b264bb9e7" uuid = "7ed4a6bd-45f5-4d41-b270-4a48e9bafcae" -version = "2.39.1" +version = "3.7.2" [deps.LinearSolve.extensions] LinearSolveBandedMatricesExt = "BandedMatrices" @@ -1435,13 +1411,16 @@ version = "2.39.1" LinearSolveCUDSSExt = "CUDSS" LinearSolveEnzymeExt = "EnzymeCore" LinearSolveFastAlmostBandedMatricesExt = "FastAlmostBandedMatrices" + LinearSolveFastLapackInterfaceExt = "FastLapackInterface" LinearSolveHYPREExt = "HYPRE" LinearSolveIterativeSolversExt = "IterativeSolvers" LinearSolveKernelAbstractionsExt = "KernelAbstractions" LinearSolveKrylovKitExt = "KrylovKit" LinearSolveMetalExt = "Metal" - LinearSolvePardisoExt = "Pardiso" - LinearSolveRecursiveArrayToolsExt = "RecursiveArrayTools" + LinearSolvePardisoExt = ["Pardiso", "SparseArrays"] + LinearSolveRecursiveFactorizationExt = "RecursiveFactorization" + LinearSolveSparseArraysExt = "SparseArrays" + LinearSolveSparspakExt = ["SparseArrays", "Sparspak"] [deps.LinearSolve.weakdeps] BandedMatrices = "aae01518-5342-5314-be14-df237901396f" @@ -1450,13 +1429,16 @@ version = "2.39.1" CUDSS = "45b445bb-4962-46a0-9369-b4df9d0f772e" EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" FastAlmostBandedMatrices = "9d29842c-ecb8-4973-b1e9-a27b1157504e" + FastLapackInterface = "29a986be-02c6-4525-aec4-84b980013641" HYPRE = "b5ffcf37-a2bd-41ab-a3da-4bd9bc8ad771" IterativeSolvers = "42fd0dbc-a981-5370-80f2-aaf504508153" KernelAbstractions = "63c18a36-062a-441e-b654-da1e3ab1ce7c" KrylovKit = "0b1a1467-8014-51b9-945f-bf0ae24f4b77" Metal = "dde4c033-4e86-420c-a63e-0dd931031962" Pardiso = "46dd5b70-b6fb-5a00-ae2d-e8fea33afaf2" - RecursiveArrayTools = "731186ca-8d62-57ce-b412-fbd966d074cd" + RecursiveFactorization = "f2c3362d-daeb-58d1-803e-2bc74f2840b4" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + Sparspak = "e56a9233-b9d6-4f03-8d0f-1825330902ac" [[deps.LogExpFunctions]] deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] @@ -1497,7 +1479,6 @@ weakdeps = ["ChainRulesCore", "ForwardDiff", "SpecialFunctions"] [[deps.MINPACK]] deps = ["LinearAlgebra", "Printf"] git-tree-sha1 = "f52ca94d3349e0f7da6e88a03b15dabf3d305ca4" -pinned = true uuid = "4854310b-de5a-5eb6-a2a5-c1dee2bd17f9" version = "1.2.0" @@ -1546,9 +1527,9 @@ version = "0.5.15" [[deps.Makie]] deps = ["Animations", "Base64", "CRC32c", "ColorBrewer", "ColorSchemes", "ColorTypes", "Colors", "Contour", "Dates", "DelaunayTriangulation", "Distributions", "DocStringExtensions", "Downloads", "FFMPEG_jll", "FileIO", "FilePaths", "FixedPointNumbers", "Format", "FreeType", "FreeTypeAbstraction", "GeometryBasics", "GridLayoutBase", "ImageBase", "ImageIO", "InteractiveUtils", "Interpolations", "IntervalSets", "InverseFunctions", "Isoband", "KernelDensity", "LaTeXStrings", "LinearAlgebra", "MacroTools", "MakieCore", "Markdown", "MathTeXEngine", "Observables", "OffsetArrays", "PNGFiles", "Packing", "PlotUtils", "PolygonOps", "PrecompileTools", "Printf", "REPL", "Random", "RelocatableFolders", "Scratch", "ShaderAbstractions", "Showoff", "SignedDistanceFields", "SparseArrays", "Statistics", "StatsBase", "StatsFuns", "StructArrays", "TriplotBase", "UnicodeFun", "Unitful"] -git-tree-sha1 = "6c286ee413da382fd2734992a08cfdb4e13f8acf" +git-tree-sha1 = "0318d174aa9ec593ddf6dc340b434657a8f1e068" uuid = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a" -version = "0.22.3" +version = "0.22.4" [[deps.MakieCore]] deps = ["ColorTypes", "GeometryBasics", "IntervalSets", "Observables"] @@ -1578,9 +1559,9 @@ version = "0.1.2" [[deps.MathTeXEngine]] deps = ["AbstractTrees", "Automa", "DataStructures", "FreeTypeAbstraction", "GeometryBasics", "LaTeXStrings", "REPL", "RelocatableFolders", "UnicodeFun"] -git-tree-sha1 = "f45c8916e8385976e1ccd055c9874560c257ab13" +git-tree-sha1 = "f5a6805fb46c0285991009b526ec6fae43c6dec2" uuid = "0a4f8689-d25c-4efe-a92b-7142dfc1aa53" -version = "0.6.2" +version = "0.6.3" [[deps.MaybeInplace]] deps = ["ArrayInterface", "LinearAlgebra", "MacroTools"] @@ -1893,9 +1874,9 @@ version = "10.42.0+1" [[deps.PDMats]] deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "48566789a6d5f6492688279e22445002d171cf76" +git-tree-sha1 = "0e1340b5d98971513bddaa6bbed470670cebbbfe" uuid = "90014a1f-27ba-587c-ab20-58faa44d9150" -version = "0.11.33" +version = "0.11.34" [[deps.PETSc]] deps = ["Libdl", "LinearAlgebra", "MPI", "MPIPreferences", "PETSc_jll", "Pkg", "SparseArrays"] @@ -2242,9 +2223,9 @@ version = "0.2.0" [[deps.SciMLBase]] deps = ["ADTypes", "Accessors", "ArrayInterface", "CommonSolve", "ConstructionBase", "Distributed", "DocStringExtensions", "EnumX", "FunctionWrappersWrappers", "IteratorInterfaceExtensions", "LinearAlgebra", "Logging", "Markdown", "Moshi", "PrecompileTools", "Preferences", "Printf", "RecipesBase", "RecursiveArrayTools", "Reexport", "RuntimeGeneratedFunctions", "SciMLOperators", "SciMLStructures", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface"] -git-tree-sha1 = "d1fea0667570b46bc984da28315519d1c42023f9" +git-tree-sha1 = "c4ce89e19f2a220e34c0f377fb41516b642ec899" uuid = "0bca4576-84f4-4d90-8ffe-ffa030f20462" -version = "2.82.1" +version = "2.83.1" [deps.SciMLBase.extensions] SciMLBaseChainRulesCoreExt = "ChainRulesCore" @@ -2390,9 +2371,9 @@ version = "1.10.0" [[deps.SparseConnectivityTracer]] deps = ["ADTypes", "DocStringExtensions", "FillArrays", "LinearAlgebra", "Random", "SparseArrays"] -git-tree-sha1 = "9603842a7a68464a066b5754e89fc7f810db8ae7" +git-tree-sha1 = "15dd194e46a5e74b6f7f361e9eb3ed869617ccd5" uuid = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" -version = "0.6.15" +version = "0.6.16" [deps.SparseConnectivityTracer.extensions] SparseConnectivityTracerDataInterpolationsExt = "DataInterpolations" @@ -2430,9 +2411,9 @@ version = "2.24.0" [[deps.SparseMatrixColorings]] deps = ["ADTypes", "DocStringExtensions", "LinearAlgebra", "Random", "SparseArrays"] -git-tree-sha1 = "3abb70c9055dd01344fe2992b7909928ab60c1c5" +git-tree-sha1 = "0582fd1410a01a667a2a2a79cdc98a7c478d11d8" uuid = "0a514795-09f3-496d-8182-132a7b665d35" -version = "0.4.17" +version = "0.4.18" [deps.SparseMatrixColorings.extensions] SparseMatrixColoringsCliqueTreesExt = "CliqueTrees" @@ -2442,12 +2423,6 @@ version = "0.4.17" CliqueTrees = "60701a23-6482-424a-84db-faee86b9b1f8" Colors = "5ae59095-9a9b-59fe-a467-6f913c188581" -[[deps.Sparspak]] -deps = ["Libdl", "LinearAlgebra", "Logging", "OffsetArrays", "Printf", "SparseArrays", "Test"] -git-tree-sha1 = "342cf4b449c299d8d1ceaf00b7a49f4fbc7940e7" -uuid = "e56a9233-b9d6-4f03-8d0f-1825330902ac" -version = "0.3.9" - [[deps.SpecialFunctions]] deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] git-tree-sha1 = "64cca0c26b4f31ba18f13f6c12af7c85f478cfde" @@ -2603,10 +2578,10 @@ uuid = "fb77eaff-e24c-56d4-86b1-d163f2edb164" version = "5.2.2+0" [[deps.SymbolicIndexingInterface]] -deps = ["Accessors", "ArrayInterface", "RuntimeGeneratedFunctions", "StaticArraysCore"] -git-tree-sha1 = "d6c04e26aa1c8f7d144e1a8c47f1c73d3013e289" +deps = ["Accessors", "ArrayInterface", "PrettyTables", "RuntimeGeneratedFunctions", "StaticArraysCore"] +git-tree-sha1 = "7530e17b6ac652b009966f8ad53371a4ffd273f2" uuid = "2efcf032-c050-4f8e-a9bb-153293bab1f5" -version = "0.3.38" +version = "0.3.39" [[deps.SymbolicLimits]] deps = ["SymbolicUtils"] @@ -2615,10 +2590,10 @@ uuid = "19f23fe9-fdab-4a78-91af-e7b7767979c3" version = "0.2.2" [[deps.SymbolicUtils]] -deps = ["AbstractTrees", "ArrayInterface", "Bijections", "ChainRulesCore", "Combinatorics", "ConstructionBase", "DataStructures", "DocStringExtensions", "DynamicPolynomials", "ExproniconLite", "LinearAlgebra", "MultivariatePolynomials", "NaNMath", "Setfield", "SparseArrays", "SpecialFunctions", "StaticArrays", "SymbolicIndexingInterface", "TaskLocalValues", "TermInterface", "TimerOutputs", "Unityper", "WeakValueDicts"] -git-tree-sha1 = "ca5929df933a8b7272bc7f01dcd14b2d976c56e2" +deps = ["AbstractTrees", "ArrayInterface", "Bijections", "ChainRulesCore", "Combinatorics", "ConstructionBase", "DataStructures", "DocStringExtensions", "DynamicPolynomials", "ExproniconLite", "LinearAlgebra", "MultivariatePolynomials", "NaNMath", "Setfield", "SparseArrays", "SpecialFunctions", "StaticArrays", "SymbolicIndexingInterface", "TaskLocalValues", "TermInterface", "TimerOutputs", "Unityper"] +git-tree-sha1 = "516a23c7f8f5204aa110b2447c77df1d0440ec7d" uuid = "d1185830-fcd6-423d-90d6-eec64667417b" -version = "3.25.1" +version = "3.26.0" [deps.SymbolicUtils.extensions] SymbolicUtilsLabelledArraysExt = "LabelledArrays" @@ -2630,9 +2605,9 @@ version = "3.25.1" [[deps.Symbolics]] deps = ["ADTypes", "ArrayInterface", "Bijections", "CommonWorldInvalidations", "ConstructionBase", "DataStructures", "DiffRules", "Distributions", "DocStringExtensions", "DomainSets", "DynamicPolynomials", "LaTeXStrings", "Latexify", "Libdl", "LinearAlgebra", "LogExpFunctions", "MacroTools", "Markdown", "NaNMath", "OffsetArrays", "PrecompileTools", "Primes", "RecipesBase", "Reexport", "RuntimeGeneratedFunctions", "SciMLBase", "Setfield", "SparseArrays", "SpecialFunctions", "StaticArraysCore", "SymbolicIndexingInterface", "SymbolicLimits", "SymbolicUtils", "TermInterface"] -git-tree-sha1 = "12a14cf31a2b05acd548965c435d4b4e4884b4ad" +git-tree-sha1 = "e46dbf646bc3944c22a37745361c2e0a94f81d66" uuid = "0c5d862f-8b57-4792-8d23-62f2024744c7" -version = "6.37.1" +version = "6.38.0" [deps.Symbolics.extensions] SymbolicsForwardDiffExt = "ForwardDiff" @@ -2795,11 +2770,6 @@ git-tree-sha1 = "8351f8d73d7e880bfc042a8b6922684ebeafb35c" uuid = "19fa3120-7c27-5ec5-8db8-b0b0aa330d6f" version = "0.2.0" -[[deps.WeakValueDicts]] -git-tree-sha1 = "98528c2610a5479f091d470967a25becfd83edd0" -uuid = "897b6980-f191-5a31-bcb0-bf3c4585e0c1" -version = "0.1.0" - [[deps.Weave]] deps = ["Base64", "Dates", "Highlights", "JSON", "Markdown", "Mustache", "Pkg", "Printf", "REPL", "RelocatableFolders", "Requires", "Serialization", "YAML"] git-tree-sha1 = "092217eb5443926d200ae9325f103906efbb68b1" @@ -2824,12 +2794,6 @@ git-tree-sha1 = "b8b243e47228b4a3877f1dd6aee0c5d56db7fcf4" uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" version = "2.13.6+1" -[[deps.XSLT_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgcrypt_jll", "Libgpg_error_jll", "Libiconv_jll", "XML2_jll", "Zlib_jll"] -git-tree-sha1 = "82df486bfc568c29de4a207f7566d6716db6377c" -uuid = "aed1982a-8fda-507f-9586-7b0439959a61" -version = "1.1.43+0" - [[deps.XZ_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] git-tree-sha1 = "fee71455b0aaa3440dfdd54a9a36ccef829be7d4" @@ -2844,15 +2808,15 @@ version = "1.8.6+3" [[deps.Xorg_libXau_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "e9216fdcd8514b7072b43653874fd688e4c6c003" +git-tree-sha1 = "aa1261ebbac3ccc8d16558ae6799524c450ed16b" uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec" -version = "1.0.12+0" +version = "1.0.13+0" [[deps.Xorg_libXdmcp_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "89799ae67c17caa5b3b5a19b8469eeee474377db" +git-tree-sha1 = "52858d64353db33a56e13c341d7bf44cd0d7b309" uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05" -version = "1.1.5+0" +version = "1.1.6+0" [[deps.Xorg_libXext_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] @@ -2866,17 +2830,11 @@ git-tree-sha1 = "a490c6212a0e90d2d55111ac956f7c4fa9c277a6" uuid = "ea2f1a96-1ddc-540d-b46f-429655e07cfa" version = "0.9.11+1" -[[deps.Xorg_libpthread_stubs_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "c57201109a9e4c0585b208bb408bc41d205ac4e9" -uuid = "14d82f49-176c-5ed1-bb49-ad3f5cbd8c74" -version = "0.1.2+0" - [[deps.Xorg_libxcb_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "XSLT_jll", "Xorg_libXau_jll", "Xorg_libXdmcp_jll", "Xorg_libpthread_stubs_jll"] -git-tree-sha1 = "1a74296303b6524a0472a8cb12d3d87a78eb3612" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libXau_jll", "Xorg_libXdmcp_jll"] +git-tree-sha1 = "bfcaf7ec088eaba362093393fe11aa141fa15422" uuid = "c7cfdc94-dc32-55de-ac96-5a1b8d977c5b" -version = "1.17.0+3" +version = "1.17.1+0" [[deps.Xorg_xtrans_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] diff --git a/benchmarks/NonlinearProblem/Project.toml b/benchmarks/NonlinearProblem/Project.toml index 3d1ebff95..3a026585b 100644 --- a/benchmarks/NonlinearProblem/Project.toml +++ b/benchmarks/NonlinearProblem/Project.toml @@ -30,7 +30,7 @@ Sundials = "c3572dad-4567-51f8-b174-8c6c989267f4" Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7" [compat] -AlgebraicMultigrid = "0.6" +AlgebraicMultigrid = "0.6, 1" BenchmarkTools = "1" CairoMakie = "0.12, 0.13" DiffEqBase = "6.142" @@ -41,7 +41,7 @@ IncompleteLU = "0.2" LaTeXStrings = "1" LineSearches = "7" LinearSolve = "2, 3" -MINPACK = "1.2" +MINPACK = "< 1.3" NLsolve = "4.5" NonlinearProblemLibrary = "0.1" NonlinearSolve = "4" From 3900d2486ab843fe890c82dbfa8a499589a8125a Mon Sep 17 00:00:00 2001 From: Avik Pal Date: Mon, 14 Apr 2025 12:10:17 -0400 Subject: [PATCH 14/39] fix: more options --- .gitignore | 3 +- benchmarks/NonlinearProblem/Manifest.toml | 4 +- benchmarks/NonlinearProblem/Project.toml | 3 ++ benchmarks/NonlinearProblem/bruss.jmd | 42 +++++++++++++------ .../nonlinear_solver_23_tests.jmd | 40 +++++++++++++----- 5 files changed, 66 insertions(+), 26 deletions(-) diff --git a/.gitignore b/.gitignore index a74426f43..fc4ca3c45 100644 --- a/.gitignore +++ b/.gitignore @@ -22,4 +22,5 @@ pdf/ notebook/ markdown/ -.vscode \ No newline at end of file +.vscode +*.html diff --git a/benchmarks/NonlinearProblem/Manifest.toml b/benchmarks/NonlinearProblem/Manifest.toml index 7b47ee9ef..d788cbece 100644 --- a/benchmarks/NonlinearProblem/Manifest.toml +++ b/benchmarks/NonlinearProblem/Manifest.toml @@ -2223,9 +2223,9 @@ version = "0.2.0" [[deps.SciMLBase]] deps = ["ADTypes", "Accessors", "ArrayInterface", "CommonSolve", "ConstructionBase", "Distributed", "DocStringExtensions", "EnumX", "FunctionWrappersWrappers", "IteratorInterfaceExtensions", "LinearAlgebra", "Logging", "Markdown", "Moshi", "PrecompileTools", "Preferences", "Printf", "RecipesBase", "RecursiveArrayTools", "Reexport", "RuntimeGeneratedFunctions", "SciMLOperators", "SciMLStructures", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface"] -git-tree-sha1 = "c4ce89e19f2a220e34c0f377fb41516b642ec899" +git-tree-sha1 = "f2db9ab9d33130df3be35be9438da51a3416d528" uuid = "0bca4576-84f4-4d90-8ffe-ffa030f20462" -version = "2.83.1" +version = "2.84.0" [deps.SciMLBase.extensions] SciMLBaseChainRulesCoreExt = "ChainRulesCore" diff --git a/benchmarks/NonlinearProblem/Project.toml b/benchmarks/NonlinearProblem/Project.toml index 3a026585b..6871a8424 100644 --- a/benchmarks/NonlinearProblem/Project.toml +++ b/benchmarks/NonlinearProblem/Project.toml @@ -59,3 +59,6 @@ StableRNGs = "1" StaticArrays = "1" Sundials = "4.22" Symbolics = "5, 6" + +[sources] +NonlinearSolve = {url = "https://github.com/SciML/NonlinearSolve.jl", rev = "ap/petsc_debug"} diff --git a/benchmarks/NonlinearProblem/bruss.jmd b/benchmarks/NonlinearProblem/bruss.jmd index c3007cfee..6b50e5be8 100644 --- a/benchmarks/NonlinearProblem/bruss.jmd +++ b/benchmarks/NonlinearProblem/bruss.jmd @@ -360,13 +360,13 @@ solvers_scaling = [ (; pkg = :nonlinearsolve, sparsity = :exact, name = "NR (Exact Sparsity)", alg = NewtonRaphson()), (; pkg = :wrapper, sparsity = :none, name = "NR [NLsolve.jl]", alg = NLsolveJL(; method = :newton, autodiff = :forward)), (; pkg = :wrapper, sparsity = :none, name = "Mod. NR [Sundials]", alg = KINSOL()), - (; pkg = :wrapper, sparsity = :none, name = "NR [PETSc] (No Sparsity)", alg = PETScSNES(; snes_type = "newtonls")), - (; pkg = :wrapper, sparsity = :exact, name = "NR [PETSc] (Exact Sparsity)", alg = PETScSNES(; snes_type = "newtonls")), + (; pkg = :wrapper, sparsity = :none, name = "NR [PETSc] (No Sparsity)", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", autodiff = missing)), + (; pkg = :wrapper, sparsity = :exact, name = "NR [PETSc] (Exact Sparsity)", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic")), (; pkg = :nonlinearsolve, sparsity = :none, name = "TR (No Sparsity)", alg = TrustRegion(; radius_update_scheme = RUS.NLsolve)), (; pkg = :nonlinearsolve, sparsity = :exact, name = "TR (Exact Sparsity)", alg = TrustRegion(; radius_update_scheme = RUS.NLsolve)), (; pkg = :wrapper, sparsity = :none, name = "TR [NLsolve.jl]", alg = NLsolveJL(; autodiff = :forward)), - (; pkg = :wrapper, sparsity = :none, name = "TR [PETSc] (No Sparsity)", alg = PETScSNES(; snes_type = "newtontr")), + (; pkg = :wrapper, sparsity = :none, name = "TR [PETSc] (No Sparsity)", alg = PETScSNES(; snes_type = "newtontr", autodiff = missing)), (; pkg = :wrapper, sparsity = :exact, name = "TR [PETSc] (Exact Sparsity)", alg = PETScSNES(; snes_type = "newtontr")), (; pkg = :wrapper, sparsity = :none, name = "Mod. Powell [MINPACK]", alg = CMINPACK()), @@ -405,7 +405,7 @@ for (i, N) in enumerate(Ns) (alg isa GeneralizedFirstOrderAlgorithm && alg.name == :TrustRegion && N > 64) || (alg isa NLsolveJL && N > 128 && alg.method == :newton) || (alg isa GeneralizedFirstOrderAlgorithm && alg.name == :NewtonRaphson && N > 128 && ptype == :none) || - (alg isa PETScSNES && N > 64 && ptype == :exact) + (alg isa PETScSNES && N > 64) # The last benchmark failed so skip this too runtimes_scaling[j, i] = NaN @warn "$(name): Would Have Timed out" @@ -551,15 +551,23 @@ end Ns = 2 .^ (2:7) solvers_scaling_jacobian_free = [ - (; pkg = :nonlinearsolve, name = "Newton Krylov", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES())), - (; pkg = :nonlinearsolve, name = "Newton Krylov (ILU)", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES(; precs = incompletelu), concrete_jac = true)), - (; pkg = :nonlinearsolve, name = "Newton Krylov (AMG)", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES(; precs = algebraicmultigrid), concrete_jac = true)), - (; pkg = :nonlinearsolve, name = "Newton Krylov (AMG Jacobi)", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES(; precs = algebraicmultigrid_jacobi), concrete_jac = true)), - (; pkg = :nonlinearsolve, name = "TR Krylov", alg = TrustRegion(; linsolve = KrylovJL_GMRES())), - (; pkg = :nonlinearsolve, name = "TR Krylov (ILU)", alg = TrustRegion(; linsolve = KrylovJL_GMRES(; precs = incompletelu), concrete_jac = true)), - (; pkg = :nonlinearsolve, name = "TR Krylov (AMG)", alg = TrustRegion(; linsolve = KrylovJL_GMRES(; precs = algebraicmultigrid), concrete_jac = true)), - (; pkg = :nonlinearsolve, name = "TR Krylov (AMG Jacobi)", alg = TrustRegion(; linsolve = KrylovJL_GMRES(; precs = algebraicmultigrid_jacobi), concrete_jac = true)), - (; pkg = :wrapper, name = "Newton Krylov [Sundials]", alg = KINSOL(; linear_solver = :GMRES)), + (; pkg = :nonlinearsolve, name = "Newton Krylov", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES())), + (; pkg = :nonlinearsolve, name = "Newton Krylov (ILU)", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES(; precs = incompletelu), concrete_jac = true)), + (; pkg = :nonlinearsolve, name = "Newton Krylov (AMG)", alg = NewtonRaphson(; linsolve = KrylovJL_CG(; precs = algebraicmultigrid), concrete_jac = true)), + (; pkg = :nonlinearsolve, name = "Newton Krylov (AMG Jacobi)", alg = NewtonRaphson(; linsolve = KrylovJL_CG(; precs = algebraicmultigrid_jacobi), concrete_jac = true)), + (; pkg = :wrapper, name = "Newton Krylov [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", snes_mf = true)), + (; pkg = :wrapper, name = "Newton Krylov (ILU) [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", pc_type = "ilu")), + (; pkg = :wrapper, name = "Newton Krylov (AMG) [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "cg", pc_type = "gamg")), + (; pkg = :wrapper, name = "Newton Krylov (AMG Jacobi) [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "cg", pc_type = "gamg", mg_levels_ksp_type = "richardson", mg_levels_pc_type = "jacobi")), + (; pkg = :nonlinearsolve, name = "TR Krylov", alg = TrustRegion(; linsolve = KrylovJL_GMRES())), + (; pkg = :nonlinearsolve, name = "TR Krylov (ILU)", alg = TrustRegion(; linsolve = KrylovJL_GMRES(; precs = incompletelu), concrete_jac = true)), + (; pkg = :nonlinearsolve, name = "TR Krylov (AMG)", alg = TrustRegion(; linsolve = KrylovJL_CG(; precs = algebraicmultigrid), concrete_jac = true)), + (; pkg = :nonlinearsolve, name = "TR Krylov (AMG Jacobi)", alg = TrustRegion(; linsolve = KrylovJL_CG(; precs = algebraicmultigrid_jacobi), concrete_jac = true)), + (; pkg = :wrapper, name = "TR Krylov [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", snes_mf = true)), + (; pkg = :wrapper, name = "TR Krylov (ILU) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", pc_type = "ilu")), + (; pkg = :wrapper, name = "TR Krylov (AMG) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "cg", pc_type = "gamg")), + (; pkg = :wrapper, name = "TR Krylov (AMG Jacobi) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "cg", pc_type = "gamg", mg_levels_ksp_type = "richardson", mg_levels_pc_type = "jacobi")), + (; pkg = :wrapper, name = "Newton Krylov [Sundials]", alg = KINSOL(; linear_solver = :GMRES)), ] runtimes_scaling = zeros(length(solvers_scaling_jacobian_free), length(Ns)) .- 1 @@ -695,16 +703,24 @@ exploit sparsity will automatically do so. solvers_all = [ (; pkg = :nonlinearsolve, name = "Default PolyAlg", solver = Dict(:alg => FastShortcutNonlinearPolyalg())), (; pkg = :nonlinearsolve, name = "RobustMultiNewton (GMRES)", solver = Dict(:alg => RobustMultiNewton(; linsolve = KrylovJL_GMRES()))), + (; pkg = :nonlinearsolve, name = "Newton Raphson", solver = Dict(:alg => NewtonRaphson(; linsolve = nothing))), (; pkg = :nonlinearsolve, name = "Newton Krylov", solver = Dict(:alg => NewtonRaphson(; linsolve = KrylovJL_GMRES()))), (; pkg = :nonlinearsolve, name = "Trust Region", solver = Dict(:alg => TrustRegion())), (; pkg = :nonlinearsolve, name = "TR Krylov", solver = Dict(:alg => TrustRegion(; linsolve = KrylovJL_GMRES()))), + (; pkg = :wrapper, name = "NR [NLsolve.jl]", solver = Dict(:alg => NLsolveJL(; method = :newton, autodiff = :forward))), (; pkg = :wrapper, name = "TR [NLsolve.jl]", solver = Dict(:alg => NLsolveJL(; autodiff = :forward))), + (; pkg = :wrapper, name = "NR [Sundials]", solver = Dict(:alg => KINSOL())), (; pkg = :wrapper, name = "Newton Krylov [Sundials]", solver = Dict(:alg => KINSOL(; linear_solver = :GMRES))), (; pkg = :wrapper, name = "Mod. Powell [MINPACK]", solver = Dict(:alg => CMINPACK())), + + (; pkg = :wrapper, name = "NR [PETSc]", solver = Dict(:alg => PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", autodiff = missing))), + (; pkg = :wrapper, name = "TR [PETSc]", solver = Dict(:alg => PETScSNES(; snes_type = "newtontr", autodiff = missing))), + (; pkg = :wrapper, name = "Newton Krylov [PETSc]", solver = Dict(:alg => PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", autodiff = missing, snes_mf = true))), + (; pkg = :wrapper, name = "TR Krylov [PETSc]", solver = Dict(:alg => PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", autodiff = missing, snes_mf = true))), ]; ``` diff --git a/benchmarks/NonlinearProblem/nonlinear_solver_23_tests.jmd b/benchmarks/NonlinearProblem/nonlinear_solver_23_tests.jmd index 1cca33fcb..d9c84d3a7 100644 --- a/benchmarks/NonlinearProblem/nonlinear_solver_23_tests.jmd +++ b/benchmarks/NonlinearProblem/nonlinear_solver_23_tests.jmd @@ -21,12 +21,12 @@ Furthermore, for NonlinearSolve.jl's Newton Raphson method we try the following - `BackTracking` and for NonlinearSolve.jl's Trust Region we try the following Radius Update schemes (in addition to the default): -- `NLsolve` -- `NocedalWright` -- `Hei` -- `Yuan` -- `Bastin` -- `Fan` +- `NLsolve` +- `NocedalWright` +- `Hei` +- `Yuan` +- `Bastin` +- `Fan` and finally for NonlinearSolve.jl's Levenberg-Marquardt method why try using both the default `α_geodesic` value (`0.75`) and a modified value (`0.5`), and also with and without setting the `CholeskyFactorization` linear solver. For each benchmarked problem, the second, third, and fourth plots compares the performance of NonlinearSolve's Newton Raphson, Trust Region, and Levenberg-Marquardt methods, respectively. The first plot compares the best methods from each of these categories to the various methods available from other packages. At the end of the benchmarks, we print a summary table of which solvers succeeded for which problems. @@ -38,7 +38,7 @@ Fetch required packages. ```julia using NonlinearSolve, LinearSolve, StaticArrays, Sundials, Setfield, BenchmarkTools, LinearAlgebra, DiffEqDevTools, NonlinearProblemLibrary, CairoMakie, - RecursiveFactorization + RecursiveFactorization, Enzyme import PolyesterForwardDiff, MINPACK, NLsolve, LineSearches const RUS = RadiusUpdateSchemes; @@ -92,13 +92,34 @@ reltols = 1.0 ./ 10.0 .^ (4:12); Prepares various helper functions for benchmarking a specific problem. ```julia +function set_ad_chunksize(solvers, u0) + ck = NonlinearSolve.pickchunksize(u0) + for i in eachindex(solvers) + @set! solvers[i].solver[:alg] = __set_ad_chunksize(solvers[i].solver[:alg], ck) + end + return solvers +end + +function __set_ad_chunksize(solver::GeneralizedFirstOrderAlgorithm, ck) + ad = AutoPolyesterForwardDiff(; chunksize = ck) + return GeneralizedFirstOrderAlgorithm(; solver.descent, solver.linesearch, + solver.trustregion, jvp_autodiff = ad, solver.max_shrink_times, solver.vjp_autodiff, + concrete_jac = solver.concrete_jac, name = solver.name) +end +function __set_ad_chunksize(solver::NonlinearSolvePolyAlgorithm, ck) + algs = [__set_ad_chunksize(alg, ck) for alg in solver.algs] + return NonlinearSolvePolyAlgorithm(algs; solver.start_index) +end +__set_ad_chunksize(solver, ck) = solver + # Benchmarks a specific problem, checks which solvers can solve it and their performance function benchmark_problem!(prob_name; solver_tracker=solver_tracker) # Finds the problem and the true solution. prob = nlprob_23_testcases[prob_name] # Finds the solvers that can solve the problem - successful_solvers = filter(Base.Fix1(check_solver, prob), solvers_all); + solvers_concrete = set_ad_chunksize(solvers_all, prob.prob.u0); + successful_solvers = filter(solver -> check_solver(prob, solver), solvers_concrete); push!(solver_tracker, prob_name => successful_solvers); # Handles the non-general cases. @@ -161,12 +182,11 @@ function check_solver(prob, solver) return true end -# Adds an additional, selected, solver to the general solver set. # Adds an additional, selected, solver to the general solver set. function add_solver!(solvers_general, selected_solver_name, additional_solver_set, wp) if isnothing(selected_solver_name) isempty(wp.wps) && return - selected_idx = argmin(median.(getfield.(wp.wps, :times))) + selected_idx = argmin(median.(getfield.(wp.wps, :times))) else selected_idx = findfirst(s -> s.name==selected_solver_name, additional_solver_set) isnothing(selected_solver) && error("The $(selected_solver_name) was designated to \ From 544cc320b544b5b12a7f7b739d991d77e5457110 Mon Sep 17 00:00:00 2001 From: Avik Pal Date: Tue, 15 Apr 2025 18:43:54 -0400 Subject: [PATCH 15/39] fix: multiple fixes --- benchmarks/NonlinearProblem/Manifest.toml | 30 ++++++------ benchmarks/NonlinearProblem/Project.toml | 6 ++- benchmarks/NonlinearProblem/bruss.jmd | 57 ++++++++++++++--------- 3 files changed, 53 insertions(+), 40 deletions(-) diff --git a/benchmarks/NonlinearProblem/Manifest.toml b/benchmarks/NonlinearProblem/Manifest.toml index d788cbece..62d2505aa 100644 --- a/benchmarks/NonlinearProblem/Manifest.toml +++ b/benchmarks/NonlinearProblem/Manifest.toml @@ -2,7 +2,7 @@ julia_version = "1.10.9" manifest_format = "2.0" -project_hash = "cd9959830f6db746c990086c85b190f684bf136a" +project_hash = "dfc256be508dd699050df95ae79fddc9918030f6" [[deps.ADTypes]] git-tree-sha1 = "e2478490447631aedba0823d4d7a80b2cc8cdb32" @@ -1119,9 +1119,9 @@ weakdeps = ["Unitful"] [[deps.IntervalArithmetic]] deps = ["CRlibm_jll", "LinearAlgebra", "MacroTools", "OpenBLASConsistentFPCSR_jll", "RoundingEmulator"] -git-tree-sha1 = "5aad168b75fc3b6b25e99feb1e6e3168d41e4c08" +git-tree-sha1 = "2c337f943879911c74bb62c927b65b9546552316" uuid = "d1acc4aa-44c8-5952-acd4-ba5d80a2a253" -version = "0.22.28" +version = "0.22.29" weakdeps = ["DiffRules", "ForwardDiff", "IntervalSets", "RecipesBase"] [deps.IntervalArithmetic.extensions] @@ -1928,9 +1928,9 @@ version = "0.12.3" [[deps.Parsers]] deps = ["Dates", "PrecompileTools", "UUIDs"] -git-tree-sha1 = "8489905bcdbcfac64d1daa51ca07c0d8f0283821" +git-tree-sha1 = "44f6c1f38f77cafef9450ff93946c53bd9ca16ff" uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" -version = "2.8.1" +version = "2.8.2" [[deps.Pixman_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LLVMOpenMP_jll", "Libdl"] @@ -2425,9 +2425,9 @@ version = "0.4.18" [[deps.SpecialFunctions]] deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] -git-tree-sha1 = "64cca0c26b4f31ba18f13f6c12af7c85f478cfde" +git-tree-sha1 = "41852b8679f78c8d8961eeadc8f62cef861a52e3" uuid = "276daf66-3868-5448-9aa4-cd146d93841b" -version = "2.5.0" +version = "2.5.1" weakdeps = ["ChainRulesCore"] [deps.SpecialFunctions.extensions] @@ -2591,9 +2591,9 @@ version = "0.2.2" [[deps.SymbolicUtils]] deps = ["AbstractTrees", "ArrayInterface", "Bijections", "ChainRulesCore", "Combinatorics", "ConstructionBase", "DataStructures", "DocStringExtensions", "DynamicPolynomials", "ExproniconLite", "LinearAlgebra", "MultivariatePolynomials", "NaNMath", "Setfield", "SparseArrays", "SpecialFunctions", "StaticArrays", "SymbolicIndexingInterface", "TaskLocalValues", "TermInterface", "TimerOutputs", "Unityper"] -git-tree-sha1 = "516a23c7f8f5204aa110b2447c77df1d0440ec7d" +git-tree-sha1 = "2c9879cd67d1bb2f2989669e5849639bb4d3c792" uuid = "d1185830-fcd6-423d-90d6-eec64667417b" -version = "3.26.0" +version = "3.26.1" [deps.SymbolicUtils.extensions] SymbolicUtilsLabelledArraysExt = "LabelledArrays" @@ -2802,9 +2802,9 @@ version = "5.8.1+0" [[deps.Xorg_libX11_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxcb_jll", "Xorg_xtrans_jll"] -git-tree-sha1 = "9dafcee1d24c4f024e7edc92603cedba72118283" +git-tree-sha1 = "b5899b25d17bf1889d25906fb9deed5da0c15b3b" uuid = "4f6342f7-b3d2-589e-9d20-edeb45f2b2bc" -version = "1.8.6+3" +version = "1.8.12+0" [[deps.Xorg_libXau_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -2820,15 +2820,15 @@ version = "1.1.6+0" [[deps.Xorg_libXext_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] -git-tree-sha1 = "d7155fea91a4123ef59f42c4afb5ab3b4ca95058" +git-tree-sha1 = "a4c0ee07ad36bf8bbce1c3bb52d21fb1e0b987fb" uuid = "1082639a-0dae-5f34-9b06-72781eeb8cb3" -version = "1.3.6+3" +version = "1.3.7+0" [[deps.Xorg_libXrender_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] -git-tree-sha1 = "a490c6212a0e90d2d55111ac956f7c4fa9c277a6" +git-tree-sha1 = "7ed9347888fac59a618302ee38216dd0379c480d" uuid = "ea2f1a96-1ddc-540d-b46f-429655e07cfa" -version = "0.9.11+1" +version = "0.9.12+0" [[deps.Xorg_libxcb_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libXau_jll", "Xorg_libXdmcp_jll"] diff --git a/benchmarks/NonlinearProblem/Project.toml b/benchmarks/NonlinearProblem/Project.toml index 6871a8424..09715df26 100644 --- a/benchmarks/NonlinearProblem/Project.toml +++ b/benchmarks/NonlinearProblem/Project.toml @@ -23,6 +23,7 @@ Setfield = "efcf1570-3423-57d1-acb7-fd33fddbac46" SimpleNonlinearSolve = "727e6d20-b764-4bd8-a329-72de5adea6c7" SparseConnectivityTracer = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" SparseDiffTools = "47a9eef4-7e08-11e9-0b38-333d64bd3804" +SparseMatrixColorings = "0a514795-09f3-496d-8182-132a7b665d35" SpeedMapping = "f1835b91-879b-4a3f-a438-e4baacf14412" StableRNGs = "860ef19b-820b-49d6-a774-d7a799459cd3" StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" @@ -60,5 +61,6 @@ StaticArrays = "1" Sundials = "4.22" Symbolics = "5, 6" -[sources] -NonlinearSolve = {url = "https://github.com/SciML/NonlinearSolve.jl", rev = "ap/petsc_debug"} +[sources.NonlinearSolve] +rev = "ap/petsc_debug" +url = "https://github.com/SciML/NonlinearSolve.jl" diff --git a/benchmarks/NonlinearProblem/bruss.jmd b/benchmarks/NonlinearProblem/bruss.jmd index 6b50e5be8..4db317859 100644 --- a/benchmarks/NonlinearProblem/bruss.jmd +++ b/benchmarks/NonlinearProblem/bruss.jmd @@ -11,7 +11,7 @@ Fetch required packages ```julia using NonlinearSolve, SparseDiffTools, LinearAlgebra, SparseArrays, DiffEqDevTools, CairoMakie, Symbolics, BenchmarkTools, PolyesterForwardDiff, LinearSolve, Sundials, - Enzyme, SparseConnectivityTracer, DifferentiationInterface + Enzyme, SparseConnectivityTracer, DifferentiationInterface, SparseMatrixColorings import NLsolve, MINPACK, PETSc, RecursiveFactorization const RUS = RadiusUpdateSchemes; @@ -156,31 +156,38 @@ function cache_and_compute_10_jacobians(adtype, f!::F, y, x, p) where {F} return J end -Ns = [2^i for i in 1:8] +Ns = [2^i for i in 3:8]; adtypes = [ ( - AutoSparse(AutoFiniteDiff(); sparsity_detector=TracerSparsityDetector()), + AutoSparse( + AutoFiniteDiff(); + sparsity_detector=TracerSparsityDetector(), + coloring_algorithm=GreedyColoringAlgorithm(LargestFirst()) + ), [:finitediff, :exact_sparse] ), ( AutoSparse( AutoPolyesterForwardDiff(; chunksize=8); - sparsity_detector=TracerSparsityDetector() + sparsity_detector=TracerSparsityDetector(), + coloring_algorithm=GreedyColoringAlgorithm(LargestFirst()) ), [:polyester, :exact_sparse] ), ( AutoSparse( AutoEnzyme(; mode=Enzyme.Forward); - sparsity_detector=TracerSparsityDetector() + sparsity_detector=TracerSparsityDetector(), + coloring_algorithm=GreedyColoringAlgorithm(LargestFirst()) ), [:enzyme, :exact_sparse] ), ( AutoSparse( AutoFiniteDiff(); - sparsity_detector=DenseSparsityDetector(AutoFiniteDiff(); atol=1e-5) + sparsity_detector=DenseSparsityDetector(AutoFiniteDiff(); atol=1e-5), + coloring_algorithm=GreedyColoringAlgorithm(LargestFirst()) ), [:finitediff, :approx_sparse] ), @@ -189,7 +196,8 @@ adtypes = [ AutoPolyesterForwardDiff(; chunksize=8); sparsity_detector=DenseSparsityDetector( AutoPolyesterForwardDiff(; chunksize=8); atol=1e-5 - ) + ), + coloring_algorithm=GreedyColoringAlgorithm(LargestFirst()) ), [:polyester, :approx_sparse] ), @@ -198,7 +206,8 @@ adtypes = [ AutoEnzyme(; mode=Enzyme.Forward); sparsity_detector=DenseSparsityDetector( AutoEnzyme(; mode=Enzyme.Forward); atol=1e-5 - ) + ), + coloring_algorithm=GreedyColoringAlgorithm(LargestFirst()) ), [:enzyme, :approx_sparse] ), @@ -206,9 +215,9 @@ adtypes = [ AutoPolyesterForwardDiff(; chunksize=8), [:polyester, :none] ), -] +]; -times = Matrix{Float64}(undef, length(Ns), length(adtypes)) +times = Matrix{Float64}(undef, length(Ns), length(adtypes)); for (i, N) in enumerate(Ns) str = "$(lpad(N, 10)) " @@ -227,6 +236,7 @@ for (i, N) in enumerate(Ns) end println(str) end +nothing ``` Plotting the results. @@ -255,10 +265,11 @@ fig = begin colormap=:tableau_20) ax = Axis(fig[1, 2]; title="Scaling of Sparse Jacobian Computation", - titlesize=22, titlegap=10, xscale=log10, yscale=log10, + titlesize=22, titlegap=10, xscale=log2, yscale=log2, xticksize=20, yticksize=20, xticklabelsize=20, yticklabelsize=20, xtickwidth=2.5, ytickwidth=2.5, spinewidth=2.5, - xlabel=L"Input Dimension ($\mathbf{N}$)", ylabel=L"Time $\mathbf{(s)}$", xlabelsize=22, + xlabel=L"Input Dimension ($\mathbf{N}$)", + ylabel=L"Time $\mathbf{(s)}$", xlabelsize=22, ylabelsize=22, yaxisposition=:right) colors = cgrad(:tableau_20, length(adtypes); categorical=true) @@ -334,7 +345,7 @@ fig = begin [symbol_to_adname[adtypes[idx][2][1]] for idx in local_sparse_idxs], [symbol_to_adname[adtypes[idx][2][1]] for idx in non_sparse_idxs], ], - ["Exact Sparsity", "Approx. Local Sparsity", "No Sparsity"]; + ["Exact Sparsity", "Approx. Local Sparsity", "Dense"]; position=:rb, framevisible=true, framewidth=2.5, titlesize=18, labelsize=16, patchsize=(40.0f0, 20.0f0) ) @@ -447,9 +458,9 @@ fig = begin theme = Theme(Lines = (cycle = cycle,), Scatter = (cycle = cycle,)) LINESTYLES = Dict( (:nonlinearsolve, :none) => :solid, - # (:nonlinearsolve, :approx) => :dash, (:nonlinearsolve, :exact) => :dashdot, # (:simplenonlinearsolve, :none) => :solid, + (:wrapper, :exact) => :dash, (:wrapper, :none) => :dot, ) @@ -553,20 +564,20 @@ Ns = 2 .^ (2:7) solvers_scaling_jacobian_free = [ (; pkg = :nonlinearsolve, name = "Newton Krylov", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES())), (; pkg = :nonlinearsolve, name = "Newton Krylov (ILU)", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES(; precs = incompletelu), concrete_jac = true)), - (; pkg = :nonlinearsolve, name = "Newton Krylov (AMG)", alg = NewtonRaphson(; linsolve = KrylovJL_CG(; precs = algebraicmultigrid), concrete_jac = true)), - (; pkg = :nonlinearsolve, name = "Newton Krylov (AMG Jacobi)", alg = NewtonRaphson(; linsolve = KrylovJL_CG(; precs = algebraicmultigrid_jacobi), concrete_jac = true)), + (; pkg = :nonlinearsolve, name = "Newton Krylov (AMG)", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES(; precs = algebraicmultigrid), concrete_jac = true)), + (; pkg = :nonlinearsolve, name = "Newton Krylov (AMG Jacobi)", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES(; precs = algebraicmultigrid_jacobi), concrete_jac = true)), (; pkg = :wrapper, name = "Newton Krylov [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", snes_mf = true)), (; pkg = :wrapper, name = "Newton Krylov (ILU) [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", pc_type = "ilu")), - (; pkg = :wrapper, name = "Newton Krylov (AMG) [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "cg", pc_type = "gamg")), - (; pkg = :wrapper, name = "Newton Krylov (AMG Jacobi) [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "cg", pc_type = "gamg", mg_levels_ksp_type = "richardson", mg_levels_pc_type = "jacobi")), + (; pkg = :wrapper, name = "Newton Krylov (AMG) [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", pc_type = "gamg")), + (; pkg = :wrapper, name = "Newton Krylov (AMG Jacobi) [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", pc_type = "gamg", mg_levels_ksp_type = "richardson", mg_levels_pc_type = "jacobi")), (; pkg = :nonlinearsolve, name = "TR Krylov", alg = TrustRegion(; linsolve = KrylovJL_GMRES())), (; pkg = :nonlinearsolve, name = "TR Krylov (ILU)", alg = TrustRegion(; linsolve = KrylovJL_GMRES(; precs = incompletelu), concrete_jac = true)), - (; pkg = :nonlinearsolve, name = "TR Krylov (AMG)", alg = TrustRegion(; linsolve = KrylovJL_CG(; precs = algebraicmultigrid), concrete_jac = true)), - (; pkg = :nonlinearsolve, name = "TR Krylov (AMG Jacobi)", alg = TrustRegion(; linsolve = KrylovJL_CG(; precs = algebraicmultigrid_jacobi), concrete_jac = true)), + (; pkg = :nonlinearsolve, name = "TR Krylov (AMG)", alg = TrustRegion(; linsolve = KrylovJL_GMRES(; precs = algebraicmultigrid), concrete_jac = true)), + (; pkg = :nonlinearsolve, name = "TR Krylov (AMG Jacobi)", alg = TrustRegion(; linsolve = KrylovJL_GMRES(; precs = algebraicmultigrid_jacobi), concrete_jac = true)), (; pkg = :wrapper, name = "TR Krylov [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", snes_mf = true)), (; pkg = :wrapper, name = "TR Krylov (ILU) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", pc_type = "ilu")), - (; pkg = :wrapper, name = "TR Krylov (AMG) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "cg", pc_type = "gamg")), - (; pkg = :wrapper, name = "TR Krylov (AMG Jacobi) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "cg", pc_type = "gamg", mg_levels_ksp_type = "richardson", mg_levels_pc_type = "jacobi")), + (; pkg = :wrapper, name = "TR Krylov (AMG) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", pc_type = "gamg")), + (; pkg = :wrapper, name = "TR Krylov (AMG Jacobi) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", pc_type = "gamg", mg_levels_ksp_type = "richardson", mg_levels_pc_type = "jacobi")), (; pkg = :wrapper, name = "Newton Krylov [Sundials]", alg = KINSOL(; linear_solver = :GMRES)), ] @@ -787,7 +798,7 @@ fig = begin cycle = Cycle([:marker], covary = true) plot_theme = Theme(Lines = (; cycle), Scatter = (; cycle)) - with_theme(plot_theme) do + with_theme(plot_theme) do fig = Figure(; size = (WIDTH, HEIGHT)) # `textbf` doesn't work ax = Axis(fig[1, 1], ylabel = L"Time $\mathbf{(s)}$", From 102ac55d130b9fc251c1892b27031cfe29d46f02 Mon Sep 17 00:00:00 2001 From: Avik Pal Date: Tue, 15 Apr 2025 23:47:13 -0400 Subject: [PATCH 16/39] more fixes --- benchmarks/NonlinearProblem/bruss.jmd | 14 +++++++------- .../NonlinearProblem/nonlinear_battery_problem.jmd | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/benchmarks/NonlinearProblem/bruss.jmd b/benchmarks/NonlinearProblem/bruss.jmd index 4db317859..0d611236b 100644 --- a/benchmarks/NonlinearProblem/bruss.jmd +++ b/benchmarks/NonlinearProblem/bruss.jmd @@ -156,7 +156,7 @@ function cache_and_compute_10_jacobians(adtype, f!::F, y, x, p) where {F} return J end -Ns = [2^i for i in 3:8]; +Ns = [2^i for i in 1:8]; adtypes = [ ( @@ -504,7 +504,7 @@ fig = begin ] axislegend(ax, main_legend, [s.name for s in solvers_scaling[idxs]], - "Successful Solvers\n(Fastest to Slowest)"; + "Successful Solvers"; framevisible=true, framewidth = STROKEWIDTH, orientation = :vertical, titlesize = 20, nbanks = 1, labelsize = 16, tellheight = true, tellwidth = false, patchsize = (60.0f0, 20.0f0), @@ -574,10 +574,10 @@ solvers_scaling_jacobian_free = [ (; pkg = :nonlinearsolve, name = "TR Krylov (ILU)", alg = TrustRegion(; linsolve = KrylovJL_GMRES(; precs = incompletelu), concrete_jac = true)), (; pkg = :nonlinearsolve, name = "TR Krylov (AMG)", alg = TrustRegion(; linsolve = KrylovJL_GMRES(; precs = algebraicmultigrid), concrete_jac = true)), (; pkg = :nonlinearsolve, name = "TR Krylov (AMG Jacobi)", alg = TrustRegion(; linsolve = KrylovJL_GMRES(; precs = algebraicmultigrid_jacobi), concrete_jac = true)), - (; pkg = :wrapper, name = "TR Krylov [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", snes_mf = true)), - (; pkg = :wrapper, name = "TR Krylov (ILU) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", pc_type = "ilu")), - (; pkg = :wrapper, name = "TR Krylov (AMG) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", pc_type = "gamg")), - (; pkg = :wrapper, name = "TR Krylov (AMG Jacobi) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", pc_type = "gamg", mg_levels_ksp_type = "richardson", mg_levels_pc_type = "jacobi")), + # (; pkg = :wrapper, name = "TR Krylov [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", snes_mf = true)), + # (; pkg = :wrapper, name = "TR Krylov (ILU) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", pc_type = "ilu")), + # (; pkg = :wrapper, name = "TR Krylov (AMG) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", pc_type = "gamg")), + # (; pkg = :wrapper, name = "TR Krylov (AMG Jacobi) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", pc_type = "gamg", mg_levels_ksp_type = "richardson", mg_levels_pc_type = "jacobi")), (; pkg = :wrapper, name = "Newton Krylov [Sundials]", alg = KINSOL(; linear_solver = :GMRES)), ] @@ -676,7 +676,7 @@ fig = begin end axislegend(ax, [[l, sc] for (l, sc) in zip(ls, scs)], labels, - "Successful Solvers\n(Fastest to Slowest)"; + "Successful Solvers"; framevisible=true, framewidth = STROKEWIDTH, orientation = :vertical, titlesize = 20, labelsize = 16, position = :rb, tellheight = true, tellwidth = false, patchsize = (40.0f0, 20.0f0)) diff --git a/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd b/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd index 5680da25c..ea78d72df 100644 --- a/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd +++ b/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd @@ -311,7 +311,7 @@ fig = begin end axislegend(ax, [[l, sc] for (l, sc) in zip(ls, scs)], - [solver.name for solver in successful_solvers[idxs]], "Successful Solvers\n(Fastest to Slowest)"; + [solver.name for solver in successful_solvers[idxs]], "Successful Solvers"; framevisible=true, framewidth = STROKEWIDTH, orientation = :vertical, titlesize = 20, nbanks = 1, labelsize = 16,# margin = (0.0, 80.0, 0.0, 0.0), tellheight = false, tellwidth = true, patchsize = (40.0f0, 20.0f0), From bd77d085646dad7021196e3beed9f830b463d246 Mon Sep 17 00:00:00 2001 From: Avik Pal Date: Wed, 16 Apr 2025 04:54:36 -0400 Subject: [PATCH 17/39] more fixes --- benchmarks/NonlinearProblem/bruss.jmd | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/benchmarks/NonlinearProblem/bruss.jmd b/benchmarks/NonlinearProblem/bruss.jmd index 0d611236b..783164eda 100644 --- a/benchmarks/NonlinearProblem/bruss.jmd +++ b/benchmarks/NonlinearProblem/bruss.jmd @@ -169,7 +169,7 @@ adtypes = [ ), ( AutoSparse( - AutoPolyesterForwardDiff(; chunksize=8); + AutoPolyesterForwardDiff(); sparsity_detector=TracerSparsityDetector(), coloring_algorithm=GreedyColoringAlgorithm(LargestFirst()) ), @@ -193,9 +193,9 @@ adtypes = [ ), ( AutoSparse( - AutoPolyesterForwardDiff(; chunksize=8); + AutoPolyesterForwardDiff(); sparsity_detector=DenseSparsityDetector( - AutoPolyesterForwardDiff(; chunksize=8); atol=1e-5 + AutoPolyesterForwardDiff(); atol=1e-5 ), coloring_algorithm=GreedyColoringAlgorithm(LargestFirst()) ), @@ -212,7 +212,7 @@ adtypes = [ [:enzyme, :approx_sparse] ), ( - AutoPolyesterForwardDiff(; chunksize=8), + AutoPolyesterForwardDiff(), [:polyester, :none] ), ]; From 991884d18ef5759b1a346f3ef0dde4f5a18c76c6 Mon Sep 17 00:00:00 2001 From: Avik Pal Date: Wed, 16 Apr 2025 16:37:11 -0400 Subject: [PATCH 18/39] fix: more fixes --- benchmarks/NonlinearProblem/bruss.jmd | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/benchmarks/NonlinearProblem/bruss.jmd b/benchmarks/NonlinearProblem/bruss.jmd index 783164eda..c5288ebb1 100644 --- a/benchmarks/NonlinearProblem/bruss.jmd +++ b/benchmarks/NonlinearProblem/bruss.jmd @@ -1,7 +1,7 @@ --- title: Ill-Conditioned Nonlinear System Work-Precision Diagrams author: Avik Pal -priority: 10 +priority: 1000000 --- # Setup @@ -346,7 +346,7 @@ fig = begin [symbol_to_adname[adtypes[idx][2][1]] for idx in non_sparse_idxs], ], ["Exact Sparsity", "Approx. Local Sparsity", "Dense"]; - position=:rb, framevisible=true, framewidth=2.5, titlesize=18, + position=:lt, framevisible=true, framewidth=2.5, titlesize=18, labelsize=16, patchsize=(40.0f0, 20.0f0) ) @@ -565,15 +565,15 @@ solvers_scaling_jacobian_free = [ (; pkg = :nonlinearsolve, name = "Newton Krylov", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES())), (; pkg = :nonlinearsolve, name = "Newton Krylov (ILU)", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES(; precs = incompletelu), concrete_jac = true)), (; pkg = :nonlinearsolve, name = "Newton Krylov (AMG)", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES(; precs = algebraicmultigrid), concrete_jac = true)), - (; pkg = :nonlinearsolve, name = "Newton Krylov (AMG Jacobi)", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES(; precs = algebraicmultigrid_jacobi), concrete_jac = true)), + # (; pkg = :nonlinearsolve, name = "Newton Krylov (AMG Jacobi)", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES(; precs = algebraicmultigrid_jacobi), concrete_jac = true)), (; pkg = :wrapper, name = "Newton Krylov [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", snes_mf = true)), (; pkg = :wrapper, name = "Newton Krylov (ILU) [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", pc_type = "ilu")), (; pkg = :wrapper, name = "Newton Krylov (AMG) [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", pc_type = "gamg")), - (; pkg = :wrapper, name = "Newton Krylov (AMG Jacobi) [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", pc_type = "gamg", mg_levels_ksp_type = "richardson", mg_levels_pc_type = "jacobi")), + # (; pkg = :wrapper, name = "Newton Krylov (AMG Jacobi) [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", pc_type = "gamg", mg_levels_ksp_type = "richardson", mg_levels_pc_type = "jacobi")), (; pkg = :nonlinearsolve, name = "TR Krylov", alg = TrustRegion(; linsolve = KrylovJL_GMRES())), (; pkg = :nonlinearsolve, name = "TR Krylov (ILU)", alg = TrustRegion(; linsolve = KrylovJL_GMRES(; precs = incompletelu), concrete_jac = true)), (; pkg = :nonlinearsolve, name = "TR Krylov (AMG)", alg = TrustRegion(; linsolve = KrylovJL_GMRES(; precs = algebraicmultigrid), concrete_jac = true)), - (; pkg = :nonlinearsolve, name = "TR Krylov (AMG Jacobi)", alg = TrustRegion(; linsolve = KrylovJL_GMRES(; precs = algebraicmultigrid_jacobi), concrete_jac = true)), + # (; pkg = :nonlinearsolve, name = "TR Krylov (AMG Jacobi)", alg = TrustRegion(; linsolve = KrylovJL_GMRES(; precs = algebraicmultigrid_jacobi), concrete_jac = true)), # (; pkg = :wrapper, name = "TR Krylov [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", snes_mf = true)), # (; pkg = :wrapper, name = "TR Krylov (ILU) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", pc_type = "ilu")), # (; pkg = :wrapper, name = "TR Krylov (AMG) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", pc_type = "gamg")), @@ -603,13 +603,13 @@ for (i, N) in enumerate(Ns) termination_condition = (alg isa PETScSNES || alg isa KINSOL) ? nothing : NonlinearSolveBase.AbsNormTerminationMode(Base.Fix1(maximum, abs)) - sol = solve(prob, alg; abstol=1e-6, reltol=1e-6, - linsolve_kwargs = (; abstol = 1e-9, reltol = 1e-9), + sol = solve(prob, alg; abstol=1e-5, reltol=1e-5, + linsolve_kwargs = (; abstol = 1e-6, reltol = 1e-6), termination_condition) - if SciMLBase.successful_retcode(sol) || norm(sol.resid, Inf) ≤ 1e-5 - runtimes_scaling[j, i] = @belapsed solve($prob, $alg; abstol=1e-6, - reltol=1e-6, - linsolve_kwargs = (; abstol = 1e-9, reltol = 1e-9), + if SciMLBase.successful_retcode(sol) || norm(sol.resid, Inf) ≤ 1e-4 + runtimes_scaling[j, i] = @belapsed solve($prob, $alg; abstol=1e-5, + reltol=1e-5, + linsolve_kwargs = (; abstol = 1e-6, reltol = 1e-6), termination_condition=$termination_condition) else runtimes_scaling[j, i] = NaN From 0c6ab163ab9fd4f45f5946fd0cf9d6ea970b5dd7 Mon Sep 17 00:00:00 2001 From: Avik Pal Date: Thu, 17 Apr 2025 12:52:18 -0400 Subject: [PATCH 19/39] fix: more fixes --- JuliaFormatter.toml | 1 + benchmarks/NonlinearProblem/Manifest.toml | 28 +- benchmarks/NonlinearProblem/Project.toml | 5 +- benchmarks/NonlinearProblem/bruss.jmd | 175 +--------- benchmarks/NonlinearProblem/bruss_krylov.jmd | 300 ++++++++++++++++++ .../nonlinear_solver_23_tests.jmd | 2 +- 6 files changed, 322 insertions(+), 189 deletions(-) create mode 100644 JuliaFormatter.toml create mode 100644 benchmarks/NonlinearProblem/bruss_krylov.jmd diff --git a/JuliaFormatter.toml b/JuliaFormatter.toml new file mode 100644 index 000000000..91416f055 --- /dev/null +++ b/JuliaFormatter.toml @@ -0,0 +1 @@ +style="sciml" \ No newline at end of file diff --git a/benchmarks/NonlinearProblem/Manifest.toml b/benchmarks/NonlinearProblem/Manifest.toml index 62d2505aa..f04196cf2 100644 --- a/benchmarks/NonlinearProblem/Manifest.toml +++ b/benchmarks/NonlinearProblem/Manifest.toml @@ -515,9 +515,9 @@ version = "1.15.1" [[deps.DifferentiationInterface]] deps = ["ADTypes", "LinearAlgebra"] -git-tree-sha1 = "e41b6696c84291c4ad15f5f6eaf071b4dfbfda06" +git-tree-sha1 = "aa87a743e3778d35a950b76fbd2ae64f810a2bb3" uuid = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" -version = "0.6.51" +version = "0.6.52" [deps.DifferentiationInterface.extensions] DifferentiationInterfaceChainRulesCoreExt = "ChainRulesCore" @@ -527,6 +527,7 @@ version = "0.6.51" DifferentiationInterfaceFiniteDiffExt = "FiniteDiff" DifferentiationInterfaceFiniteDifferencesExt = "FiniteDifferences" DifferentiationInterfaceForwardDiffExt = ["ForwardDiff", "DiffResults"] + DifferentiationInterfaceGPUArraysCoreExt = "GPUArraysCore" DifferentiationInterfaceGTPSAExt = "GTPSA" DifferentiationInterfaceMooncakeExt = "Mooncake" DifferentiationInterfacePolyesterForwardDiffExt = ["PolyesterForwardDiff", "ForwardDiff", "DiffResults"] @@ -549,6 +550,7 @@ version = "0.6.51" FiniteDiff = "6a86dc24-6348-571c-b903-95158fe2bd41" FiniteDifferences = "26cc04aa-876d-5657-8c51-4c34ba976000" ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" + GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" GTPSA = "b27dd330-f138-47c5-815b-40db9dd9b6e8" Mooncake = "da2b9cff-9c12-43a0-ae48-6db2b0edb7d6" PolyesterForwardDiff = "98d1487c-24ca-40b6-b7ab-df2af84e126b" @@ -578,9 +580,9 @@ uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" [[deps.Distributions]] deps = ["AliasTables", "FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns"] -git-tree-sha1 = "0b4190661e8a4e51a842070e7dd4fae440ddb7f4" +git-tree-sha1 = "6d8b535fd38293bc54b88455465a1386f8ac1c3c" uuid = "31c24e10-a181-5473-b8eb-7969acd0382f" -version = "0.25.118" +version = "0.25.119" [deps.Distributions.extensions] DistributionsChainRulesCoreExt = "ChainRulesCore" @@ -1674,9 +1676,9 @@ version = "0.1.2" [[deps.NonlinearSolve]] deps = ["ADTypes", "ArrayInterface", "BracketingNonlinearSolve", "CommonSolve", "ConcreteStructs", "DiffEqBase", "DifferentiationInterface", "FastClosures", "FiniteDiff", "ForwardDiff", "LineSearch", "LinearAlgebra", "LinearSolve", "NonlinearSolveBase", "NonlinearSolveFirstOrder", "NonlinearSolveQuasiNewton", "NonlinearSolveSpectralMethods", "PrecompileTools", "Preferences", "Reexport", "SciMLBase", "SimpleNonlinearSolve", "SparseArrays", "SparseMatrixColorings", "StaticArraysCore", "SymbolicIndexingInterface"] -git-tree-sha1 = "7ae7322d658544bd8f6b24a1a0374a6b4ac1fc7e" +git-tree-sha1 = "4bb539009cc5be9024fb9cbbe7ea2fd1197aa2aa" uuid = "8913a72c-1f9b-4ce2-8d82-65094dcecaec" -version = "4.5.1" +version = "4.6.0" [deps.NonlinearSolve.extensions] NonlinearSolveFastLevenbergMarquardtExt = "FastLevenbergMarquardt" @@ -1766,9 +1768,9 @@ uuid = "510215fc-4207-5dde-b226-833fc4488ee2" version = "0.5.5" [[deps.OffsetArrays]] -git-tree-sha1 = "a414039192a155fb38c4599a60110f0018c6ec82" +git-tree-sha1 = "117432e406b5c023f665fa73dc26e79ec3630151" uuid = "6fe1bfb0-de20-5000-8ca7-80f57d26f881" -version = "1.16.0" +version = "1.17.0" weakdeps = ["Adapt"] [deps.OffsetArrays.extensions] @@ -2371,9 +2373,9 @@ version = "1.10.0" [[deps.SparseConnectivityTracer]] deps = ["ADTypes", "DocStringExtensions", "FillArrays", "LinearAlgebra", "Random", "SparseArrays"] -git-tree-sha1 = "15dd194e46a5e74b6f7f361e9eb3ed869617ccd5" +git-tree-sha1 = "cccc976f8fdd51bb3a6c3dcd9e1e7d110582e083" uuid = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" -version = "0.6.16" +version = "0.6.17" [deps.SparseConnectivityTracer.extensions] SparseConnectivityTracerDataInterpolationsExt = "DataInterpolations" @@ -2567,9 +2569,11 @@ version = "7.2.1+1" [[deps.Sundials]] deps = ["CEnum", "DataStructures", "DiffEqBase", "Libdl", "LinearAlgebra", "Logging", "PrecompileTools", "Reexport", "SciMLBase", "SparseArrays", "Sundials_jll"] -git-tree-sha1 = "c135b599cec3558be36eaf86ab1ce7e259ef9534" +git-tree-sha1 = "87b22845424e6c79fa0dadea81880a17759e701a" +repo-rev = "ap/kinsol_newton" +repo-url = "https://github.com/SciML/Sundials.jl.git" uuid = "c3572dad-4567-51f8-b174-8c6c989267f4" -version = "4.27.0" +version = "4.28.0" [[deps.Sundials_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "SuiteSparse_jll", "libblastrampoline_jll"] diff --git a/benchmarks/NonlinearProblem/Project.toml b/benchmarks/NonlinearProblem/Project.toml index 09715df26..bc017403a 100644 --- a/benchmarks/NonlinearProblem/Project.toml +++ b/benchmarks/NonlinearProblem/Project.toml @@ -61,6 +61,5 @@ StaticArrays = "1" Sundials = "4.22" Symbolics = "5, 6" -[sources.NonlinearSolve] -rev = "ap/petsc_debug" -url = "https://github.com/SciML/NonlinearSolve.jl" +[sources] +Sundials = {url = "https://github.com/SciML/Sundials.jl", rev = "ap/kinsol_newton"} diff --git a/benchmarks/NonlinearProblem/bruss.jmd b/benchmarks/NonlinearProblem/bruss.jmd index c5288ebb1..ba325cb0b 100644 --- a/benchmarks/NonlinearProblem/bruss.jmd +++ b/benchmarks/NonlinearProblem/bruss.jmd @@ -370,7 +370,7 @@ solvers_scaling = [ (; pkg = :nonlinearsolve, sparsity = :none, name = "NR (No Sparsity)", alg = NewtonRaphson()), (; pkg = :nonlinearsolve, sparsity = :exact, name = "NR (Exact Sparsity)", alg = NewtonRaphson()), (; pkg = :wrapper, sparsity = :none, name = "NR [NLsolve.jl]", alg = NLsolveJL(; method = :newton, autodiff = :forward)), - (; pkg = :wrapper, sparsity = :none, name = "Mod. NR [Sundials]", alg = KINSOL()), + (; pkg = :wrapper, sparsity = :none, name = "NR [Sundials]", alg = KINSOL(; linear_solver = :LapackDense, maxsetupcalls=1)), (; pkg = :wrapper, sparsity = :none, name = "NR [PETSc] (No Sparsity)", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", autodiff = missing)), (; pkg = :wrapper, sparsity = :exact, name = "NR [PETSc] (Exact Sparsity)", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic")), @@ -534,177 +534,6 @@ end save("brusselator_scaling.svg", fig) ``` -# Jacobian-Free Newton / TR Krylov Methods - -In this section, we will benchmark jacobian-free nonlinear solvers with Krylov methods. We -will use preconditioning from `AlgebraicMultigrid.jl` and `IncompleteLU.jl`. Unfortunately, -our ability to use 3rd party software is limited here, since only `Sundials.jl` supports -jacobian-free methods via `:GMRES`. - -```julia -using AlgebraicMultigrid, IncompleteLU - -incompletelu(W, p = nothing) = ilu(W, τ = 50.0), LinearAlgebra.I - -function algebraicmultigrid(W, p = nothing) - return aspreconditioner(ruge_stuben(convert(AbstractMatrix, W))), LinearAlgebra.I -end - -function algebraicmultigrid_jacobi(W, p = nothing) - A = convert(AbstractMatrix, W) - Pl = AlgebraicMultigrid.aspreconditioner(AlgebraicMultigrid.ruge_stuben( - A, presmoother = AlgebraicMultigrid.Jacobi(rand(size(A, 1))), - postsmoother = AlgebraicMultigrid.Jacobi(rand(size(A, 1))) - )) - return Pl, LinearAlgebra.I -end - -Ns = 2 .^ (2:7) - -solvers_scaling_jacobian_free = [ - (; pkg = :nonlinearsolve, name = "Newton Krylov", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES())), - (; pkg = :nonlinearsolve, name = "Newton Krylov (ILU)", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES(; precs = incompletelu), concrete_jac = true)), - (; pkg = :nonlinearsolve, name = "Newton Krylov (AMG)", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES(; precs = algebraicmultigrid), concrete_jac = true)), - # (; pkg = :nonlinearsolve, name = "Newton Krylov (AMG Jacobi)", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES(; precs = algebraicmultigrid_jacobi), concrete_jac = true)), - (; pkg = :wrapper, name = "Newton Krylov [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", snes_mf = true)), - (; pkg = :wrapper, name = "Newton Krylov (ILU) [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", pc_type = "ilu")), - (; pkg = :wrapper, name = "Newton Krylov (AMG) [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", pc_type = "gamg")), - # (; pkg = :wrapper, name = "Newton Krylov (AMG Jacobi) [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", pc_type = "gamg", mg_levels_ksp_type = "richardson", mg_levels_pc_type = "jacobi")), - (; pkg = :nonlinearsolve, name = "TR Krylov", alg = TrustRegion(; linsolve = KrylovJL_GMRES())), - (; pkg = :nonlinearsolve, name = "TR Krylov (ILU)", alg = TrustRegion(; linsolve = KrylovJL_GMRES(; precs = incompletelu), concrete_jac = true)), - (; pkg = :nonlinearsolve, name = "TR Krylov (AMG)", alg = TrustRegion(; linsolve = KrylovJL_GMRES(; precs = algebraicmultigrid), concrete_jac = true)), - # (; pkg = :nonlinearsolve, name = "TR Krylov (AMG Jacobi)", alg = TrustRegion(; linsolve = KrylovJL_GMRES(; precs = algebraicmultigrid_jacobi), concrete_jac = true)), - # (; pkg = :wrapper, name = "TR Krylov [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", snes_mf = true)), - # (; pkg = :wrapper, name = "TR Krylov (ILU) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", pc_type = "ilu")), - # (; pkg = :wrapper, name = "TR Krylov (AMG) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", pc_type = "gamg")), - # (; pkg = :wrapper, name = "TR Krylov (AMG Jacobi) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", pc_type = "gamg", mg_levels_ksp_type = "richardson", mg_levels_pc_type = "jacobi")), - (; pkg = :wrapper, name = "Newton Krylov [Sundials]", alg = KINSOL(; linear_solver = :GMRES)), -] - -runtimes_scaling = zeros(length(solvers_scaling_jacobian_free), length(Ns)) .- 1 - -for (i, N) in enumerate(Ns) - prob = generate_brusselator_problem( - N; sparsity = TracerSparsityDetector() - ) - - @info "Benchmarking N = $N" - - for (j, solver) in enumerate(solvers_scaling_jacobian_free) - alg = solver.alg - name = solver.name - - if (j > 1 && runtimes_scaling[j - 1, i] == -1) - # The last benchmark failed so skip this too - runtimes_scaling[j, i] = NaN - @warn "$(name): Would Have Timed out" - else - function benchmark_function() - termination_condition = (alg isa PETScSNES || alg isa KINSOL) ? - nothing : - NonlinearSolveBase.AbsNormTerminationMode(Base.Fix1(maximum, abs)) - sol = solve(prob, alg; abstol=1e-5, reltol=1e-5, - linsolve_kwargs = (; abstol = 1e-6, reltol = 1e-6), - termination_condition) - if SciMLBase.successful_retcode(sol) || norm(sol.resid, Inf) ≤ 1e-4 - runtimes_scaling[j, i] = @belapsed solve($prob, $alg; abstol=1e-5, - reltol=1e-5, - linsolve_kwargs = (; abstol = 1e-6, reltol = 1e-6), - termination_condition=$termination_condition) - else - runtimes_scaling[j, i] = NaN - end - @info "$(name): $(runtimes_scaling[j, i]) | $(norm(sol.resid, Inf)) | $(sol.retcode)" - end - - timeout(benchmark_function, 600) - - if runtimes_scaling[j, i] == -1 - @warn "$(name): Timed out" - runtimes_scaling[j, i] = NaN - end - end - end - - println() -end -``` - -Plot the results. - -```julia -fig = begin - ASPECT_RATIO = 0.7 - WIDTH = 1200 - HEIGHT = round(Int, WIDTH * ASPECT_RATIO) - STROKEWIDTH = 2.5 - - cycle = Cycle([:marker], covary = true) - colors = cgrad(:tableau_20, length(solvers_scaling_jacobian_free); categorical = true) - theme = Theme(Lines = (cycle = cycle,), Scatter = (cycle = cycle,)) - LINESTYLES = Dict( - (:nonlinearsolve, :none) => :solid, - (:nonlinearsolve, :amg) => :dot, - (:nonlinearsolve, :amg_jacobi) => :dash, - (:nonlinearsolve, :ilu) => :dashdot, - ) - - Ns_ = Ns .^ 2 .* 2 - - with_theme(theme) do - fig = Figure(; size = (WIDTH, HEIGHT)) - - ax = Axis(fig[1, 1:2], ylabel = L"Time ($s$)", xlabel = L"Problem Size ($N$)", - xscale = log10, yscale = log10, xlabelsize = 22, ylabelsize = 22, - xticklabelsize = 20, yticklabelsize = 20, xtickwidth = STROKEWIDTH, - ytickwidth = STROKEWIDTH, spinewidth = STROKEWIDTH) - - idxs = get_ordering(runtimes_scaling) - - ls, scs, labels = [], [], [] - for (i, solver) in zip(idxs, solvers_scaling_jacobian_free[idxs]) - all(isnan, runtimes_scaling[i, :]) && continue - precon = occursin("AMG Jacobi", solver.name) ? :amg_jacobi : occursin("AMG", solver.name) ? :amg : occursin("ILU", solver.name) ? :ilu : :none - linestyle = LINESTYLES[(solver.pkg, precon)] - l = lines!(Ns_, runtimes_scaling[i, :]; linewidth = 5, color = colors[i], - linestyle) - sc = scatter!(Ns_, runtimes_scaling[i, :]; markersize = 16, strokewidth = 2, - color = colors[i]) - push!(ls, l) - push!(scs, sc) - push!(labels, solver.name) - end - - axislegend(ax, [[l, sc] for (l, sc) in zip(ls, scs)], labels, - "Successful Solvers"; - framevisible=true, framewidth = STROKEWIDTH, orientation = :vertical, - titlesize = 20, labelsize = 16, position = :rb, - tellheight = true, tellwidth = false, patchsize = (40.0f0, 20.0f0)) - - axislegend(ax, [ - LineElement(; linestyle = :solid, linewidth = 5), - LineElement(; linestyle = :dot, linewidth = 5), - LineElement(; linestyle = :dash, linewidth = 5), - LineElement(; linestyle = :dashdot, linewidth = 5), - ], ["No Preconditioning", "AMG", "AMG Jacobi", "Incomplete LU"], - "Preconditioning"; framevisible=true, framewidth = STROKEWIDTH, - orientation = :vertical, titlesize = 20, labelsize = 16, - tellheight = true, tellwidth = true, patchsize = (40.0f0, 20.0f0), - position = :lt) - - fig[0, :] = Label(fig, - "Brusselator 2D: Scaling of Jacobian-Free Nonlinear Solvers with Problem Size", - fontsize = 24, tellwidth = false, font = :bold) - - return fig - end -end -``` - -```julia -save("brusselator_krylov_methods_scaling.svg", fig) -``` - # Work-Precision Diagram In this section, we will generate the work-precision of the solvers. All solvers that can @@ -723,7 +552,7 @@ solvers_all = [ (; pkg = :wrapper, name = "NR [NLsolve.jl]", solver = Dict(:alg => NLsolveJL(; method = :newton, autodiff = :forward))), (; pkg = :wrapper, name = "TR [NLsolve.jl]", solver = Dict(:alg => NLsolveJL(; autodiff = :forward))), - (; pkg = :wrapper, name = "NR [Sundials]", solver = Dict(:alg => KINSOL())), + (; pkg = :wrapper, name = "NR [Sundials]", solver = Dict(:alg => KINSOL(; linear_solver = :LapackDense, maxsetupcalls=1))), (; pkg = :wrapper, name = "Newton Krylov [Sundials]", solver = Dict(:alg => KINSOL(; linear_solver = :GMRES))), (; pkg = :wrapper, name = "Mod. Powell [MINPACK]", solver = Dict(:alg => CMINPACK())), diff --git a/benchmarks/NonlinearProblem/bruss_krylov.jmd b/benchmarks/NonlinearProblem/bruss_krylov.jmd new file mode 100644 index 000000000..e87ec1f53 --- /dev/null +++ b/benchmarks/NonlinearProblem/bruss_krylov.jmd @@ -0,0 +1,300 @@ +--- +title: Ill-Conditioned Nonlinear System Work-Precision Diagrams (Krylov Methods) +author: Avik Pal +priority: 1000000 +--- + +# Setup + +Fetch required packages + +```julia +using NonlinearSolve, SparseDiffTools, LinearAlgebra, SparseArrays, DiffEqDevTools, + CairoMakie, Symbolics, BenchmarkTools, PolyesterForwardDiff, LinearSolve, Sundials, + Enzyme, SparseConnectivityTracer, DifferentiationInterface, SparseMatrixColorings +import NLsolve, MINPACK, PETSc, RecursiveFactorization + +const RUS = RadiusUpdateSchemes; +BenchmarkTools.DEFAULT_PARAMETERS.seconds = 0.2; +``` + +Define a utility to timeout the benchmark after a certain time. + +```julia +# Taken from ReTestItems.jl +function timeout(f, timeout) + cond = Threads.Condition() + timer = Timer(timeout) do tm + close(tm) + ex = ErrorException("timed out after $timeout seconds") + @lock cond notify(cond, ex; error=false) + end + Threads.@spawn begin + try + ret = $f() + isopen(timer) && @lock cond notify(cond, ret) + catch e + isopen(timer) && @lock cond notify(cond, CapturedException(e, catch_backtrace()); error=true) + finally + close(timer) + end + end + return @lock cond wait(cond) # will throw if we timeout +end + +function get_ordering(x::AbstractMatrix) + idxs = Vector{Int}(undef, size(x, 1)) + placed = zeros(Bool, size(x, 1)) + idx = 1 + for j in size(x, 2):-1:1 + row = view(x, :, j) + idxs_row = sortperm(row; by = x -> isnan(x) ? Inf : (x == -1 ? Inf : x)) + for i in idxs_row + if !placed[i] && !isnan(row[i]) && row[i] ≠ -1 + idxs[idx] = i + placed[i] = true + idx += 1 + idx > length(idxs) && break + end + end + idx > length(idxs) && break + end + return idxs +end +``` + +# Brusselator + +Define the Brussletor problem. + +```julia +brusselator_f(x, y) = (((x - 3 // 10) ^ 2 + (y - 6 // 10) ^ 2) ≤ 0.01) * 5 + +limit(a, N) = ifelse(a == N + 1, 1, ifelse(a == 0, N, a)) + +function init_brusselator_2d(xyd, N) + N = length(xyd) + u = zeros(N, N, 2) + for I in CartesianIndices((N, N)) + x = xyd[I[1]] + y = xyd[I[2]] + u[I, 1] = 22 * (y * (1 - y))^(3 / 2) + u[I, 2] = 27 * (x * (1 - x))^(3 / 2) + end + return u +end + +function generate_brusselator_problem(N::Int; sparsity = nothing, kwargs...) + xyd_brusselator = range(0; stop = 1, length = N) + + function brusselator_2d_loop(du_, u_, p) + A, B, α, δx = p + α = α / δx ^ 2 + + du = reshape(du_, N, N, 2) + u = reshape(u_, N, N, 2) + + @inbounds @simd for I in CartesianIndices((N, N)) + i, j = Tuple(I) + x, y = xyd_brusselator[I[1]], xyd_brusselator[I[2]] + ip1, im1 = limit(i + 1, N), limit(i - 1, N) + jp1, jm1 = limit(j + 1, N), limit(j - 1, N) + + du[i, j, 1] = α * (u[im1, j, 1] + u[ip1, j, 1] + u[i, jp1, 1] + u[i, jm1, 1] - + 4u[i, j, 1]) + + B + u[i, j, 1] ^ 2 * u[i, j, 2] - (A + 1) * u[i, j, 1] + + brusselator_f(x, y) + + du[i, j, 2] = α * (u[im1, j, 2] + u[ip1, j, 2] + u[i, jp1, 2] + u[i, jm1, 2] - + 4u[i, j, 2]) + + A * u[i, j, 1] - u[i, j, 1] ^ 2 * u[i, j, 2] + end + return nothing + end + + return NonlinearProblem( + NonlinearFunction(brusselator_2d_loop; sparsity), + vec(init_brusselator_2d(xyd_brusselator, N)), + (3.4, 1.0, 10.0, step(xyd_brusselator)); + kwargs... + ) +end +``` + + +# Jacobian-Free Newton / TR Krylov Methods + +In this section, we will benchmark jacobian-free nonlinear solvers with Krylov methods. We +will use preconditioning from `AlgebraicMultigrid.jl` and `IncompleteLU.jl`. Unfortunately, +our ability to use 3rd party software is limited here, since only `Sundials.jl` supports +jacobian-free methods via `:GMRES`. + +```julia +using AlgebraicMultigrid, IncompleteLU + +incompletelu(W, p = nothing) = ilu(W, τ = 50.0), LinearAlgebra.I + +function algebraicmultigrid(W, p = nothing) + return aspreconditioner(ruge_stuben(convert(AbstractMatrix, W))), LinearAlgebra.I +end + +function algebraicmultigrid_jacobi(W, p = nothing) + A = convert(AbstractMatrix, W) + Pl = AlgebraicMultigrid.aspreconditioner(AlgebraicMultigrid.ruge_stuben( + A, presmoother = AlgebraicMultigrid.Jacobi(rand(size(A, 1))), + postsmoother = AlgebraicMultigrid.Jacobi(rand(size(A, 1))) + )) + return Pl, LinearAlgebra.I +end + +Ns = 2 .^ (2:4) # TODO: make 7 + +solvers_scaling_jacobian_free = [ + (; pkg = :nonlinearsolve, name = "Newton Krylov", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES())), + (; pkg = :nonlinearsolve, name = "Newton Krylov (ILU)", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES(; precs = incompletelu), concrete_jac = true)), + (; pkg = :nonlinearsolve, name = "Newton Krylov (AMG)", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES(; precs = algebraicmultigrid), concrete_jac = true)), + (; pkg = :nonlinearsolve, name = "Newton Krylov (AMG Jacobi)", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES(; precs = algebraicmultigrid_jacobi), concrete_jac = true)), + + (; pkg = :nonlinearsolve, name = "TR Krylov", alg = TrustRegion(; linsolve = KrylovJL_GMRES())), + (; pkg = :nonlinearsolve, name = "TR Krylov (ILU)", alg = TrustRegion(; linsolve = KrylovJL_GMRES(; precs = incompletelu), concrete_jac = true)), + (; pkg = :nonlinearsolve, name = "TR Krylov (AMG)", alg = TrustRegion(; linsolve = KrylovJL_GMRES(; precs = algebraicmultigrid), concrete_jac = true)), + (; pkg = :nonlinearsolve, name = "TR Krylov (AMG Jacobi)", alg = TrustRegion(; linsolve = KrylovJL_GMRES(; precs = algebraicmultigrid_jacobi), concrete_jac = true)), + + (; pkg = :wrapper, name = "Newton Krylov [Sundials]", alg = KINSOL(; linear_solver = :GMRES)), + + (; pkg = :wrapper, name = "Newton Krylov [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", snes_mf = true)), + (; pkg = :wrapper, name = "Newton Krylov (ILU) [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", pc_type = "ilu")), + (; pkg = :wrapper, name = "Newton Krylov (AMG) [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", pc_type = "gamg")), + (; pkg = :wrapper, name = "Newton Krylov (AMG Jacobi) [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", pc_type = "gamg", mg_levels_ksp_type = "richardson", mg_levels_pc_type = "jacobi")), + (; pkg = :wrapper, name = "TR Krylov (Not Matrix Free) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres")), + # (; pkg = :wrapper, name = "TR Krylov (ILU) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", pc_type = "ilu")), + # (; pkg = :wrapper, name = "TR Krylov (AMG) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", pc_type = "gamg")), + # (; pkg = :wrapper, name = "TR Krylov (AMG Jacobi) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", pc_type = "gamg", mg_levels_ksp_type = "richardson", mg_levels_pc_type = "jacobi")), +] + +gc_disabled = false +runtimes_scaling = zeros(length(solvers_scaling_jacobian_free), length(Ns)) .- 1 + +for (j, solver) in enumerate(solvers_scaling_jacobian_free) + alg = solver.alg + name = solver.name + + if !gc_disabled && alg isa PETScSNES + GC.enable(false) + global gc_disabled = true + @info "Disabling GC for $(name)" + end + + for (i, N) in enumerate(Ns) + prob = generate_brusselator_problem(N; sparsity = TracerSparsityDetector()) + + if (j > 1 && runtimes_scaling[j - 1, i] == -1) + # The last benchmark failed so skip this too + runtimes_scaling[j, i] = NaN + @warn "$(name): Would Have Timed out" + else + function benchmark_function() + termination_condition = (alg isa PETScSNES || alg isa KINSOL) ? + nothing : + NonlinearSolveBase.AbsNormTerminationMode(Base.Fix1(maximum, abs)) + sol = solve(prob, alg; abstol=1e-6, reltol=1e-6, + linsolve_kwargs = (; abstol = 1e-10, reltol = 1e-10), + termination_condition) + if SciMLBase.successful_retcode(sol) || norm(sol.resid, Inf) ≤ 1e-4 + runtimes_scaling[j, i] = @belapsed solve($prob, $alg; abstol=1e-6, + reltol=1e-6, + linsolve_kwargs = (; abstol = 1e-10, reltol = 1e-10), + termination_condition=$termination_condition) + else + runtimes_scaling[j, i] = NaN + end + @info "$(name): $(runtimes_scaling[j, i]) | $(norm(sol.resid, Inf)) | $(sol.retcode)" + end + + timeout(benchmark_function, 600) + + if runtimes_scaling[j, i] == -1 + @warn "$(name): Timed out" + runtimes_scaling[j, i] = NaN + end + end + end + + println() +end +``` + +Plot the results. + +```julia +fig = begin + ASPECT_RATIO = 0.7 + WIDTH = 1200 + HEIGHT = round(Int, WIDTH * ASPECT_RATIO) + STROKEWIDTH = 2.5 + + cycle = Cycle([:marker], covary = true) + colors = cgrad(:tableau_20, length(solvers_scaling_jacobian_free); categorical = true) + theme = Theme(Lines = (cycle = cycle,), Scatter = (cycle = cycle,)) + LINESTYLES = Dict( + :none => :solid, + :amg => :dot, + :amg_jacobi => :dash, + :ilu => :dashdot, + ) + + Ns_ = Ns .^ 2 .* 2 + + with_theme(theme) do + fig = Figure(; size = (WIDTH, HEIGHT)) + + ax = Axis(fig[1, 1:2], ylabel = L"Time ($s$)", xlabel = L"Problem Size ($N$)", + xscale = log10, yscale = log10, xlabelsize = 22, ylabelsize = 22, + xticklabelsize = 20, yticklabelsize = 20, xtickwidth = STROKEWIDTH, + ytickwidth = STROKEWIDTH, spinewidth = STROKEWIDTH) + + idxs = get_ordering(runtimes_scaling) + + ls, scs, labels = [], [], [] + for (i, solver) in zip(idxs, solvers_scaling_jacobian_free[idxs]) + all(isnan, runtimes_scaling[i, :]) && continue + precon = occursin("AMG Jacobi", solver.name) ? :amg_jacobi : occursin("AMG", solver.name) ? :amg : occursin("ILU", solver.name) ? :ilu : :none + linestyle = LINESTYLES[precon] + l = lines!(Ns_, runtimes_scaling[i, :]; linewidth = 5, color = colors[i], + linestyle) + sc = scatter!(Ns_, runtimes_scaling[i, :]; markersize = 16, strokewidth = 2, + color = colors[i]) + push!(ls, l) + push!(scs, sc) + push!(labels, solver.name) + end + + axislegend(ax, [[l, sc] for (l, sc) in zip(ls, scs)], labels, + "Successful Solvers"; + framevisible=true, framewidth = STROKEWIDTH, orientation = :vertical, + titlesize = 20, labelsize = 16, position = :rb, + tellheight = true, tellwidth = false, patchsize = (40.0f0, 20.0f0)) + + axislegend(ax, [ + LineElement(; linestyle = :solid, linewidth = 5), + LineElement(; linestyle = :dot, linewidth = 5), + LineElement(; linestyle = :dash, linewidth = 5), + LineElement(; linestyle = :dashdot, linewidth = 5), + ], ["No Preconditioning", "AMG", "AMG Jacobi", "Incomplete LU"], + "Preconditioning"; framevisible=true, framewidth = STROKEWIDTH, + orientation = :vertical, titlesize = 20, labelsize = 16, + tellheight = true, tellwidth = true, patchsize = (40.0f0, 20.0f0), + position = :lt) + + fig[0, :] = Label(fig, + "Brusselator 2D: Scaling of Jacobian-Free Nonlinear Solvers with Problem Size", + fontsize = 24, tellwidth = false, font = :bold) + + return fig + end +end +``` + +```julia +save("brusselator_krylov_methods_scaling.svg", fig) +``` diff --git a/benchmarks/NonlinearProblem/nonlinear_solver_23_tests.jmd b/benchmarks/NonlinearProblem/nonlinear_solver_23_tests.jmd index d9c84d3a7..a59054539 100644 --- a/benchmarks/NonlinearProblem/nonlinear_solver_23_tests.jmd +++ b/benchmarks/NonlinearProblem/nonlinear_solver_23_tests.jmd @@ -74,7 +74,7 @@ solvers_all = [ (; pkg = :wrapper, type = :general, name = "LM [MINPACK]", solver = Dict(:alg => CMINPACK(; method=:lm))), (; pkg = :wrapper, type = :general, name = "NR [NLsolve.jl]", solver = Dict(:alg => NLsolveJL(; method=:newton))), (; pkg = :wrapper, type = :general, name = "TR [NLsolve.jl]", solver = Dict(:alg => NLsolveJL())), - (; pkg = :wrapper, type = :general, name = "NR [Sundials]", solver = Dict(:alg => KINSOL())), + (; pkg = :wrapper, type = :general, name = "NR [Sundials]", solver = Dict(:alg => KINSOL(; linear_solver = :LapackDense, maxsetupcalls=1))), (; pkg = :wrapper, type = :general, name = "NR LineSearch [Sundials]", solver = Dict(:alg => KINSOL(; globalization_strategy=:LineSearch))) ]; From 341b59bf5057289a7a1be16a5295380f4fd16624 Mon Sep 17 00:00:00 2001 From: Avik Pal Date: Thu, 17 Apr 2025 13:04:01 -0400 Subject: [PATCH 20/39] fix: higher priority --- benchmarks/NonlinearProblem/bruss_krylov.jmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/benchmarks/NonlinearProblem/bruss_krylov.jmd b/benchmarks/NonlinearProblem/bruss_krylov.jmd index e87ec1f53..b344d4e99 100644 --- a/benchmarks/NonlinearProblem/bruss_krylov.jmd +++ b/benchmarks/NonlinearProblem/bruss_krylov.jmd @@ -1,7 +1,7 @@ --- title: Ill-Conditioned Nonlinear System Work-Precision Diagrams (Krylov Methods) author: Avik Pal -priority: 1000000 +priority: 10000000 --- # Setup From 2f1233eaa8fd46f209679dc87f887243d15edd2a Mon Sep 17 00:00:00 2001 From: Avik Pal Date: Thu, 17 Apr 2025 13:39:40 -0400 Subject: [PATCH 21/39] fix: krylov --- benchmarks/NonlinearProblem/bruss_krylov.jmd | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/benchmarks/NonlinearProblem/bruss_krylov.jmd b/benchmarks/NonlinearProblem/bruss_krylov.jmd index b344d4e99..9dcbafe4d 100644 --- a/benchmarks/NonlinearProblem/bruss_krylov.jmd +++ b/benchmarks/NonlinearProblem/bruss_krylov.jmd @@ -147,7 +147,7 @@ function algebraicmultigrid_jacobi(W, p = nothing) return Pl, LinearAlgebra.I end -Ns = 2 .^ (2:4) # TODO: make 7 +Ns = 2 .^ (2:7) solvers_scaling_jacobian_free = [ (; pkg = :nonlinearsolve, name = "Newton Krylov", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES())), @@ -173,7 +173,7 @@ solvers_scaling_jacobian_free = [ ] gc_disabled = false -runtimes_scaling = zeros(length(solvers_scaling_jacobian_free), length(Ns)) .- 1 +runtimes_scaling = fill(-1.0, length(solvers_scaling_jacobian_free), length(Ns)) for (j, solver) in enumerate(solvers_scaling_jacobian_free) alg = solver.alg @@ -233,6 +233,10 @@ fig = begin HEIGHT = round(Int, WIDTH * ASPECT_RATIO) STROKEWIDTH = 2.5 + successful_solvers = map(x -> any(isfinite, x), eachrow(runtimes_scaling)) + solvers_scaling_jacobian_free = solvers_scaling_jacobian_free[successful_solvers] + runtimes_scaling = runtimes_scaling[successful_solvers, :] + cycle = Cycle([:marker], covary = true) colors = cgrad(:tableau_20, length(solvers_scaling_jacobian_free); categorical = true) theme = Theme(Lines = (cycle = cycle,), Scatter = (cycle = cycle,)) @@ -249,7 +253,7 @@ fig = begin fig = Figure(; size = (WIDTH, HEIGHT)) ax = Axis(fig[1, 1:2], ylabel = L"Time ($s$)", xlabel = L"Problem Size ($N$)", - xscale = log10, yscale = log10, xlabelsize = 22, ylabelsize = 22, + xscale = log2, yscale = log2, xlabelsize = 22, ylabelsize = 22, xticklabelsize = 20, yticklabelsize = 20, xtickwidth = STROKEWIDTH, ytickwidth = STROKEWIDTH, spinewidth = STROKEWIDTH) From 6bc46f555536bdde3ca2ec06bfbe4e9a0d592cd0 Mon Sep 17 00:00:00 2001 From: Avik Pal Date: Thu, 17 Apr 2025 14:38:10 -0400 Subject: [PATCH 22/39] fix: lower tolerance --- benchmarks/NonlinearProblem/bruss_krylov.jmd | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/benchmarks/NonlinearProblem/bruss_krylov.jmd b/benchmarks/NonlinearProblem/bruss_krylov.jmd index 9dcbafe4d..8d48f4c1d 100644 --- a/benchmarks/NonlinearProblem/bruss_krylov.jmd +++ b/benchmarks/NonlinearProblem/bruss_krylov.jmd @@ -197,13 +197,13 @@ for (j, solver) in enumerate(solvers_scaling_jacobian_free) termination_condition = (alg isa PETScSNES || alg isa KINSOL) ? nothing : NonlinearSolveBase.AbsNormTerminationMode(Base.Fix1(maximum, abs)) - sol = solve(prob, alg; abstol=1e-6, reltol=1e-6, - linsolve_kwargs = (; abstol = 1e-10, reltol = 1e-10), + sol = solve(prob, alg; abstol=1e-5, reltol=1e-5, + linsolve_kwargs = (; abstol = 1e-6, reltol = 1e-6), termination_condition) - if SciMLBase.successful_retcode(sol) || norm(sol.resid, Inf) ≤ 1e-4 - runtimes_scaling[j, i] = @belapsed solve($prob, $alg; abstol=1e-6, - reltol=1e-6, - linsolve_kwargs = (; abstol = 1e-10, reltol = 1e-10), + if SciMLBase.successful_retcode(sol) || norm(sol.resid, Inf) ≤ 1e-3 + runtimes_scaling[j, i] = @belapsed solve($prob, $alg; abstol=1e-5, + reltol=1e-5, + linsolve_kwargs = (; abstol = 1e-6, reltol = 1e-6), termination_condition=$termination_condition) else runtimes_scaling[j, i] = NaN From 40f37f62ed220fe370749aeb62c22b0bdbbca261 Mon Sep 17 00:00:00 2001 From: Avik Pal Date: Thu, 17 Apr 2025 15:59:34 -0400 Subject: [PATCH 23/39] fix: pass in our AD --- benchmarks/NonlinearProblem/bruss_krylov.jmd | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/benchmarks/NonlinearProblem/bruss_krylov.jmd b/benchmarks/NonlinearProblem/bruss_krylov.jmd index 8d48f4c1d..38121854f 100644 --- a/benchmarks/NonlinearProblem/bruss_krylov.jmd +++ b/benchmarks/NonlinearProblem/bruss_krylov.jmd @@ -162,10 +162,10 @@ solvers_scaling_jacobian_free = [ (; pkg = :wrapper, name = "Newton Krylov [Sundials]", alg = KINSOL(; linear_solver = :GMRES)), - (; pkg = :wrapper, name = "Newton Krylov [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", snes_mf = true)), - (; pkg = :wrapper, name = "Newton Krylov (ILU) [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", pc_type = "ilu")), - (; pkg = :wrapper, name = "Newton Krylov (AMG) [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", pc_type = "gamg")), - (; pkg = :wrapper, name = "Newton Krylov (AMG Jacobi) [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", pc_type = "gamg", mg_levels_ksp_type = "richardson", mg_levels_pc_type = "jacobi")), + (; pkg = :wrapper, name = "Newton Krylov [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", snes_mf = true, autodiff=nothing)), + (; pkg = :wrapper, name = "Newton Krylov (ILU) [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", pc_type = "ilu", autodiff=nothing)), + (; pkg = :wrapper, name = "Newton Krylov (AMG) [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", pc_type = "gamg", autodiff=nothing)), + (; pkg = :wrapper, name = "Newton Krylov (AMG Jacobi) [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", pc_type = "gamg", mg_levels_ksp_type = "richardson", mg_levels_pc_type = "jacobi", autodiff=nothing)), (; pkg = :wrapper, name = "TR Krylov (Not Matrix Free) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres")), # (; pkg = :wrapper, name = "TR Krylov (ILU) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", pc_type = "ilu")), # (; pkg = :wrapper, name = "TR Krylov (AMG) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", pc_type = "gamg")), @@ -197,12 +197,12 @@ for (j, solver) in enumerate(solvers_scaling_jacobian_free) termination_condition = (alg isa PETScSNES || alg isa KINSOL) ? nothing : NonlinearSolveBase.AbsNormTerminationMode(Base.Fix1(maximum, abs)) - sol = solve(prob, alg; abstol=1e-5, reltol=1e-5, + sol = solve(prob, alg; abstol=1e-4, reltol=1e-4, linsolve_kwargs = (; abstol = 1e-6, reltol = 1e-6), termination_condition) if SciMLBase.successful_retcode(sol) || norm(sol.resid, Inf) ≤ 1e-3 - runtimes_scaling[j, i] = @belapsed solve($prob, $alg; abstol=1e-5, - reltol=1e-5, + runtimes_scaling[j, i] = @belapsed solve($prob, $alg; abstol=1e-4, + reltol=1e-4, linsolve_kwargs = (; abstol = 1e-6, reltol = 1e-6), termination_condition=$termination_condition) else From 2471352ed69d613424d76e7084faf2915227f4a7 Mon Sep 17 00:00:00 2001 From: Avik Pal Date: Thu, 17 Apr 2025 16:03:49 -0400 Subject: [PATCH 24/39] fix: options --- benchmarks/NonlinearProblem/bruss.jmd | 3 +-- benchmarks/NonlinearProblem/bruss_krylov.jmd | 20 +++++++++---------- .../nonlinear_battery_problem.jmd | 6 +++--- .../nonlinear_solver_23_tests.jmd | 2 +- 4 files changed, 15 insertions(+), 16 deletions(-) diff --git a/benchmarks/NonlinearProblem/bruss.jmd b/benchmarks/NonlinearProblem/bruss.jmd index ba325cb0b..f747e3d0d 100644 --- a/benchmarks/NonlinearProblem/bruss.jmd +++ b/benchmarks/NonlinearProblem/bruss.jmd @@ -553,14 +553,13 @@ solvers_all = [ (; pkg = :wrapper, name = "TR [NLsolve.jl]", solver = Dict(:alg => NLsolveJL(; autodiff = :forward))), (; pkg = :wrapper, name = "NR [Sundials]", solver = Dict(:alg => KINSOL(; linear_solver = :LapackDense, maxsetupcalls=1))), - (; pkg = :wrapper, name = "Newton Krylov [Sundials]", solver = Dict(:alg => KINSOL(; linear_solver = :GMRES))), + (; pkg = :wrapper, name = "Newton Krylov [Sundials]", solver = Dict(:alg => KINSOL(; linear_solver = :GMRES, maxsetupcalls=1))), (; pkg = :wrapper, name = "Mod. Powell [MINPACK]", solver = Dict(:alg => CMINPACK())), (; pkg = :wrapper, name = "NR [PETSc]", solver = Dict(:alg => PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", autodiff = missing))), (; pkg = :wrapper, name = "TR [PETSc]", solver = Dict(:alg => PETScSNES(; snes_type = "newtontr", autodiff = missing))), (; pkg = :wrapper, name = "Newton Krylov [PETSc]", solver = Dict(:alg => PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", autodiff = missing, snes_mf = true))), - (; pkg = :wrapper, name = "TR Krylov [PETSc]", solver = Dict(:alg => PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", autodiff = missing, snes_mf = true))), ]; ``` diff --git a/benchmarks/NonlinearProblem/bruss_krylov.jmd b/benchmarks/NonlinearProblem/bruss_krylov.jmd index 38121854f..c67587653 100644 --- a/benchmarks/NonlinearProblem/bruss_krylov.jmd +++ b/benchmarks/NonlinearProblem/bruss_krylov.jmd @@ -160,16 +160,16 @@ solvers_scaling_jacobian_free = [ (; pkg = :nonlinearsolve, name = "TR Krylov (AMG)", alg = TrustRegion(; linsolve = KrylovJL_GMRES(; precs = algebraicmultigrid), concrete_jac = true)), (; pkg = :nonlinearsolve, name = "TR Krylov (AMG Jacobi)", alg = TrustRegion(; linsolve = KrylovJL_GMRES(; precs = algebraicmultigrid_jacobi), concrete_jac = true)), - (; pkg = :wrapper, name = "Newton Krylov [Sundials]", alg = KINSOL(; linear_solver = :GMRES)), - - (; pkg = :wrapper, name = "Newton Krylov [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", snes_mf = true, autodiff=nothing)), - (; pkg = :wrapper, name = "Newton Krylov (ILU) [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", pc_type = "ilu", autodiff=nothing)), - (; pkg = :wrapper, name = "Newton Krylov (AMG) [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", pc_type = "gamg", autodiff=nothing)), - (; pkg = :wrapper, name = "Newton Krylov (AMG Jacobi) [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", pc_type = "gamg", mg_levels_ksp_type = "richardson", mg_levels_pc_type = "jacobi", autodiff=nothing)), - (; pkg = :wrapper, name = "TR Krylov (Not Matrix Free) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres")), - # (; pkg = :wrapper, name = "TR Krylov (ILU) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", pc_type = "ilu")), - # (; pkg = :wrapper, name = "TR Krylov (AMG) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", pc_type = "gamg")), - # (; pkg = :wrapper, name = "TR Krylov (AMG Jacobi) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", pc_type = "gamg", mg_levels_ksp_type = "richardson", mg_levels_pc_type = "jacobi")), + (; pkg = :wrapper, name = "Newton Krylov [Sundials]", alg = KINSOL(; linear_solver = :GMRES, maxsetupcalls=1)), + + (; pkg = :wrapper, name = "Newton Krylov [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", snes_mf = true)), + (; pkg = :wrapper, name = "Newton Krylov (ILU) [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", pc_type = "ilu")), + (; pkg = :wrapper, name = "Newton Krylov (AMG) [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", pc_type = "gamg")), + (; pkg = :wrapper, name = "Newton Krylov (AMG Jacobi) [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", pc_type = "gamg", mg_levels_ksp_type = "richardson", mg_levels_pc_type = "jacobi")), + (; pkg = :wrapper, name = "TR Krylov (Not Matrix Free) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres")), + (; pkg = :wrapper, name = "TR Krylov (ILU) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", pc_type = "ilu")), + (; pkg = :wrapper, name = "TR Krylov (AMG) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", pc_type = "gamg")), + (; pkg = :wrapper, name = "TR Krylov (AMG Jacobi) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", pc_type = "gamg", mg_levels_ksp_type = "richardson", mg_levels_pc_type = "jacobi")), ] gc_disabled = false diff --git a/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd b/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd index ea78d72df..3d7729d9b 100644 --- a/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd +++ b/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd @@ -67,9 +67,9 @@ solvers_all = [ (; pkg = :wrapper, name = "Levenberg-Marquardt [MINPACK]", solver = Dict(:alg => CMINPACK(; method = :lm))), (; pkg = :wrapper, name = "Newton Raphson [NLsolve.jl]", solver = Dict(:alg => NLsolveJL(; method = :newton, autodiff = :forward))), (; pkg = :wrapper, name = "Trust Region [NLsolve.jl]", solver = Dict(:alg => NLsolveJL(; autodiff = :forward))), - (; pkg = :wrapper, name = "Mod. Newton Raphson [Sundials]", solver = Dict(:alg => KINSOL())), - (; pkg = :wrapper, name = "Newton Krylov [Sundials]", solver = Dict(:alg => KINSOL(; linear_solver = :GMRES))), - (; pkg = :wrapper, name = "Newton Raphson with LineSearch [Sundials]", solver = Dict(:alg => KINSOL(; globalization_strategy = :LineSearch))), + (; pkg = :wrapper, name = "Newton Raphson [Sundials]", solver = Dict(:alg => KINSOL(; linear_solver = :LapackDense, maxsetupcalls=1))), + (; pkg = :wrapper, name = "Newton Krylov [Sundials]", solver = Dict(:alg => KINSOL(; linear_solver = :GMRES, maxsetupcalls=1))), + (; pkg = :wrapper, name = "Newton Raphson with LineSearch [Sundials]", solver = Dict(:alg => KINSOL(; globalization_strategy = :LineSearch, maxsetupcalls=1))), (; pkg = :wrapper, name = "Speed Mapping [SpeedMapping.jl]", solver = Dict(:alg => SpeedMappingJL())), ]; ``` diff --git a/benchmarks/NonlinearProblem/nonlinear_solver_23_tests.jmd b/benchmarks/NonlinearProblem/nonlinear_solver_23_tests.jmd index a59054539..8a2b4f651 100644 --- a/benchmarks/NonlinearProblem/nonlinear_solver_23_tests.jmd +++ b/benchmarks/NonlinearProblem/nonlinear_solver_23_tests.jmd @@ -75,7 +75,7 @@ solvers_all = [ (; pkg = :wrapper, type = :general, name = "NR [NLsolve.jl]", solver = Dict(:alg => NLsolveJL(; method=:newton))), (; pkg = :wrapper, type = :general, name = "TR [NLsolve.jl]", solver = Dict(:alg => NLsolveJL())), (; pkg = :wrapper, type = :general, name = "NR [Sundials]", solver = Dict(:alg => KINSOL(; linear_solver = :LapackDense, maxsetupcalls=1))), - (; pkg = :wrapper, type = :general, name = "NR LineSearch [Sundials]", solver = Dict(:alg => KINSOL(; globalization_strategy=:LineSearch))) + (; pkg = :wrapper, type = :general, name = "NR LineSearch [Sundials]", solver = Dict(:alg => KINSOL(; globalization_strategy=:LineSearch, maxsetupcalls=1))) ]; solver_tracker = []; From 5c86b7bbc3b1db05c1630f74c2bc492cc4f09358 Mon Sep 17 00:00:00 2001 From: Avik Pal Date: Fri, 18 Apr 2025 15:41:23 -0400 Subject: [PATCH 25/39] fix: use enzyme for the battery problem --- benchmarks/NonlinearProblem/Manifest.toml | 4 +- benchmarks/NonlinearProblem/Project.toml | 3 - .../nonlinear_battery_problem.jmd | 59 ++++++++++--------- 3 files changed, 33 insertions(+), 33 deletions(-) diff --git a/benchmarks/NonlinearProblem/Manifest.toml b/benchmarks/NonlinearProblem/Manifest.toml index f04196cf2..8bc8a889e 100644 --- a/benchmarks/NonlinearProblem/Manifest.toml +++ b/benchmarks/NonlinearProblem/Manifest.toml @@ -2569,9 +2569,7 @@ version = "7.2.1+1" [[deps.Sundials]] deps = ["CEnum", "DataStructures", "DiffEqBase", "Libdl", "LinearAlgebra", "Logging", "PrecompileTools", "Reexport", "SciMLBase", "SparseArrays", "Sundials_jll"] -git-tree-sha1 = "87b22845424e6c79fa0dadea81880a17759e701a" -repo-rev = "ap/kinsol_newton" -repo-url = "https://github.com/SciML/Sundials.jl.git" +git-tree-sha1 = "7c7a7ee705724b3c80d5451ac49779db36c6f758" uuid = "c3572dad-4567-51f8-b174-8c6c989267f4" version = "4.28.0" diff --git a/benchmarks/NonlinearProblem/Project.toml b/benchmarks/NonlinearProblem/Project.toml index bc017403a..96c05deff 100644 --- a/benchmarks/NonlinearProblem/Project.toml +++ b/benchmarks/NonlinearProblem/Project.toml @@ -60,6 +60,3 @@ StableRNGs = "1" StaticArrays = "1" Sundials = "4.22" Symbolics = "5, 6" - -[sources] -Sundials = {url = "https://github.com/SciML/Sundials.jl", rev = "ap/kinsol_newton"} diff --git a/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd b/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd index 3d7729d9b..c5af54977 100644 --- a/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd +++ b/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd @@ -1,7 +1,7 @@ --- title: Doyle-Fuller-Newman (DFN) Battery Model Initialization author: Marc D. Berliner & Avik Pal -priority: 10000 +priority: 50000000 --- These benchmarks compares the runtime and error for a range of nonlinear solvers. The solvers are implemented in [NonlinearProblemLibrary.jl](https://github.com/SciML/DiffEqProblemLibrary.jl/blob/master/lib/NonlinearProblemLibrary/src/NonlinearProblemLibrary.jl), where you can find the problem function declarations. We test the following solvers: @@ -23,7 +23,7 @@ Fetch required packages. ```julia using NonlinearSolve, LinearSolve, StaticArrays, Sundials, SpeedMapping, BenchmarkTools, LinearAlgebra, DiffEqDevTools, PolyesterForwardDiff, CairoMakie, - RecursiveFactorization + RecursiveFactorization, Enzyme import MINPACK, NLsolve, PETSc import LineSearches @@ -39,38 +39,43 @@ MoreThuente() = LineSearchesJL(; method = LineSearches.MoreThuente()) GC.enable(false) # for PETSc solvers_all = [ - (; pkg = :nonlinearsolve, name = "Default PolyAlgorithm", solver = Dict(:alg => FastShortcutNonlinearPolyalg())), - (; pkg = :nonlinearsolve, name = "Newton Raphson", solver = Dict(:alg => NewtonRaphson())), - (; pkg = :nonlinearsolve, name = "Newton Raphson (HagerZhang LineSearch)", solver = Dict(:alg => NewtonRaphson(; linesearch = HagerZhang()))), - (; pkg = :nonlinearsolve, name = "Newton Raphson (MoreThuente LineSearch)", solver = Dict(:alg => NewtonRaphson(; linesearch = MoreThuente()))), - (; pkg = :nonlinearsolve, name = "Newton Raphson (BackTracking LineSearch)", solver = Dict(:alg => NewtonRaphson(; linesearch = BackTracking()))), - (; pkg = :nonlinearsolve, name = "Newton Krylov with GMRES", solver = Dict(:alg => NewtonRaphson(; linsolve = KrylovJL_GMRES()))), + (; pkg = :nonlinearsolve, name = "Default PolyAlgorithm", solver = Dict(:alg => FastShortcutNonlinearPolyalg(; autodiff = AutoEnzyme()))), + (; pkg = :nonlinearsolve, name = "Newton Raphson", solver = Dict(:alg => NewtonRaphson(; autodiff = AutoEnzyme()))), + (; pkg = :nonlinearsolve, name = "Newton Raphson (HagerZhang LineSearch)", solver = Dict(:alg => NewtonRaphson(; linesearch = HagerZhang(), autodiff = AutoEnzyme()))), + (; pkg = :nonlinearsolve, name = "Newton Raphson (MoreThuente LineSearch)", solver = Dict(:alg => NewtonRaphson(; linesearch = MoreThuente(), autodiff = AutoEnzyme()))), + (; pkg = :nonlinearsolve, name = "Newton Raphson (BackTracking LineSearch)", solver = Dict(:alg => NewtonRaphson(; linesearch = BackTracking(), autodiff = AutoEnzyme()))), + (; pkg = :nonlinearsolve, name = "Newton Krylov with GMRES", solver = Dict(:alg => NewtonRaphson(; linsolve = KrylovJL_GMRES(), autodiff = AutoEnzyme()))), (; pkg = :nonlinearsolve, name = "DFSane", solver = Dict(:alg => DFSane())), - (; pkg = :nonlinearsolve, name = "Trust Region", solver = Dict(:alg => TrustRegion())), - (; pkg = :nonlinearsolve, name = "Trust Region (NLsolve Update)", solver = Dict(:alg => TrustRegion(; radius_update_scheme = RUS.NLsolve))), - (; pkg = :nonlinearsolve, name = "Trust Region (Nocedal Wright)", solver = Dict(:alg => TrustRegion(; radius_update_scheme = RUS.NocedalWright))), - (; pkg = :nonlinearsolve, name = "Trust Region (Hei)", solver = Dict(:alg => TrustRegion(; radius_update_scheme = RUS.Hei))), - (; pkg = :nonlinearsolve, name = "Trust Region (Yuan)", solver = Dict(:alg => TrustRegion(; radius_update_scheme = RUS.Yuan))), - (; pkg = :nonlinearsolve, name = "Trust Region (Bastin)", solver = Dict(:alg => TrustRegion(; radius_update_scheme = RUS.Bastin))), - (; pkg = :nonlinearsolve, name = "Trust Region (Fan)", solver = Dict(:alg => TrustRegion(; radius_update_scheme = RUS.Fan))), - (; pkg = :nonlinearsolve, name = "Levenberg-Marquardt", solver = Dict(:alg => LevenbergMarquardt())), - (; pkg = :nonlinearsolve, name = "Levenberg-Marquardt with Cholesky", solver = Dict(:alg => LevenbergMarquardt(; linsolve = CholeskyFactorization()))), - (; pkg = :nonlinearsolve, name = "Levenberg-Marquardt (No Geodesic Accln.)", solver = Dict(:alg => LevenbergMarquardt(; disable_geodesic = Val(true)))), - (; pkg = :nonlinearsolve, name = "Levenberg-Marquardt (No Geodesic Accln.) with Cholesky", solver = Dict(:alg => LevenbergMarquardt(; disable_geodesic = Val(true), linsolve = CholeskyFactorization()))), + (; pkg = :nonlinearsolve, name = "Trust Region", solver = Dict(:alg => TrustRegion(; autodiff = AutoEnzyme()))), + (; pkg = :nonlinearsolve, name = "Trust Region (NLsolve Update)", solver = Dict(:alg => TrustRegion(; radius_update_scheme = RUS.NLsolve, autodiff = AutoEnzyme()))), + (; pkg = :nonlinearsolve, name = "Trust Region (Nocedal Wright)", solver = Dict(:alg => TrustRegion(; radius_update_scheme = RUS.NocedalWright, autodiff = AutoEnzyme()))), + (; pkg = :nonlinearsolve, name = "Trust Region (Hei)", solver = Dict(:alg => TrustRegion(; radius_update_scheme = RUS.Hei, autodiff = AutoEnzyme()))), + (; pkg = :nonlinearsolve, name = "Trust Region (Yuan)", solver = Dict(:alg => TrustRegion(; radius_update_scheme = RUS.Yuan, autodiff = AutoEnzyme()))), + (; pkg = :nonlinearsolve, name = "Trust Region (Bastin)", solver = Dict(:alg => TrustRegion(; radius_update_scheme = RUS.Bastin, autodiff = AutoEnzyme()))), + (; pkg = :nonlinearsolve, name = "Trust Region (Fan)", solver = Dict(:alg => TrustRegion(; radius_update_scheme = RUS.Fan, autodiff = AutoEnzyme()))), + (; pkg = :nonlinearsolve, name = "Levenberg-Marquardt", solver = Dict(:alg => LevenbergMarquardt(; autodiff = AutoEnzyme()))), + (; pkg = :nonlinearsolve, name = "Levenberg-Marquardt with Cholesky", solver = Dict(:alg => LevenbergMarquardt(; linsolve = CholeskyFactorization(), autodiff = AutoEnzyme()))), + (; pkg = :nonlinearsolve, name = "Levenberg-Marquardt (No Geodesic Accln.)", solver = Dict(:alg => LevenbergMarquardt(; disable_geodesic = Val(true), autodiff = AutoEnzyme()))), + (; pkg = :nonlinearsolve, name = "Levenberg-Marquardt (No Geodesic Accln.) with Cholesky", solver = Dict(:alg => LevenbergMarquardt(; disable_geodesic = Val(true), linsolve = CholeskyFactorization(), autodiff = AutoEnzyme()))), + + (; pkg = :wrapper, name = "Newton Raphson [Sundials]", solver = Dict(:alg => KINSOL(; linear_solver = :LapackDense, maxsetupcalls=1))), + (; pkg = :wrapper, name = "Newton Krylov [Sundials]", solver = Dict(:alg => KINSOL(; linear_solver = :GMRES, maxsetupcalls=1))), + (; pkg = :wrapper, name = "Newton Raphson with LineSearch [Sundials]", solver = Dict(:alg => KINSOL(; globalization_strategy = :LineSearch, maxsetupcalls=1))), + + (; pkg = :wrapper, name = "Newton Raphson [NLsolve.jl]", solver = Dict(:alg => NLsolveJL(; method = :newton, autodiff = :forward))), + (; pkg = :wrapper, name = "Trust Region [NLsolve.jl]", solver = Dict(:alg => NLsolveJL(; autodiff = :forward))), + + (; pkg = :wrapper, name = "Modified Powell [MINPACK]", solver = Dict(:alg => CMINPACK(; method = :hybr))), + (; pkg = :wrapper, name = "Levenberg-Marquardt [MINPACK]", solver = Dict(:alg => CMINPACK(; method = :lm))), + + (; pkg = :wrapper, name = "Speed Mapping [SpeedMapping.jl]", solver = Dict(:alg => SpeedMappingJL())), + (; pkg = :wrapper, name = "Newton Raphson [PETSc]", solver = Dict(:alg => PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic"))), (; pkg = :wrapper, name = "Newton Raphson with QR [PETSc]", solver = Dict(:alg => PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", pc_type = "qr"))), (; pkg = :wrapper, name = "Newton Raphson with BackTracking [PETSc]", solver = Dict(:alg => PETScSNES(; snes_type = "newtonls"))), (; pkg = :wrapper, name = "Newton Raphson with BackTracking & QR [PETSc]", solver = Dict(:alg => PETScSNES(; snes_type = "newtonls", pc_type = "qr"))), (; pkg = :wrapper, name = "Trust Region [PETSc]", solver = Dict(:alg => PETScSNES(; snes_type = "newtontr"))), (; pkg = :wrapper, name = "Newton Krylov with GMRES [PETSc]", solver = Dict(:alg => PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres"))), - (; pkg = :wrapper, name = "Modified Powell [MINPACK]", solver = Dict(:alg => CMINPACK(; method = :hybr))), - (; pkg = :wrapper, name = "Levenberg-Marquardt [MINPACK]", solver = Dict(:alg => CMINPACK(; method = :lm))), - (; pkg = :wrapper, name = "Newton Raphson [NLsolve.jl]", solver = Dict(:alg => NLsolveJL(; method = :newton, autodiff = :forward))), - (; pkg = :wrapper, name = "Trust Region [NLsolve.jl]", solver = Dict(:alg => NLsolveJL(; autodiff = :forward))), - (; pkg = :wrapper, name = "Newton Raphson [Sundials]", solver = Dict(:alg => KINSOL(; linear_solver = :LapackDense, maxsetupcalls=1))), - (; pkg = :wrapper, name = "Newton Krylov [Sundials]", solver = Dict(:alg => KINSOL(; linear_solver = :GMRES, maxsetupcalls=1))), - (; pkg = :wrapper, name = "Newton Raphson with LineSearch [Sundials]", solver = Dict(:alg => KINSOL(; globalization_strategy = :LineSearch, maxsetupcalls=1))), - (; pkg = :wrapper, name = "Speed Mapping [SpeedMapping.jl]", solver = Dict(:alg => SpeedMappingJL())), ]; ``` From 262c592f6d7c0664b954284b09f789e1a8d1391d Mon Sep 17 00:00:00 2001 From: Avik Pal Date: Fri, 18 Apr 2025 18:12:24 -0400 Subject: [PATCH 26/39] fix: use latest minpack --- benchmarks/NonlinearProblem/Manifest.toml | 18 ++++++++++++------ benchmarks/NonlinearProblem/Project.toml | 3 ++- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/benchmarks/NonlinearProblem/Manifest.toml b/benchmarks/NonlinearProblem/Manifest.toml index 8bc8a889e..ecf2b74de 100644 --- a/benchmarks/NonlinearProblem/Manifest.toml +++ b/benchmarks/NonlinearProblem/Manifest.toml @@ -2,7 +2,7 @@ julia_version = "1.10.9" manifest_format = "2.0" -project_hash = "dfc256be508dd699050df95ae79fddc9918030f6" +project_hash = "238e056c90e16c6986cf34996338ab112f980178" [[deps.ADTypes]] git-tree-sha1 = "e2478490447631aedba0823d4d7a80b2cc8cdb32" @@ -1479,10 +1479,10 @@ weakdeps = ["ChainRulesCore", "ForwardDiff", "SpecialFunctions"] SpecialFunctionsExt = "SpecialFunctions" [[deps.MINPACK]] -deps = ["LinearAlgebra", "Printf"] -git-tree-sha1 = "f52ca94d3349e0f7da6e88a03b15dabf3d305ca4" +deps = ["LinearAlgebra", "Printf", "cminpack_jll"] +git-tree-sha1 = "7833d5fda5c9a7a62b39d37ebd3c7d716fbc0cfc" uuid = "4854310b-de5a-5eb6-a2a5-c1dee2bd17f9" -version = "1.2.0" +version = "1.3.0" [[deps.MKL_jll]] deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "oneTBB_jll"] @@ -1523,9 +1523,9 @@ uuid = "f1f71cc9-e9ae-5b93-9b94-4fe0e1ad3748" version = "5.5.3+0" [[deps.MacroTools]] -git-tree-sha1 = "72aebe0b5051e5143a079a4685a46da330a40472" +git-tree-sha1 = "1e0228a030642014fe5cfe68c2c0a818f9e3f522" uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" -version = "0.5.15" +version = "0.5.16" [[deps.Makie]] deps = ["Animations", "Base64", "CRC32c", "ColorBrewer", "ColorSchemes", "ColorTypes", "Colors", "Contour", "Dates", "DelaunayTriangulation", "Distributions", "DocStringExtensions", "Downloads", "FFMPEG_jll", "FileIO", "FilePaths", "FixedPointNumbers", "Format", "FreeType", "FreeTypeAbstraction", "GeometryBasics", "GridLayoutBase", "ImageBase", "ImageIO", "InteractiveUtils", "Interpolations", "IntervalSets", "InverseFunctions", "Isoband", "KernelDensity", "LaTeXStrings", "LinearAlgebra", "MacroTools", "MakieCore", "Markdown", "MathTeXEngine", "Observables", "OffsetArrays", "PNGFiles", "Packing", "PlotUtils", "PolygonOps", "PrecompileTools", "Printf", "REPL", "Random", "RelocatableFolders", "Scratch", "ShaderAbstractions", "Showoff", "SignedDistanceFields", "SparseArrays", "Statistics", "StatsBase", "StatsFuns", "StructArrays", "TriplotBase", "UnicodeFun", "Unitful"] @@ -2873,6 +2873,12 @@ git-tree-sha1 = "446b23e73536f84e8037f5dce465e92275f6a308" uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" version = "1.5.7+1" +[[deps.cminpack_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "OpenBLAS32_jll"] +git-tree-sha1 = "ca8a038b2cabd4fe3dd206de56ac1285131515a0" +uuid = "b792d7bf-f512-5dba-8a02-6d8084434f1d" +version = "1.3.12+0" + [[deps.isoband_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] git-tree-sha1 = "51b5eeb3f98367157a7a12a1fb0aa5328946c03c" diff --git a/benchmarks/NonlinearProblem/Project.toml b/benchmarks/NonlinearProblem/Project.toml index 96c05deff..e9faf741e 100644 --- a/benchmarks/NonlinearProblem/Project.toml +++ b/benchmarks/NonlinearProblem/Project.toml @@ -29,6 +29,7 @@ StableRNGs = "860ef19b-820b-49d6-a774-d7a799459cd3" StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" Sundials = "c3572dad-4567-51f8-b174-8c6c989267f4" Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7" +cminpack_jll = "b792d7bf-f512-5dba-8a02-6d8084434f1d" [compat] AlgebraicMultigrid = "0.6, 1" @@ -42,7 +43,7 @@ IncompleteLU = "0.2" LaTeXStrings = "1" LineSearches = "7" LinearSolve = "2, 3" -MINPACK = "< 1.3" +MINPACK = "1.2" NLsolve = "4.5" NonlinearProblemLibrary = "0.1" NonlinearSolve = "4" From 75296926b73ea47f98e2dedb2663e12bfa339d9e Mon Sep 17 00:00:00 2001 From: Avik Pal Date: Sat, 19 Apr 2025 00:19:32 -0400 Subject: [PATCH 27/39] fix: force \ for linear solving --- benchmarks/NonlinearProblem/Manifest.toml | 19 ++++--- .../nonlinear_solver_23_tests.jmd | 57 ++++++++++--------- 2 files changed, 42 insertions(+), 34 deletions(-) diff --git a/benchmarks/NonlinearProblem/Manifest.toml b/benchmarks/NonlinearProblem/Manifest.toml index ecf2b74de..9f857f730 100644 --- a/benchmarks/NonlinearProblem/Manifest.toml +++ b/benchmarks/NonlinearProblem/Manifest.toml @@ -645,9 +645,9 @@ version = "1.0.5" [[deps.Enzyme]] deps = ["CEnum", "EnzymeCore", "Enzyme_jll", "GPUCompiler", "LLVM", "Libdl", "LinearAlgebra", "ObjectFile", "PrecompileTools", "Preferences", "Printf", "Random", "SparseArrays"] -git-tree-sha1 = "59c1db6e150d55f2df6a1383759931bf8571c6b8" +git-tree-sha1 = "71147df4e324219b36b74ec4d34cea332c41933e" uuid = "7da242da-08ed-463a-9acd-ee780be4f1d9" -version = "0.13.35" +version = "0.13.36" [deps.Enzyme.extensions] EnzymeBFloat16sExt = "BFloat16s" @@ -1352,9 +1352,9 @@ version = "3.2.2+2" [[deps.Libglvnd_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll", "Xorg_libXext_jll"] -git-tree-sha1 = "ff3b4b9d35de638936a525ecd36e86a8bb919d11" +git-tree-sha1 = "36c4b9df1d1bac2fadb77b27959512ba6c541d91" uuid = "7e76a0d4-f3c7-5321-8279-8d96eeed0f29" -version = "1.7.0+0" +version = "1.7.1+0" [[deps.Libiconv_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -1670,9 +1670,12 @@ version = "1.2.0" [[deps.NonlinearProblemLibrary]] deps = ["LinearAlgebra", "SciMLBase"] -git-tree-sha1 = "063d428dfdf88b79c834953b9f53b2c464a436bd" +git-tree-sha1 = "f5a4e83740e335b2cac3c12f016866c2cded2aaa" +repo-rev = "ap/eff" +repo-subdir = "lib/NonlinearProblemLibrary" +repo-url = "https://github.com/SciML/DiffEqProblemLibrary.jl.git" uuid = "b7050fa9-e91f-4b37-bcee-a89a063da141" -version = "0.1.2" +version = "0.1.3" [[deps.NonlinearSolve]] deps = ["ADTypes", "ArrayInterface", "BracketingNonlinearSolve", "CommonSolve", "ConcreteStructs", "DiffEqBase", "DifferentiationInterface", "FastClosures", "FiniteDiff", "ForwardDiff", "LineSearch", "LinearAlgebra", "LinearSolve", "NonlinearSolveBase", "NonlinearSolveFirstOrder", "NonlinearSolveQuasiNewton", "NonlinearSolveSpectralMethods", "PrecompileTools", "Preferences", "Reexport", "SciMLBase", "SimpleNonlinearSolve", "SparseArrays", "SparseMatrixColorings", "StaticArraysCore", "SymbolicIndexingInterface"] @@ -1708,9 +1711,9 @@ version = "4.6.0" [[deps.NonlinearSolveBase]] deps = ["ADTypes", "Adapt", "ArrayInterface", "CommonSolve", "Compat", "ConcreteStructs", "DifferentiationInterface", "EnzymeCore", "FastClosures", "LinearAlgebra", "Markdown", "MaybeInplace", "Preferences", "Printf", "RecursiveArrayTools", "SciMLBase", "SciMLJacobianOperators", "SciMLOperators", "StaticArraysCore", "SymbolicIndexingInterface", "TimerOutputs"] -git-tree-sha1 = "f8ece81557f7e42879f017fa089e5283988a5f67" +git-tree-sha1 = "e56b37efd60a8caefc7f96831bd9dd225afd6a4a" uuid = "be0214bd-f91f-a760-ac4e-3421ce2b2da0" -version = "1.5.2" +version = "1.5.3" [deps.NonlinearSolveBase.extensions] NonlinearSolveBaseBandedMatricesExt = "BandedMatrices" diff --git a/benchmarks/NonlinearProblem/nonlinear_solver_23_tests.jmd b/benchmarks/NonlinearProblem/nonlinear_solver_23_tests.jmd index 8a2b4f651..d565fbfe0 100644 --- a/benchmarks/NonlinearProblem/nonlinear_solver_23_tests.jmd +++ b/benchmarks/NonlinearProblem/nonlinear_solver_23_tests.jmd @@ -51,31 +51,31 @@ HagerZhang() = LineSearchesJL(; method = LineSearches.HagerZhang()) MoreThuente() = LineSearchesJL(; method = LineSearches.MoreThuente()) solvers_all = [ - (; pkg = :nonlinearsolve, type = :general, name = "Default PolyAlg.", solver = Dict(:alg => FastShortcutNonlinearPolyalg(; u0_len = 10))), - (; pkg = :nonlinearsolve, type = :NR, name = "Newton Raphson", solver = Dict(:alg => NewtonRaphson())), - (; pkg = :nonlinearsolve, type = :NR, name = "NR (HagerZhang)", solver = Dict(:alg => NewtonRaphson(; linesearch = HagerZhang()))), - (; pkg = :nonlinearsolve, type = :NR, name = "NR (MoreThuente)", solver = Dict(:alg => NewtonRaphson(; linesearch = MoreThuente()))), - (; pkg = :nonlinearsolve, type = :NR, name = "NR (BackTracking)", solver = Dict(:alg => NewtonRaphson(; linesearch = BackTracking()))), - (; pkg = :nonlinearsolve, type = :TR, name = "Trust Region", solver = Dict(:alg => TrustRegion())), - (; pkg = :nonlinearsolve, type = :TR, name = "TR (NLsolve Update)", solver = Dict(:alg => TrustRegion(; radius_update_scheme = RUS.NLsolve))), - (; pkg = :nonlinearsolve, type = :TR, name = "TR (Nocedal Wright)", solver = Dict(:alg => TrustRegion(; radius_update_scheme = RUS.NocedalWright))), - (; pkg = :nonlinearsolve, type = :TR, name = "TR (Hei)", solver = Dict(:alg => TrustRegion(; radius_update_scheme = RUS.Hei))), - (; pkg = :nonlinearsolve, type = :TR, name = "TR (Yuan)", solver = Dict(:alg => TrustRegion(; radius_update_scheme = RUS.Yuan))), - (; pkg = :nonlinearsolve, type = :TR, name = "TR (Bastin)", solver = Dict(:alg => TrustRegion(; radius_update_scheme = RUS.Bastin))), - (; pkg = :nonlinearsolve, type = :TR, name = "TR (Fan)", solver = Dict(:alg => TrustRegion(; radius_update_scheme = RUS.Fan))), + (; pkg = :nonlinearsolve, type = :general, name = "Default PolyAlg.", solver = Dict(:alg => FastShortcutNonlinearPolyalg(; u0_len = 10, linsolve = \))), + (; pkg = :nonlinearsolve, type = :NR, name = "Newton Raphson", solver = Dict(:alg => NewtonRaphson(; linsolve = \))), + (; pkg = :nonlinearsolve, type = :NR, name = "NR (HagerZhang)", solver = Dict(:alg => NewtonRaphson(; linsolve = \, linesearch = HagerZhang()))), + (; pkg = :nonlinearsolve, type = :NR, name = "NR (MoreThuente)", solver = Dict(:alg => NewtonRaphson(; linsolve = \, linesearch = MoreThuente()))), + (; pkg = :nonlinearsolve, type = :NR, name = "NR (BackTracking)", solver = Dict(:alg => NewtonRaphson(; linsolve = \, linesearch = BackTracking()))), + (; pkg = :nonlinearsolve, type = :TR, name = "Trust Region", solver = Dict(:alg => TrustRegion(; linsolve = \))), + (; pkg = :nonlinearsolve, type = :TR, name = "TR (NLsolve Update)", solver = Dict(:alg => TrustRegion(; linsolve = \, radius_update_scheme = RUS.NLsolve))), + (; pkg = :nonlinearsolve, type = :TR, name = "TR (Nocedal Wright)", solver = Dict(:alg => TrustRegion(; linsolve = \, radius_update_scheme = RUS.NocedalWright))), + (; pkg = :nonlinearsolve, type = :TR, name = "TR (Hei)", solver = Dict(:alg => TrustRegion(; linsolve = \, radius_update_scheme = RUS.Hei))), + (; pkg = :nonlinearsolve, type = :TR, name = "TR (Yuan)", solver = Dict(:alg => TrustRegion(; linsolve = \, radius_update_scheme = RUS.Yuan))), + (; pkg = :nonlinearsolve, type = :TR, name = "TR (Bastin)", solver = Dict(:alg => TrustRegion(; linsolve = \, radius_update_scheme = RUS.Bastin))), + (; pkg = :nonlinearsolve, type = :TR, name = "TR (Fan)", solver = Dict(:alg => TrustRegion(; linsolve = \, radius_update_scheme = RUS.Fan))), (; pkg = :nonlinearsolve, type = :LM, name = "Levenberg-Marquardt", solver = Dict(:alg => LevenbergMarquardt(; linsolve = QRFactorization()))), (; pkg = :nonlinearsolve, type = :LM, name = "LM with Cholesky", solver = Dict(:alg => LevenbergMarquardt(; linsolve = CholeskyFactorization()))), (; pkg = :nonlinearsolve, type = :LM, name = "LM (α_geodesic=0.5)", solver = Dict(:alg => LevenbergMarquardt(; linsolve = QRFactorization(), α_geodesic=0.5))), (; pkg = :nonlinearsolve, type = :LM, name = "LM (α_geodesic=0.5) Chol.", solver = Dict(:alg => LevenbergMarquardt(; linsolve = CholeskyFactorization(), α_geodesic=0.5))), (; pkg = :nonlinearsolve, type = :LM, name = "LM (no Accln.)", solver = Dict(:alg => LevenbergMarquardt(; linsolve = QRFactorization(), disable_geodesic = Val(true)))), (; pkg = :nonlinearsolve, type = :LM, name = "LM (no Accln.) Chol.", solver = Dict(:alg => LevenbergMarquardt(; linsolve = CholeskyFactorization(), disable_geodesic = Val(true)))), - (; pkg = :nonlinearsolve, type = :general, name = "Pseudo Transient", solver = Dict(:alg => PseudoTransient(; alpha_initial=10.0))), + (; pkg = :nonlinearsolve, type = :general, name = "Pseudo Transient", solver = Dict(:alg => PseudoTransient(; linsolve = \, alpha_initial=10.0))), (; pkg = :wrapper, type = :general, name = "Powell [MINPACK]", solver = Dict(:alg => CMINPACK(; method=:hybr))), - (; pkg = :wrapper, type = :general, name = "LM [MINPACK]", solver = Dict(:alg => CMINPACK(; method=:lm))), - (; pkg = :wrapper, type = :general, name = "NR [NLsolve.jl]", solver = Dict(:alg => NLsolveJL(; method=:newton))), - (; pkg = :wrapper, type = :general, name = "TR [NLsolve.jl]", solver = Dict(:alg => NLsolveJL())), - (; pkg = :wrapper, type = :general, name = "NR [Sundials]", solver = Dict(:alg => KINSOL(; linear_solver = :LapackDense, maxsetupcalls=1))), - (; pkg = :wrapper, type = :general, name = "NR LineSearch [Sundials]", solver = Dict(:alg => KINSOL(; globalization_strategy=:LineSearch, maxsetupcalls=1))) + (; pkg = :wrapper, type = :LM, name = "LM [MINPACK]", solver = Dict(:alg => CMINPACK(; method=:lm))), + (; pkg = :wrapper, type = :NR, name = "NR [NLsolve.jl]", solver = Dict(:alg => NLsolveJL(; method=:newton))), + (; pkg = :wrapper, type = :TR, name = "TR [NLsolve.jl]", solver = Dict(:alg => NLsolveJL())), + (; pkg = :wrapper, type = :NR, name = "NR [Sundials]", solver = Dict(:alg => KINSOL(; linear_solver = :LapackDense, maxsetupcalls=1))), + (; pkg = :wrapper, type = :NR, name = "NR LineSearch [Sundials]", solver = Dict(:alg => KINSOL(; linear_solver = :LapackDense, globalization_strategy=:LineSearch, maxsetupcalls=1))) ]; solver_tracker = []; @@ -95,22 +95,26 @@ Prepares various helper functions for benchmarking a specific problem. function set_ad_chunksize(solvers, u0) ck = NonlinearSolve.pickchunksize(u0) for i in eachindex(solvers) - @set! solvers[i].solver[:alg] = __set_ad_chunksize(solvers[i].solver[:alg], ck) + @set! solvers[i].solver[:alg] = __set_ad_chunksize(solvers[i].solver[:alg], ck, length(u0)) end return solvers end -function __set_ad_chunksize(solver::GeneralizedFirstOrderAlgorithm, ck) - ad = AutoPolyesterForwardDiff(; chunksize = ck) +function __set_ad_chunksize(solver::GeneralizedFirstOrderAlgorithm, ck, N) + if N > ck + ad = AutoPolyesterForwardDiff(; chunksize = ck) + else + ad = AutoForwardDiff(; chunksize = ck) + end return GeneralizedFirstOrderAlgorithm(; solver.descent, solver.linesearch, solver.trustregion, jvp_autodiff = ad, solver.max_shrink_times, solver.vjp_autodiff, concrete_jac = solver.concrete_jac, name = solver.name) end -function __set_ad_chunksize(solver::NonlinearSolvePolyAlgorithm, ck) - algs = [__set_ad_chunksize(alg, ck) for alg in solver.algs] +function __set_ad_chunksize(solver::NonlinearSolvePolyAlgorithm, ck, N) + algs = [__set_ad_chunksize(alg, ck, N) for alg in solver.algs] return NonlinearSolvePolyAlgorithm(algs; solver.start_index) end -__set_ad_chunksize(solver, ck) = solver +__set_ad_chunksize(solver, ck, N) = solver # Benchmarks a specific problem, checks which solvers can solve it and their performance function benchmark_problem!(prob_name; solver_tracker=solver_tracker) @@ -147,7 +151,8 @@ function benchmark_problem!(prob_name; solver_tracker=solver_tracker) wp_general = WorkPrecisionSet(prob.prob, abstols, reltols, getfield.(solvers_general, :solver); names=getfield.(solvers_general, :name), - numruns=100, error_estimate=:l∞, maxiters=1000) + numruns=100, error_estimate=:l∞, maxiters=1000, + termination_condition = NonlinearSolve.AbsNormTerminationMode(Base.Fix1(maximum, abs))) push!(wp_general_tracker, prob_name => wp_general) @@ -321,7 +326,7 @@ end # Benchmarks -We here run benchmarks for each of the 23 models. +We here run benchmarks for each of the 23 models. ### Problem 1 (Generalized Rosenbrock function) From f5d70244552e44f5421171146b6197572c6c5095 Mon Sep 17 00:00:00 2001 From: Avik Pal Date: Sat, 19 Apr 2025 01:30:30 -0400 Subject: [PATCH 28/39] fix: set autodiff properly --- .../NonlinearProblem/nonlinear_solver_23_tests.jmd | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/benchmarks/NonlinearProblem/nonlinear_solver_23_tests.jmd b/benchmarks/NonlinearProblem/nonlinear_solver_23_tests.jmd index d565fbfe0..6f7f0576b 100644 --- a/benchmarks/NonlinearProblem/nonlinear_solver_23_tests.jmd +++ b/benchmarks/NonlinearProblem/nonlinear_solver_23_tests.jmd @@ -108,7 +108,7 @@ function __set_ad_chunksize(solver::GeneralizedFirstOrderAlgorithm, ck, N) end return GeneralizedFirstOrderAlgorithm(; solver.descent, solver.linesearch, solver.trustregion, jvp_autodiff = ad, solver.max_shrink_times, solver.vjp_autodiff, - concrete_jac = solver.concrete_jac, name = solver.name) + concrete_jac = solver.concrete_jac, name = solver.name, autodiff = ad) end function __set_ad_chunksize(solver::NonlinearSolvePolyAlgorithm, ck, N) algs = [__set_ad_chunksize(alg, ck, N) for alg in solver.algs] @@ -133,15 +133,15 @@ function benchmark_problem!(prob_name; solver_tracker=solver_tracker) wp_NR = WorkPrecisionSet(prob.prob, abstols, reltols, getfield.(solvers_NR, :solver); names=getfield.(solvers_NR, :name), numruns=100, error_estimate=:l∞, maxiters=1000, - termination_condition = NonlinearSolve.AbsNormTerminationMode(Base.Fix1(maximum, abs))) + termination_condition = AbsNormTerminationMode(Base.Fix1(maximum, abs))) wp_TR = WorkPrecisionSet(prob.prob, abstols, reltols, getfield.(solvers_TR, :solver); names=getfield.(solvers_TR, :name), numruns=100, error_estimate=:l∞, maxiters=1000, - termination_condition = NonlinearSolve.AbsNormTerminationMode(Base.Fix1(maximum, abs))) + termination_condition = AbsNormTerminationMode(Base.Fix1(maximum, abs))) wp_LM = WorkPrecisionSet(prob.prob, abstols, reltols, getfield.(solvers_LM, :solver); names=getfield.(solvers_LM, :name), numruns=100, error_estimate=:l∞, maxiters=1000, - termination_condition = NonlinearSolve.AbsNormTerminationMode(Base.Fix1(maximum, abs))) + termination_condition = AbsNormTerminationMode(Base.Fix1(maximum, abs))) # Handles the general case solvers_general = filter(s -> s.type==:general, successful_solvers) @@ -152,7 +152,7 @@ function benchmark_problem!(prob_name; solver_tracker=solver_tracker) wp_general = WorkPrecisionSet(prob.prob, abstols, reltols, getfield.(solvers_general, :solver); names=getfield.(solvers_general, :name), numruns=100, error_estimate=:l∞, maxiters=1000, - termination_condition = NonlinearSolve.AbsNormTerminationMode(Base.Fix1(maximum, abs))) + termination_condition = AbsNormTerminationMode(Base.Fix1(maximum, abs))) push!(wp_general_tracker, prob_name => wp_general) @@ -168,7 +168,7 @@ function check_solver(prob, solver) try sol = solve(prob.prob, solver.solver[:alg]; abstol=1e-8, reltol=1e-8, maxiters=1000000, - termination_condition=NonlinearSolve.AbsNormTerminationMode(Base.Fix1(maximum, abs))) + termination_condition=AbsNormTerminationMode(Base.Fix1(maximum, abs))) if norm(sol.resid, Inf) < 1e-6 Base.printstyled("[Info] Solver $(solver.name) returned retcode $(sol.retcode) \ with an residual norm = $(norm(sol.resid, Inf)).\n"; color=:green) From 78c5abac76ec9a308138bf327bd66ee34fecba73 Mon Sep 17 00:00:00 2001 From: Avik Pal Date: Sat, 19 Apr 2025 01:42:31 -0400 Subject: [PATCH 29/39] fix: label --- benchmarks/NonlinearProblem/nonlinear_solver_23_tests.jmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/benchmarks/NonlinearProblem/nonlinear_solver_23_tests.jmd b/benchmarks/NonlinearProblem/nonlinear_solver_23_tests.jmd index 6f7f0576b..779f433f2 100644 --- a/benchmarks/NonlinearProblem/nonlinear_solver_23_tests.jmd +++ b/benchmarks/NonlinearProblem/nonlinear_solver_23_tests.jmd @@ -581,7 +581,7 @@ fig = begin fontsize = 20, tellwidth = false, font = :bold) Legend(fig[5, 4:5], [[l, sc] for (l, sc) in zip(ls[ordering], scs[ordering])], - labels[ordering], "Successful Solvers"; + labels[ordering], "Solvers"; framevisible=true, framewidth = STROKEWIDTH, orientation = :horizontal, titlesize = 20, nbanks = 9, labelsize = 20, halign = :center, tellheight = false, tellwidth = false, patchsize = (40.0f0, 20.0f0)) From dab74ee4c45a63e12cd4180f6ec50db04dc6a0cf Mon Sep 17 00:00:00 2001 From: Avik Pal Date: Sat, 19 Apr 2025 11:06:41 -0400 Subject: [PATCH 30/39] fix: use log2 --- benchmarks/NonlinearProblem/bruss.jmd | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/benchmarks/NonlinearProblem/bruss.jmd b/benchmarks/NonlinearProblem/bruss.jmd index f747e3d0d..86cf00d92 100644 --- a/benchmarks/NonlinearProblem/bruss.jmd +++ b/benchmarks/NonlinearProblem/bruss.jmd @@ -470,7 +470,7 @@ fig = begin fig = Figure(; size = (WIDTH, HEIGHT)) ax = Axis(fig[1, 1:3], ylabel = L"Time ($s$)", xlabel = L"Problem Size ($N$)", - xscale = log10, yscale = log10, xlabelsize = 22, ylabelsize = 22, + xscale = log2, yscale = log2, xlabelsize = 22, ylabelsize = 22, xticklabelsize = 20, yticklabelsize = 20, xtickwidth = STROKEWIDTH, ytickwidth = STROKEWIDTH, spinewidth = STROKEWIDTH) @@ -632,7 +632,7 @@ fig = begin ax = Axis(fig[1, 1], ylabel = L"Time $\mathbf{(s)}$", xlabelsize = 22, ylabelsize = 22, xlabel = L"Error: $\mathbf{||f(u^\ast)||_\infty}$", - xscale = log10, yscale = log10, xtickwidth = STROKEWIDTH, + xscale = log2, yscale = log2, xtickwidth = STROKEWIDTH, ytickwidth = STROKEWIDTH, spinewidth = STROKEWIDTH, xticklabelsize = 20, yticklabelsize = 20) From 7cf7e772873851238bc07e97ac27d1f55fcc8b10 Mon Sep 17 00:00:00 2001 From: Avik Pal Date: Sat, 19 Apr 2025 11:07:45 -0400 Subject: [PATCH 31/39] fix: change legend pos --- benchmarks/NonlinearProblem/bruss_krylov.jmd | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/benchmarks/NonlinearProblem/bruss_krylov.jmd b/benchmarks/NonlinearProblem/bruss_krylov.jmd index c67587653..acaef05aa 100644 --- a/benchmarks/NonlinearProblem/bruss_krylov.jmd +++ b/benchmarks/NonlinearProblem/bruss_krylov.jmd @@ -276,7 +276,7 @@ fig = begin axislegend(ax, [[l, sc] for (l, sc) in zip(ls, scs)], labels, "Successful Solvers"; framevisible=true, framewidth = STROKEWIDTH, orientation = :vertical, - titlesize = 20, labelsize = 16, position = :rb, + titlesize = 20, labelsize = 16, position = :lt, tellheight = true, tellwidth = false, patchsize = (40.0f0, 20.0f0)) axislegend(ax, [ @@ -288,7 +288,7 @@ fig = begin "Preconditioning"; framevisible=true, framewidth = STROKEWIDTH, orientation = :vertical, titlesize = 20, labelsize = 16, tellheight = true, tellwidth = true, patchsize = (40.0f0, 20.0f0), - position = :lt) + position = :rb) fig[0, :] = Label(fig, "Brusselator 2D: Scaling of Jacobian-Free Nonlinear Solvers with Problem Size", From 1355ba979170af47332cb1eb206cedf7262c66e3 Mon Sep 17 00:00:00 2001 From: Avik Pal Date: Sat, 19 Apr 2025 12:36:50 -0400 Subject: [PATCH 32/39] fix: match the krylov configs --- benchmarks/NonlinearProblem/bruss_krylov.jmd | 51 +++++++++++--------- 1 file changed, 28 insertions(+), 23 deletions(-) diff --git a/benchmarks/NonlinearProblem/bruss_krylov.jmd b/benchmarks/NonlinearProblem/bruss_krylov.jmd index acaef05aa..c8ac16faa 100644 --- a/benchmarks/NonlinearProblem/bruss_krylov.jmd +++ b/benchmarks/NonlinearProblem/bruss_krylov.jmd @@ -140,9 +140,13 @@ end function algebraicmultigrid_jacobi(W, p = nothing) A = convert(AbstractMatrix, W) - Pl = AlgebraicMultigrid.aspreconditioner(AlgebraicMultigrid.ruge_stuben( - A, presmoother = AlgebraicMultigrid.Jacobi(rand(size(A, 1))), - postsmoother = AlgebraicMultigrid.Jacobi(rand(size(A, 1))) + Dinv = 1.0 ./ diag(A) # PETSc-style Jacobi: inverse of diagonal + smoother = AlgebraicMultigrid.Jacobi(Dinv) + + Pl = aspreconditioner(AlgebraicMultigrid.ruge_stuben( + A, + presmoother = smoother, + postsmoother = smoother )) return Pl, LinearAlgebra.I end @@ -150,26 +154,27 @@ end Ns = 2 .^ (2:7) solvers_scaling_jacobian_free = [ - (; pkg = :nonlinearsolve, name = "Newton Krylov", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES())), - (; pkg = :nonlinearsolve, name = "Newton Krylov (ILU)", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES(; precs = incompletelu), concrete_jac = true)), - (; pkg = :nonlinearsolve, name = "Newton Krylov (AMG)", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES(; precs = algebraicmultigrid), concrete_jac = true)), - (; pkg = :nonlinearsolve, name = "Newton Krylov (AMG Jacobi)", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES(; precs = algebraicmultigrid_jacobi), concrete_jac = true)), - - (; pkg = :nonlinearsolve, name = "TR Krylov", alg = TrustRegion(; linsolve = KrylovJL_GMRES())), - (; pkg = :nonlinearsolve, name = "TR Krylov (ILU)", alg = TrustRegion(; linsolve = KrylovJL_GMRES(; precs = incompletelu), concrete_jac = true)), - (; pkg = :nonlinearsolve, name = "TR Krylov (AMG)", alg = TrustRegion(; linsolve = KrylovJL_GMRES(; precs = algebraicmultigrid), concrete_jac = true)), - (; pkg = :nonlinearsolve, name = "TR Krylov (AMG Jacobi)", alg = TrustRegion(; linsolve = KrylovJL_GMRES(; precs = algebraicmultigrid_jacobi), concrete_jac = true)), - - (; pkg = :wrapper, name = "Newton Krylov [Sundials]", alg = KINSOL(; linear_solver = :GMRES, maxsetupcalls=1)), - - (; pkg = :wrapper, name = "Newton Krylov [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", snes_mf = true)), - (; pkg = :wrapper, name = "Newton Krylov (ILU) [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", pc_type = "ilu")), - (; pkg = :wrapper, name = "Newton Krylov (AMG) [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", pc_type = "gamg")), - (; pkg = :wrapper, name = "Newton Krylov (AMG Jacobi) [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", pc_type = "gamg", mg_levels_ksp_type = "richardson", mg_levels_pc_type = "jacobi")), - (; pkg = :wrapper, name = "TR Krylov (Not Matrix Free) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres")), - (; pkg = :wrapper, name = "TR Krylov (ILU) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", pc_type = "ilu")), - (; pkg = :wrapper, name = "TR Krylov (AMG) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", pc_type = "gamg")), - (; pkg = :wrapper, name = "TR Krylov (AMG Jacobi) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", pc_type = "gamg", mg_levels_ksp_type = "richardson", mg_levels_pc_type = "jacobi")), + (; pkg = :nonlinearsolve, name = "Newton Krylov", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES(; gmres_restart = 50))), + (; pkg = :nonlinearsolve, name = "Newton Krylov (ILU)", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES(; gmres_restart = 50, precs = incompletelu), concrete_jac = true)), + (; pkg = :nonlinearsolve, name = "Newton Krylov (AMG)", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES(; gmres_restart = 50, precs = algebraicmultigrid), concrete_jac = true)), + (; pkg = :nonlinearsolve, name = "Newton Krylov (AMG Jacobi)", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES(; gmres_restart = 50, precs = algebraicmultigrid_jacobi), concrete_jac = true)), + + (; pkg = :nonlinearsolve, name = "TR Krylov", alg = TrustRegion(; linsolve = KrylovJL_GMRES(; gmres_restart = 50))), + (; pkg = :nonlinearsolve, name = "TR Krylov (ILU)", alg = TrustRegion(; linsolve = KrylovJL_GMRES(; gmres_restart = 50, precs = incompletelu), concrete_jac = true)), + (; pkg = :nonlinearsolve, name = "TR Krylov (AMG)", alg = TrustRegion(; linsolve = KrylovJL_GMRES(; gmres_restart = 50, precs = algebraicmultigrid), concrete_jac = true)), + (; pkg = :nonlinearsolve, name = "TR Krylov (AMG Jacobi)", alg = TrustRegion(; linsolve = KrylovJL_GMRES(; gmres_restart = 50, precs = algebraicmultigrid_jacobi), concrete_jac = true)), + + (; pkg = :wrapper, name = "Newton Krylov [Sundials]", alg = KINSOL(; linear_solver = :GMRES, maxsetupcalls=1, krylov_dim=50)), + + (; pkg = :wrapper, name = "Newton Krylov [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", snes_mf = true, ksp_gmres_restart = 50)), + (; pkg = :wrapper, name = "Newton Krylov (ILU) [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", pc_type = "ilu", ksp_gmres_restart = 50, pc_factor_levels = 0, pc_factor_drop_tolerance = 50.0)), + (; pkg = :wrapper, name = "Newton Krylov (AMG) [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", pc_type = "gamg", ksp_gmres_restart = 50)), + (; pkg = :wrapper, name = "Newton Krylov (AMG Jacobi) [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", pc_type = "gamg", mg_levels_ksp_type = "richardson", mg_levels_pc_type = "jacobi", ksp_gmres_restart = 50)), + + (; pkg = :wrapper, name = "TR Krylov (Not Matrix Free) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", ksp_gmres_restart = 50)), + (; pkg = :wrapper, name = "TR Krylov (ILU) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", pc_type = "ilu", ksp_gmres_restart = 50, pc_factor_levels = 0, pc_factor_drop_tolerance = 50.0)), + (; pkg = :wrapper, name = "TR Krylov (AMG) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", pc_type = "gamg", ksp_gmres_restart = 50)), + (; pkg = :wrapper, name = "TR Krylov (AMG Jacobi) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", pc_type = "gamg", mg_levels_ksp_type = "richardson", mg_levels_pc_type = "jacobi", ksp_gmres_restart = 50)), ] gc_disabled = false From 7b59b3152b308366985de58f3060381b7b55a572 Mon Sep 17 00:00:00 2001 From: Avik Pal Date: Sat, 19 Apr 2025 13:23:00 -0400 Subject: [PATCH 33/39] fix: adjust krylov_dims --- benchmarks/NonlinearProblem/bruss.jmd | 4 +- benchmarks/NonlinearProblem/bruss_krylov.jmd | 43 ++++++++++--------- .../nonlinear_battery_problem.jmd | 6 +-- 3 files changed, 27 insertions(+), 26 deletions(-) diff --git a/benchmarks/NonlinearProblem/bruss.jmd b/benchmarks/NonlinearProblem/bruss.jmd index 86cf00d92..d09bc41ef 100644 --- a/benchmarks/NonlinearProblem/bruss.jmd +++ b/benchmarks/NonlinearProblem/bruss.jmd @@ -553,13 +553,13 @@ solvers_all = [ (; pkg = :wrapper, name = "TR [NLsolve.jl]", solver = Dict(:alg => NLsolveJL(; autodiff = :forward))), (; pkg = :wrapper, name = "NR [Sundials]", solver = Dict(:alg => KINSOL(; linear_solver = :LapackDense, maxsetupcalls=1))), - (; pkg = :wrapper, name = "Newton Krylov [Sundials]", solver = Dict(:alg => KINSOL(; linear_solver = :GMRES, maxsetupcalls=1))), + (; pkg = :wrapper, name = "Newton Krylov [Sundials]", solver = Dict(:alg => KINSOL(; linear_solver = :GMRES, maxsetupcalls=1, krylov_dim = 1000))), (; pkg = :wrapper, name = "Mod. Powell [MINPACK]", solver = Dict(:alg => CMINPACK())), (; pkg = :wrapper, name = "NR [PETSc]", solver = Dict(:alg => PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", autodiff = missing))), (; pkg = :wrapper, name = "TR [PETSc]", solver = Dict(:alg => PETScSNES(; snes_type = "newtontr", autodiff = missing))), - (; pkg = :wrapper, name = "Newton Krylov [PETSc]", solver = Dict(:alg => PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", autodiff = missing, snes_mf = true))), + (; pkg = :wrapper, name = "Newton Krylov [PETSc]", solver = Dict(:alg => PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", autodiff = missing, snes_mf = true, ksp_gmres_restart = 1000))), ]; ``` diff --git a/benchmarks/NonlinearProblem/bruss_krylov.jmd b/benchmarks/NonlinearProblem/bruss_krylov.jmd index c8ac16faa..e66bde092 100644 --- a/benchmarks/NonlinearProblem/bruss_krylov.jmd +++ b/benchmarks/NonlinearProblem/bruss_krylov.jmd @@ -152,29 +152,30 @@ function algebraicmultigrid_jacobi(W, p = nothing) end Ns = 2 .^ (2:7) +krylov_dim = 1000 solvers_scaling_jacobian_free = [ - (; pkg = :nonlinearsolve, name = "Newton Krylov", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES(; gmres_restart = 50))), - (; pkg = :nonlinearsolve, name = "Newton Krylov (ILU)", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES(; gmres_restart = 50, precs = incompletelu), concrete_jac = true)), - (; pkg = :nonlinearsolve, name = "Newton Krylov (AMG)", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES(; gmres_restart = 50, precs = algebraicmultigrid), concrete_jac = true)), - (; pkg = :nonlinearsolve, name = "Newton Krylov (AMG Jacobi)", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES(; gmres_restart = 50, precs = algebraicmultigrid_jacobi), concrete_jac = true)), - - (; pkg = :nonlinearsolve, name = "TR Krylov", alg = TrustRegion(; linsolve = KrylovJL_GMRES(; gmres_restart = 50))), - (; pkg = :nonlinearsolve, name = "TR Krylov (ILU)", alg = TrustRegion(; linsolve = KrylovJL_GMRES(; gmres_restart = 50, precs = incompletelu), concrete_jac = true)), - (; pkg = :nonlinearsolve, name = "TR Krylov (AMG)", alg = TrustRegion(; linsolve = KrylovJL_GMRES(; gmres_restart = 50, precs = algebraicmultigrid), concrete_jac = true)), - (; pkg = :nonlinearsolve, name = "TR Krylov (AMG Jacobi)", alg = TrustRegion(; linsolve = KrylovJL_GMRES(; gmres_restart = 50, precs = algebraicmultigrid_jacobi), concrete_jac = true)), - - (; pkg = :wrapper, name = "Newton Krylov [Sundials]", alg = KINSOL(; linear_solver = :GMRES, maxsetupcalls=1, krylov_dim=50)), - - (; pkg = :wrapper, name = "Newton Krylov [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", snes_mf = true, ksp_gmres_restart = 50)), - (; pkg = :wrapper, name = "Newton Krylov (ILU) [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", pc_type = "ilu", ksp_gmres_restart = 50, pc_factor_levels = 0, pc_factor_drop_tolerance = 50.0)), - (; pkg = :wrapper, name = "Newton Krylov (AMG) [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", pc_type = "gamg", ksp_gmres_restart = 50)), - (; pkg = :wrapper, name = "Newton Krylov (AMG Jacobi) [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", pc_type = "gamg", mg_levels_ksp_type = "richardson", mg_levels_pc_type = "jacobi", ksp_gmres_restart = 50)), - - (; pkg = :wrapper, name = "TR Krylov (Not Matrix Free) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", ksp_gmres_restart = 50)), - (; pkg = :wrapper, name = "TR Krylov (ILU) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", pc_type = "ilu", ksp_gmres_restart = 50, pc_factor_levels = 0, pc_factor_drop_tolerance = 50.0)), - (; pkg = :wrapper, name = "TR Krylov (AMG) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", pc_type = "gamg", ksp_gmres_restart = 50)), - (; pkg = :wrapper, name = "TR Krylov (AMG Jacobi) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", pc_type = "gamg", mg_levels_ksp_type = "richardson", mg_levels_pc_type = "jacobi", ksp_gmres_restart = 50)), + (; pkg = :nonlinearsolve, name = "Newton Krylov", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES())), + (; pkg = :nonlinearsolve, name = "Newton Krylov (ILU)", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES(; precs = incompletelu), concrete_jac = true)), + (; pkg = :nonlinearsolve, name = "Newton Krylov (AMG)", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES(; precs = algebraicmultigrid), concrete_jac = true)), + (; pkg = :nonlinearsolve, name = "Newton Krylov (AMG Jacobi)", alg = NewtonRaphson(; linsolve = KrylovJL_GMRES(; precs = algebraicmultigrid_jacobi), concrete_jac = true)), + + (; pkg = :nonlinearsolve, name = "TR Krylov", alg = TrustRegion(; linsolve = KrylovJL_GMRES())), + (; pkg = :nonlinearsolve, name = "TR Krylov (ILU)", alg = TrustRegion(; linsolve = KrylovJL_GMRES(; precs = incompletelu), concrete_jac = true)), + (; pkg = :nonlinearsolve, name = "TR Krylov (AMG)", alg = TrustRegion(; linsolve = KrylovJL_GMRES(; precs = algebraicmultigrid), concrete_jac = true)), + (; pkg = :nonlinearsolve, name = "TR Krylov (AMG Jacobi)", alg = TrustRegion(; linsolve = KrylovJL_GMRES(; precs = algebraicmultigrid_jacobi), concrete_jac = true)), + + (; pkg = :wrapper, name = "Newton Krylov [Sundials]", alg = KINSOL(; linear_solver = :GMRES, maxsetupcalls=1, krylov_dim)), + + (; pkg = :wrapper, name = "Newton Krylov [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", snes_mf = true, ksp_gmres_restart = krylov_dim)), + (; pkg = :wrapper, name = "Newton Krylov (ILU) [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", pc_type = "ilu", ksp_gmres_restart = krylov_dim, pc_factor_levels = 0, pc_factor_drop_tolerance = 50.0)), + (; pkg = :wrapper, name = "Newton Krylov (AMG) [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", pc_type = "gamg", ksp_gmres_restart = krylov_dim)), + (; pkg = :wrapper, name = "Newton Krylov (AMG Jacobi) [PETSc]", alg = PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", pc_type = "gamg", mg_levels_ksp_type = "richardson", mg_levels_pc_type = "jacobi", ksp_gmres_restart = krylov_dim)), + + (; pkg = :wrapper, name = "TR Krylov (Not Matrix Free) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", ksp_gmres_restart = krylov_dim)), + (; pkg = :wrapper, name = "TR Krylov (ILU) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", pc_type = "ilu", ksp_gmres_restart = krylov_dim, pc_factor_levels = 0, pc_factor_drop_tolerance = 50.0)), + (; pkg = :wrapper, name = "TR Krylov (AMG) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", pc_type = "gamg", ksp_gmres_restart = krylov_dim)), + (; pkg = :wrapper, name = "TR Krylov (AMG Jacobi) [PETSc]", alg = PETScSNES(; snes_type = "newtontr", ksp_type = "gmres", pc_type = "gamg", mg_levels_ksp_type = "richardson", mg_levels_pc_type = "jacobi", ksp_gmres_restart = krylov_dim)), ] gc_disabled = false diff --git a/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd b/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd index c5af54977..f6655ec3a 100644 --- a/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd +++ b/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd @@ -1,7 +1,7 @@ --- title: Doyle-Fuller-Newman (DFN) Battery Model Initialization author: Marc D. Berliner & Avik Pal -priority: 50000000 +priority: 50000 --- These benchmarks compares the runtime and error for a range of nonlinear solvers. The solvers are implemented in [NonlinearProblemLibrary.jl](https://github.com/SciML/DiffEqProblemLibrary.jl/blob/master/lib/NonlinearProblemLibrary/src/NonlinearProblemLibrary.jl), where you can find the problem function declarations. We test the following solvers: @@ -59,7 +59,7 @@ solvers_all = [ (; pkg = :nonlinearsolve, name = "Levenberg-Marquardt (No Geodesic Accln.) with Cholesky", solver = Dict(:alg => LevenbergMarquardt(; disable_geodesic = Val(true), linsolve = CholeskyFactorization(), autodiff = AutoEnzyme()))), (; pkg = :wrapper, name = "Newton Raphson [Sundials]", solver = Dict(:alg => KINSOL(; linear_solver = :LapackDense, maxsetupcalls=1))), - (; pkg = :wrapper, name = "Newton Krylov [Sundials]", solver = Dict(:alg => KINSOL(; linear_solver = :GMRES, maxsetupcalls=1))), + (; pkg = :wrapper, name = "Newton Krylov [Sundials]", solver = Dict(:alg => KINSOL(; linear_solver = :LapackDense, linear_solver = :GMRES, maxsetupcalls=1, krylov_dim = 1000)), (; pkg = :wrapper, name = "Newton Raphson with LineSearch [Sundials]", solver = Dict(:alg => KINSOL(; globalization_strategy = :LineSearch, maxsetupcalls=1))), (; pkg = :wrapper, name = "Newton Raphson [NLsolve.jl]", solver = Dict(:alg => NLsolveJL(; method = :newton, autodiff = :forward))), @@ -75,7 +75,7 @@ solvers_all = [ (; pkg = :wrapper, name = "Newton Raphson with BackTracking [PETSc]", solver = Dict(:alg => PETScSNES(; snes_type = "newtonls"))), (; pkg = :wrapper, name = "Newton Raphson with BackTracking & QR [PETSc]", solver = Dict(:alg => PETScSNES(; snes_type = "newtonls", pc_type = "qr"))), (; pkg = :wrapper, name = "Trust Region [PETSc]", solver = Dict(:alg => PETScSNES(; snes_type = "newtontr"))), - (; pkg = :wrapper, name = "Newton Krylov with GMRES [PETSc]", solver = Dict(:alg => PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres"))), + (; pkg = :wrapper, name = "Newton Krylov with GMRES [PETSc]", solver = Dict(:alg => PETScSNES(; snes_type = "newtonls", snes_linesearch_type = "basic", ksp_type = "gmres", ksp_gmres_restart = 1000))), ]; ``` From af7236df71887d23203dce671fbe56e5c7440249 Mon Sep 17 00:00:00 2001 From: Avik Pal Date: Sat, 19 Apr 2025 13:47:13 -0400 Subject: [PATCH 34/39] fix: try to make PETSc converge --- benchmarks/NonlinearProblem/Manifest.toml | 62 +++----------------- benchmarks/NonlinearProblem/Project.toml | 3 - benchmarks/NonlinearProblem/bruss.jmd | 2 +- benchmarks/NonlinearProblem/bruss_krylov.jmd | 16 ++--- 4 files changed, 19 insertions(+), 64 deletions(-) diff --git a/benchmarks/NonlinearProblem/Manifest.toml b/benchmarks/NonlinearProblem/Manifest.toml index 9f857f730..26c01f681 100644 --- a/benchmarks/NonlinearProblem/Manifest.toml +++ b/benchmarks/NonlinearProblem/Manifest.toml @@ -2,7 +2,7 @@ julia_version = "1.10.9" manifest_format = "2.0" -project_hash = "238e056c90e16c6986cf34996338ab112f980178" +project_hash = "aa4307464817aa623e6c9e668c5d811fc2e377cc" [[deps.ADTypes]] git-tree-sha1 = "e2478490447631aedba0823d4d7a80b2cc8cdb32" @@ -104,12 +104,6 @@ version = "0.4.2" uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" version = "1.1.1" -[[deps.ArnoldiMethod]] -deps = ["LinearAlgebra", "Random", "StaticArrays"] -git-tree-sha1 = "d57bd3762d308bded22c3b82d033bff85f6195c6" -uuid = "ec485272-7323-5ecc-a04f-4719b315124d" -version = "0.4.0" - [[deps.ArrayInterface]] deps = ["Adapt", "LinearAlgebra"] git-tree-sha1 = "017fcb757f8e921fb44ee063a7aafe5f89b86dd1" @@ -960,12 +954,6 @@ git-tree-sha1 = "8a6dbda1fd736d60cc477d99f2e7a042acfa46e8" uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472" version = "1.3.15+0" -[[deps.Graphs]] -deps = ["ArnoldiMethod", "Compat", "DataStructures", "Distributed", "Inflate", "LinearAlgebra", "Random", "SharedArrays", "SimpleTraits", "SparseArrays", "Statistics"] -git-tree-sha1 = "3169fd3440a02f35e549728b0890904cfd4ae58a" -uuid = "86223c79-3864-5bf0-83f7-82e725a168b6" -version = "1.12.1" - [[deps.GridLayoutBase]] deps = ["GeometryBasics", "InteractiveUtils", "Observables"] git-tree-sha1 = "dc6bed05c15523624909b3953686c5f5ffa10adc" @@ -1212,9 +1200,9 @@ version = "0.6.9" [[deps.Krylov]] deps = ["LinearAlgebra", "Printf", "SparseArrays"] -git-tree-sha1 = "b29d37ce30fa401a4563b18880ab91f979a29734" +git-tree-sha1 = "efadd12a94e5e73b7652479c2693cd394d684f95" uuid = "ba0b0d4f-ebba-5204-a429-3ac8c609bfb7" -version = "0.9.10" +version = "0.10.0" [[deps.LAME_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -1352,9 +1340,9 @@ version = "3.2.2+2" [[deps.Libglvnd_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll", "Xorg_libXext_jll"] -git-tree-sha1 = "36c4b9df1d1bac2fadb77b27959512ba6c541d91" +git-tree-sha1 = "d36c21b9e7c172a44a10484125024495e2625ac0" uuid = "7e76a0d4-f3c7-5321-8279-8d96eeed0f29" -version = "1.7.1+0" +version = "1.7.1+1" [[deps.Libiconv_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -1402,9 +1390,9 @@ uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" [[deps.LinearSolve]] deps = ["ArrayInterface", "ChainRulesCore", "ConcreteStructs", "DocStringExtensions", "EnumX", "GPUArraysCore", "InteractiveUtils", "Krylov", "LazyArrays", "Libdl", "LinearAlgebra", "MKL_jll", "Markdown", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "Setfield", "StaticArraysCore", "UnPack"] -git-tree-sha1 = "2bbbdcce6d80a4aed929365d0d97b15b264bb9e7" +git-tree-sha1 = "7507995b62a97d428723e5b97a940838d9ecb376" uuid = "7ed4a6bd-45f5-4d41-b270-4a48e9bafcae" -version = "3.7.2" +version = "3.8.0" [deps.LinearSolve.extensions] LinearSolveBandedMatricesExt = "BandedMatrices" @@ -1901,12 +1889,6 @@ git-tree-sha1 = "cf181f0b1e6a18dfeb0ee8acc4a9d1672499626c" uuid = "f57f5aa1-a3ce-4bc8-8ab9-96f992907883" version = "0.4.4" -[[deps.PackageExtensionCompat]] -git-tree-sha1 = "fb28e33b8a95c4cee25ce296c817d89cc2e53518" -uuid = "65ce6f38-6b18-4e1d-a461-8949797d7930" -version = "1.0.2" -weakdeps = ["Requires", "TOML"] - [[deps.Packing]] deps = ["GeometryBasics"] git-tree-sha1 = "bc5bf2ea3d5351edf285a06b0016788a121ce92c" @@ -2326,9 +2308,9 @@ version = "1.2.0" [[deps.SimpleNonlinearSolve]] deps = ["ADTypes", "ArrayInterface", "BracketingNonlinearSolve", "CommonSolve", "ConcreteStructs", "DifferentiationInterface", "FastClosures", "FiniteDiff", "ForwardDiff", "LineSearch", "LinearAlgebra", "MaybeInplace", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase", "Setfield", "StaticArraysCore"] -git-tree-sha1 = "a65e81385d9c45c6abe49d7676d71b07b5b6bbc1" +git-tree-sha1 = "0e08e4b2a1b0ffe7e4e16f1a63b49e32d8ce65b4" uuid = "727e6d20-b764-4bd8-a329-72de5adea6c7" -version = "2.2.1" +version = "2.2.2" [deps.SimpleNonlinearSolve.extensions] SimpleNonlinearSolveChainRulesCoreExt = "ChainRulesCore" @@ -2394,26 +2376,6 @@ version = "0.6.17" NaNMath = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b" -[[deps.SparseDiffTools]] -deps = ["ADTypes", "Adapt", "ArrayInterface", "Compat", "DataStructures", "FiniteDiff", "ForwardDiff", "Graphs", "LinearAlgebra", "PackageExtensionCompat", "Random", "Reexport", "SciMLOperators", "Setfield", "SparseArrays", "StaticArrayInterface", "StaticArrays", "UnPack", "VertexSafeGraphs"] -git-tree-sha1 = "59bad850b1fc622051bf80a2be86c95b487e0243" -uuid = "47a9eef4-7e08-11e9-0b38-333d64bd3804" -version = "2.24.0" - - [deps.SparseDiffTools.extensions] - SparseDiffToolsEnzymeExt = "Enzyme" - SparseDiffToolsPolyesterExt = "Polyester" - SparseDiffToolsPolyesterForwardDiffExt = "PolyesterForwardDiff" - SparseDiffToolsSymbolicsExt = "Symbolics" - SparseDiffToolsZygoteExt = "Zygote" - - [deps.SparseDiffTools.weakdeps] - Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" - Polyester = "f517fe37-dbe3-4b94-8317-1923a5111588" - PolyesterForwardDiff = "98d1487c-24ca-40b6-b7ab-df2af84e126b" - Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7" - Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" - [[deps.SparseMatrixColorings]] deps = ["ADTypes", "DocStringExtensions", "LinearAlgebra", "Random", "SparseArrays"] git-tree-sha1 = "0582fd1410a01a667a2a2a79cdc98a7c478d11d8" @@ -2769,12 +2731,6 @@ git-tree-sha1 = "58d6e80b4ee071f5efd07fda82cb9fbe17200868" uuid = "81def892-9a0e-5fdd-b105-ffc91e053289" version = "1.3.0" -[[deps.VertexSafeGraphs]] -deps = ["Graphs"] -git-tree-sha1 = "8351f8d73d7e880bfc042a8b6922684ebeafb35c" -uuid = "19fa3120-7c27-5ec5-8db8-b0b0aa330d6f" -version = "0.2.0" - [[deps.Weave]] deps = ["Base64", "Dates", "Highlights", "JSON", "Markdown", "Mustache", "Pkg", "Printf", "REPL", "RelocatableFolders", "Requires", "Serialization", "YAML"] git-tree-sha1 = "092217eb5443926d200ae9325f103906efbb68b1" diff --git a/benchmarks/NonlinearProblem/Project.toml b/benchmarks/NonlinearProblem/Project.toml index e9faf741e..b0502f841 100644 --- a/benchmarks/NonlinearProblem/Project.toml +++ b/benchmarks/NonlinearProblem/Project.toml @@ -22,14 +22,12 @@ SciMLBenchmarks = "31c91b34-3c75-11e9-0341-95557aab0344" Setfield = "efcf1570-3423-57d1-acb7-fd33fddbac46" SimpleNonlinearSolve = "727e6d20-b764-4bd8-a329-72de5adea6c7" SparseConnectivityTracer = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" -SparseDiffTools = "47a9eef4-7e08-11e9-0b38-333d64bd3804" SparseMatrixColorings = "0a514795-09f3-496d-8182-132a7b665d35" SpeedMapping = "f1835b91-879b-4a3f-a438-e4baacf14412" StableRNGs = "860ef19b-820b-49d6-a774-d7a799459cd3" StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" Sundials = "c3572dad-4567-51f8-b174-8c6c989267f4" Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7" -cminpack_jll = "b792d7bf-f512-5dba-8a02-6d8084434f1d" [compat] AlgebraicMultigrid = "0.6, 1" @@ -55,7 +53,6 @@ SciMLBenchmarks = "0.1" Setfield = "1" SimpleNonlinearSolve = "2" SparseConnectivityTracer = "0.6" -SparseDiffTools = "2" SpeedMapping = "0.3" StableRNGs = "1" StaticArrays = "1" diff --git a/benchmarks/NonlinearProblem/bruss.jmd b/benchmarks/NonlinearProblem/bruss.jmd index d09bc41ef..f21ec3c33 100644 --- a/benchmarks/NonlinearProblem/bruss.jmd +++ b/benchmarks/NonlinearProblem/bruss.jmd @@ -9,7 +9,7 @@ priority: 1000000 Fetch required packages ```julia -using NonlinearSolve, SparseDiffTools, LinearAlgebra, SparseArrays, DiffEqDevTools, +using NonlinearSolve, LinearAlgebra, SparseArrays, DiffEqDevTools, CairoMakie, Symbolics, BenchmarkTools, PolyesterForwardDiff, LinearSolve, Sundials, Enzyme, SparseConnectivityTracer, DifferentiationInterface, SparseMatrixColorings import NLsolve, MINPACK, PETSc, RecursiveFactorization diff --git a/benchmarks/NonlinearProblem/bruss_krylov.jmd b/benchmarks/NonlinearProblem/bruss_krylov.jmd index e66bde092..8d9a153da 100644 --- a/benchmarks/NonlinearProblem/bruss_krylov.jmd +++ b/benchmarks/NonlinearProblem/bruss_krylov.jmd @@ -9,7 +9,7 @@ priority: 10000000 Fetch required packages ```julia -using NonlinearSolve, SparseDiffTools, LinearAlgebra, SparseArrays, DiffEqDevTools, +using NonlinearSolve, LinearAlgebra, SparseArrays, DiffEqDevTools, CairoMakie, Symbolics, BenchmarkTools, PolyesterForwardDiff, LinearSolve, Sundials, Enzyme, SparseConnectivityTracer, DifferentiationInterface, SparseMatrixColorings import NLsolve, MINPACK, PETSc, RecursiveFactorization @@ -203,13 +203,15 @@ for (j, solver) in enumerate(solvers_scaling_jacobian_free) termination_condition = (alg isa PETScSNES || alg isa KINSOL) ? nothing : NonlinearSolveBase.AbsNormTerminationMode(Base.Fix1(maximum, abs)) - sol = solve(prob, alg; abstol=1e-4, reltol=1e-4, - linsolve_kwargs = (; abstol = 1e-6, reltol = 1e-6), + # PETSc doesn't converge properly + tol = alg isa PETScSNES ? 1e-6 : 1e-4 + sol = solve(prob, alg; abstol=tol, reltol=tol, + linsolve_kwargs = (; abstol = 1e-8, reltol = 1e-8), termination_condition) - if SciMLBase.successful_retcode(sol) || norm(sol.resid, Inf) ≤ 1e-3 - runtimes_scaling[j, i] = @belapsed solve($prob, $alg; abstol=1e-4, - reltol=1e-4, - linsolve_kwargs = (; abstol = 1e-6, reltol = 1e-6), + if SciMLBase.successful_retcode(sol) || norm(sol.resid, Inf) ≤ 1e-4 + runtimes_scaling[j, i] = @belapsed solve($prob, $alg; + abstol=$tol, reltol=$tol, + linsolve_kwargs = (; abstol = 1e-8, reltol = 1e-8), termination_condition=$termination_condition) else runtimes_scaling[j, i] = NaN From f0ac6f21d9894221df64a87b395950da9fd671d6 Mon Sep 17 00:00:00 2001 From: Avik Pal Date: Sat, 19 Apr 2025 14:45:54 -0400 Subject: [PATCH 35/39] fix: old API --- benchmarks/NonlinearProblem/bruss.jmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/benchmarks/NonlinearProblem/bruss.jmd b/benchmarks/NonlinearProblem/bruss.jmd index f21ec3c33..4efe7a0f9 100644 --- a/benchmarks/NonlinearProblem/bruss.jmd +++ b/benchmarks/NonlinearProblem/bruss.jmd @@ -133,7 +133,7 @@ bruss_f!, u0 = (du, u) -> test_problem.f(du, u, test_problem.p), test_problem.u0 y = similar(u0) J = Float64.(ADTypes.jacobian_sparsity(bruss_f!, y, u0, TracerSparsityDetector())) -colors = matrix_colors(J) +colors = fast_coloring(J, ColoringProblem(), GreedyColoringAlgorithm()) begin J_ = similar(J) From 29053d2ad09b88fd6f11ff36a3ab0911b867ba9c Mon Sep 17 00:00:00 2001 From: Avik Pal Date: Sat, 19 Apr 2025 15:21:37 -0400 Subject: [PATCH 36/39] fix: legend --- benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd b/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd index f6655ec3a..a50778c5e 100644 --- a/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd +++ b/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd @@ -318,7 +318,7 @@ fig = begin axislegend(ax, [[l, sc] for (l, sc) in zip(ls, scs)], [solver.name for solver in successful_solvers[idxs]], "Successful Solvers"; framevisible=true, framewidth = STROKEWIDTH, orientation = :vertical, - titlesize = 20, nbanks = 1, labelsize = 16,# margin = (0.0, 80.0, 0.0, 0.0), + titlesize = 20, nbanks = 2, labelsize = 16,# margin = (0.0, 80.0, 0.0, 0.0), tellheight = false, tellwidth = true, patchsize = (40.0f0, 20.0f0), position = :rb) From 46efc9164d83be5eebc0cab9cadf28336cf2dc15 Mon Sep 17 00:00:00 2001 From: Avik Pal Date: Sat, 19 Apr 2025 18:10:22 -0400 Subject: [PATCH 37/39] fix: parse error --- benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd b/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd index a50778c5e..dbfc78a76 100644 --- a/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd +++ b/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd @@ -59,7 +59,7 @@ solvers_all = [ (; pkg = :nonlinearsolve, name = "Levenberg-Marquardt (No Geodesic Accln.) with Cholesky", solver = Dict(:alg => LevenbergMarquardt(; disable_geodesic = Val(true), linsolve = CholeskyFactorization(), autodiff = AutoEnzyme()))), (; pkg = :wrapper, name = "Newton Raphson [Sundials]", solver = Dict(:alg => KINSOL(; linear_solver = :LapackDense, maxsetupcalls=1))), - (; pkg = :wrapper, name = "Newton Krylov [Sundials]", solver = Dict(:alg => KINSOL(; linear_solver = :LapackDense, linear_solver = :GMRES, maxsetupcalls=1, krylov_dim = 1000)), + (; pkg = :wrapper, name = "Newton Krylov [Sundials]", solver = Dict(:alg => KINSOL(; linear_solver = :LapackDense, linear_solver = :GMRES, maxsetupcalls=1, krylov_dim = 1000))), (; pkg = :wrapper, name = "Newton Raphson with LineSearch [Sundials]", solver = Dict(:alg => KINSOL(; globalization_strategy = :LineSearch, maxsetupcalls=1))), (; pkg = :wrapper, name = "Newton Raphson [NLsolve.jl]", solver = Dict(:alg => NLsolveJL(; method = :newton, autodiff = :forward))), From 68fef6b56483c4563e71acb743d84e58d67642ba Mon Sep 17 00:00:00 2001 From: Avik Pal Date: Sat, 19 Apr 2025 18:11:46 -0400 Subject: [PATCH 38/39] fix: bankds --- benchmarks/NonlinearProblem/bruss_krylov.jmd | 2 +- benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/benchmarks/NonlinearProblem/bruss_krylov.jmd b/benchmarks/NonlinearProblem/bruss_krylov.jmd index 8d9a153da..dcad03e76 100644 --- a/benchmarks/NonlinearProblem/bruss_krylov.jmd +++ b/benchmarks/NonlinearProblem/bruss_krylov.jmd @@ -284,7 +284,7 @@ fig = begin axislegend(ax, [[l, sc] for (l, sc) in zip(ls, scs)], labels, "Successful Solvers"; framevisible=true, framewidth = STROKEWIDTH, orientation = :vertical, - titlesize = 20, labelsize = 16, position = :lt, + titlesize = 20, labelsize = 16, position = :lt, nbanks = 2, tellheight = true, tellwidth = false, patchsize = (40.0f0, 20.0f0)) axislegend(ax, [ diff --git a/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd b/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd index dbfc78a76..d851e0d1b 100644 --- a/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd +++ b/benchmarks/NonlinearProblem/nonlinear_battery_problem.jmd @@ -59,7 +59,7 @@ solvers_all = [ (; pkg = :nonlinearsolve, name = "Levenberg-Marquardt (No Geodesic Accln.) with Cholesky", solver = Dict(:alg => LevenbergMarquardt(; disable_geodesic = Val(true), linsolve = CholeskyFactorization(), autodiff = AutoEnzyme()))), (; pkg = :wrapper, name = "Newton Raphson [Sundials]", solver = Dict(:alg => KINSOL(; linear_solver = :LapackDense, maxsetupcalls=1))), - (; pkg = :wrapper, name = "Newton Krylov [Sundials]", solver = Dict(:alg => KINSOL(; linear_solver = :LapackDense, linear_solver = :GMRES, maxsetupcalls=1, krylov_dim = 1000))), + (; pkg = :wrapper, name = "Newton Krylov [Sundials]", solver = Dict(:alg => KINSOL(; linear_solver = :GMRES, maxsetupcalls=1, krylov_dim = 1000))), (; pkg = :wrapper, name = "Newton Raphson with LineSearch [Sundials]", solver = Dict(:alg => KINSOL(; globalization_strategy = :LineSearch, maxsetupcalls=1))), (; pkg = :wrapper, name = "Newton Raphson [NLsolve.jl]", solver = Dict(:alg => NLsolveJL(; method = :newton, autodiff = :forward))), @@ -318,7 +318,7 @@ fig = begin axislegend(ax, [[l, sc] for (l, sc) in zip(ls, scs)], [solver.name for solver in successful_solvers[idxs]], "Successful Solvers"; framevisible=true, framewidth = STROKEWIDTH, orientation = :vertical, - titlesize = 20, nbanks = 2, labelsize = 16,# margin = (0.0, 80.0, 0.0, 0.0), + titlesize = 20, nbanks = 1, labelsize = 16,# margin = (0.0, 80.0, 0.0, 0.0), tellheight = false, tellwidth = true, patchsize = (40.0f0, 20.0f0), position = :rb) From a771deba402b8390d05422c25a80c50be58e588b Mon Sep 17 00:00:00 2001 From: Avik Pal Date: Sat, 19 Apr 2025 22:07:38 -0400 Subject: [PATCH 39/39] feat: up deps --- benchmarks/NonlinearProblem/Manifest.toml | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/benchmarks/NonlinearProblem/Manifest.toml b/benchmarks/NonlinearProblem/Manifest.toml index 26c01f681..efd0238a6 100644 --- a/benchmarks/NonlinearProblem/Manifest.toml +++ b/benchmarks/NonlinearProblem/Manifest.toml @@ -639,9 +639,9 @@ version = "1.0.5" [[deps.Enzyme]] deps = ["CEnum", "EnzymeCore", "Enzyme_jll", "GPUCompiler", "LLVM", "Libdl", "LinearAlgebra", "ObjectFile", "PrecompileTools", "Preferences", "Printf", "Random", "SparseArrays"] -git-tree-sha1 = "71147df4e324219b36b74ec4d34cea332c41933e" +git-tree-sha1 = "1ada57d156b4701604683ebad7b4b105197ab601" uuid = "7da242da-08ed-463a-9acd-ee780be4f1d9" -version = "0.13.36" +version = "0.13.37" [deps.Enzyme.extensions] EnzymeBFloat16sExt = "BFloat16s" @@ -1659,9 +1659,6 @@ version = "1.2.0" [[deps.NonlinearProblemLibrary]] deps = ["LinearAlgebra", "SciMLBase"] git-tree-sha1 = "f5a4e83740e335b2cac3c12f016866c2cded2aaa" -repo-rev = "ap/eff" -repo-subdir = "lib/NonlinearProblemLibrary" -repo-url = "https://github.com/SciML/DiffEqProblemLibrary.jl.git" uuid = "b7050fa9-e91f-4b37-bcee-a89a063da141" version = "0.1.3"