版本发布 8
## Krylov v0.10.4 [Diff since v0.10.3](https://github.com/JuliaSmoothOptimizers/Krylov.jl/compare/v0.10.3...v0.10.4) **Merged pull requests:** - Allow vm and vn to be of different types (#1038) (@timholy) - Improve inference for Double64 (#1045) (@timholy) - Upgrade LNLQ (#1051) (@amontoison) - fix typos (#1053) (@spaette) - Update the workspaces to handle more storage types (#1056) (@amontoison) **Closed issues:** - KrylovConstructor: vm and vn should allow different types (#1037) - Possible TRICG and TRIMR improvements (#1042) - typos (#1048) - lnlq can return NaNs (#1050) - Unsupported keyword argument "memory" for `GMRES` and `DQGMRES` (#1055)
## Krylov v0.10.3 [Diff since v0.10.2](https://github.com/JuliaSmoothOptimizers/Krylov.jl/compare/v0.10.2...v0.10.3) **Merged pull requests:** - [CI] Test Krylov.jl on GPU for Julia 1.12 (#1031) (@amontoison) - [CI] Test Krylov.jl on Mac x86_64 (#1032) (@amontoison) - Use kmul! and kldiv! for Krylov methods and processes (#1035) (@amontoison) - Fix warm-start of TriCG and TriMR (#1040) (@timholy) **Closed issues:** - Add kmul! and kldiv! (#1030)
## Krylov v0.10.1 [Diff since v0.10.0](https://github.com/JuliaSmoothOptimizers/Krylov.jl/compare/v0.10.0...v0.10.1) **Merged pull requests:** - [documentation] Specify how to use krylov_workspace for each workspace (#1002) (@amontoison) - [documentation] Tutorial on distributed Krylov solvers using MPI.jl (#1003) (@amontoison) - [documentation] Update the routines for the support of MPI (#1004) (@amontoison) - Add new methods for krylov_workspace and krylov_solve (#1005) (@amontoison)
## Krylov v0.10.0 [Diff since v0.9.10](https://github.com/JuliaSmoothOptimizers/Krylov.jl/compare/v0.9.10...v0.10.0) ## Breaking changes - `solve!` is replaced by `krylov_solve!` - Update the API for workspaces (the suffix `Solver` is now `Workspace`) - Ensure that `S` is a concrete type in the workspaces - Update the API for workspace accessors (not exported anymore) - Rename some workspace accessors (`iteration_count`, `solution_count`, `Aprod_count` and `Atprod_count`) ## New features - Add `kdiv!`, `kscalcopy!` and `kdivcopy!` for the support of custom workspaces - Add a generic interface (`krylov_workspace`, `krylov_solve` and `krylov_solve!`) - Add documentation on the generic API and the workspace accessors - Update the docstrings to add more cross-references - Add a function `Krylov.elapsed_time` ## Other changes - Krylov.jl now requires Julia 1.10 - Update the reference of MinAres and CAr - Return a nice error if we detect that the preconditioner is not SPD in CG **Merged pull requests:** - Implement Line Search with Negative Curvature Detection for MINRES Based on Liu et al. (2022) (#969) (@farhadrclass) - Update the reference of MinAres (#971) (@amontoison) - Update the reference of MinAres and CAr (#972) (@amontoison) - Don't export Krylov.solve! (#973) (@amontoison) - Require Julia 1.10 (#974) (@amontoison) - Update the API for workspaces (#975) (@amontoison) - S should be a concrete type in the workspaces (#977) (@amontoison) - Update Breakage.yml for PRs from a fork (#978) (@amontoison) - Add kdiv! -- kscalcopy! -- kdivcopy! (#980) (@amontoison) - Add a generic interface for Krylov.jl (#983) (@amontoison) - Rename the files krylov_solve.jl and test_solvers.jl (#989) (@amontoison) - Use the suffix Workspace instead of Solver (#990) (@amontoison) - Return a nice error if we detect the preconditioner is not SPD in CG (#991) (@amontoison) - Add references to the generic interface in the docstrings (#992) (@amontoison) - krylov_solvers -> krylov_workspaces (#993) (@amontoison) - [documentation] Add more cross-references to the in-place methods (#994) (@amontoison) - Remove aliases (#995) (@amontoison) - Add a function krylov_elapsed_time (#996) (@amontoison) - Add a new file krylov_show.jl (#997) (@amontoison) - Update the API for workspace accessors (#998) (@amontoison) - Polish the API for workspace accessors (#1000) (@amontoison) **Closed issues:** - Improve the documentation of functions Aprod and Atprod (#488) - GMRES Fails Silently From Stagnation (#729) - StaticArrays support (#766) - Remove broadcast in Krylov methods (#930) - Unexport Krylov.solve! with the next major release (#934) - Add a function to get the timer directly from a KrylovWorkspace (#936) - nshifts and S should be the last argument in the Krylov solvers (#946) - Require Julia 1.10 for the next major release (#964) - Bug Report: CR and CG Solvers Fail with Float16 Precision (#968) - Update breakage.yml for PRs from a fork (#976) - Add a generic constructor for KrylovSolver and BlockKrylovSolver (#979) - Rename the files krylov_solve.jl and test_solvers.jl (#984) - Rename the suffix of the workspaces *Solver -> *Workspace (#987)
## Krylov v0.9.10 [Diff since v0.9.9](https://github.com/JuliaSmoothOptimizers/Krylov.jl/compare/v0.9.9...v0.9.10) **Merged pull requests:** - Use my new implementation of coytrito! in GPUArrays.jl (#950) (@amontoison) - Use similar for dynamic allocations (#952) (@amontoison) - [CI] Test Krylov.jl on Linux ARM (#953) (@amontoison) - [documentation] Add an example with BlockArrays.jl (#954) (@amontoison) - Add an option reorthogonalization in hermitian_lanczos (#957) (@amontoison) - CR: Update iterate on first iteration for negative curvature with line search and when zero curvature is detected (#958) (@farhadrclass) - Add more tests for the option warm-start (#961) (@amontoison) **Closed issues:** - Compatibility with BlockArrays (#605) - [Benchmarks] Krylov.jl vs PETSc (#693) - ComponentArrays support (#769) - parallel gmres (#847) - Add stationary methods (#904) - scalar indexing error when using block_gmres on GPU (#913) - How to solve Ax=b when A is a Sparse Array ? (#925) - Add more advanced constructors for KrylovSolver (#933) - Add a opnorm function (#942) - [documentation] Add an example of preconditioned saddle point system with BlockArrays (#949) - Use similar instead of S(undef, n) for dynamic allocations (#951)
## Krylov v0.9.9 [Diff since v0.9.8](https://github.com/JuliaSmoothOptimizers/Krylov.jl/compare/v0.9.8...v0.9.9) **Merged pull requests:** - Add an implementation of BLOCK-MINRES (#884) (@amontoison) - Matrix-free example example with a PDE (#911) (@amontoison) - Update nvidia.jl (#916) (@amontoison) - [documentation] Improve the docstring of SimpleStats (#917) (@amontoison) - Improve the docstrings of Krylov.jl (#918) (@amontoison) - [documentation] Add comments in krylov_solve.jl (#919) (@amontoison) - [documentation] Add a link for the paper of BiCGstab(ℓ) (#920) (@amontoison) - Update krylov_solve.jl (#921) (@amontoison) - Fix a typo -- reflexion -> reflection (#922) (@amontoison) - Use the infix operator to compute the timer (#923) (@amontoison) - Update with JSOBestieTemplate for Krylov (#924) (@tmigot) - Use rmul! instead of broadcast for kscal! (#926) (@amontoison) - [documentation] Add a page about custom workspaces (#927) (@amontoison) - Fix to_boundary for complex numbers (#928) (@amontoison) - Remove broadcast in MINRES-QLP (#929) (@amontoison) - Update trilqr.jl (#931) (@amontoison) - Update with JSOBestieTemplate for Krylov (#938) (@tmigot) - Upgrade TriCG, TriMR and GPMR (#943) (@amontoison) - Upgrade the Krylov processes and detect breakdowns (#944) (@amontoison) - Add a new constructor for all Krylov solvers (#947) (@amontoison) **Closed issues:** - Add a link for BICGSTAB(l) (#902) - Support custom vector types (#905) - Add comments in the source file krylov_solve.jl (#915) - use of AbstractArray (#935) - Shifted MINRES Allocations Issue (#937) - Test CGLS with shifts on rectangular systems (#948)
## Krylov v0.9.8 [Diff since v0.9.7](https://github.com/JuliaSmoothOptimizers/Krylov.jl/compare/v0.9.7...v0.9.8) **Merged pull requests:** - Remove old macros (#907) (@amontoison) - Add a function knorm_elliptic (#909) (@amontoison) - Improve the matrix-free example with FFT (#912) (@amontoison) - Fix block_gmres on GPUs (#914) (@amontoison) **Closed issues:** - Remove the macros and directly use the functions starting with k... internally (#906) - Add a function for `sqrt(kdotr(n, v, z))` (#908)
## Krylov v0.9.7 [Diff since v0.9.6](https://github.com/JuliaSmoothOptimizers/Krylov.jl/compare/v0.9.6...v0.9.7) **Merged pull requests:** - Add `cgls-shift` algorithm (#853) (@tmigot) - Support preconditioners in BiLQ and QMR (#862) (@amontoison) - Add tests with LinearOperators.jl (#863) (@amontoison) - Don't use the macro @. (#864) (@amontoison) - Fix copy_triangle for Julia 1.11 (#866) (@amontoison) - Fix preconditioning in `cg` when optional `radius` argument is positive (#868) (@mpf) - Fix download count badge (#869) (@pricklypointer) - Use GHA to test on Apple Silicon (#871) (@amontoison) - Update test_allocations.jl (#872) (@amontoison) - Update Aqua.yml (#873) (@amontoison) - Bump actions/download-artifact from 3 to 4.1.7 in /.github/workflows (#874) (@dependabot[bot]) - Validate CITATION.cff (#875) (@tmigot) - [Buildkite] Update pipeline.yml (#877) (@amontoison) - Test block-GMRES on GPUs (#878) (@amontoison) - Update the documentation (#879) (@amontoison) - [documentation] Add an example with RandomizedPreconditioners.jl (#880) (@amontoison) - [documentation] Update preconditioners.md (#881) (@amontoison) - [documentation] Add a matrix-free example with FFTW.jl (#883) (@amontoison) - Add a reference for USYMQR (#885) (@amontoison) - Use metaprogramming to generate out-of-place methods (#887) (@amontoison) - [documentation] Replace IncompleteLU.jl by KrylovPreconditioners.jl (#889) (@amontoison) - Improve type inference of extract_parameters (#890) (@amontoison) - Define cg_lanczos_shift with metaprogramming (#892) (@amontoison) - Use metaprogramming to generate more out-of-place methods (#893) (@amontoison) - Generate all out-of-place methods in krylov_solve.jl (#894) (@amontoison) - [documentation] Improve the matrix-free example with FFT (#895) (@amontoison) - Add a macro kfill! (#897) (@amontoison) - Swap the arguments in the macro kcopy! (#898) (@amontoison) - Use the macro kcopy! instead of broadcast (#899) (@amontoison) - Improve the docstrings of block-Krylov processes (#900) (@amontoison) - Specify that memory is an optional argument for some KrylovSolvers (#901) (@amontoison) - [documentation] Improve the structure of matrix_free.md (#903) (@amontoison) **Closed issues:** - Use 5-argument mul! (#353) - Add documentation about memory parameter (#521) - convert function for solvers (#585) - Use `Real` as FC instead of `AbstractFloat` ? (#646) - ReshapedArrays support (#770) - Download badge is broken (#851) - `block_gmres` fails with `LinearOperator` (#854) - Add tests with LinearOperators.jl (#861) - Possible support for Dual types for Automatic Differentiation (#870) - Use metaprogramming to generate all out-of-place methods (#888)