Krylov.jl

Krylov.jl: A Julia basket of hand-picked Krylov methods - Published in JOSS (2023)

https://github.com/juliasmoothoptimizers/krylov.jl

Science Score: 100.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 5 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: joss.theoj.org
  • Committers with academic emails
    1 of 25 committers (4.0%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords

julia julia-language krylov linear-algebra linear-systems optimization

Keywords from Contributors

pde fluxes graphics sbp summation-by-parts fourier finite-difference meshing standardization discontinuous-galerkin
Last synced: 4 months ago · JSON representation ·

Repository

A Julia Basket of Hand-Picked Krylov Methods

Basic Info
  • Host: GitHub
  • Owner: JuliaSmoothOptimizers
  • License: other
  • Language: Julia
  • Default Branch: main
  • Size: 23.6 MB
Statistics
  • Stars: 424
  • Watchers: 8
  • Forks: 63
  • Open Issues: 59
  • Releases: 46
Topics
julia julia-language krylov linear-algebra linear-systems optimization
Created almost 11 years ago · Last pushed 4 months ago
Metadata Files
Readme License Citation

README.md

Krylov.jl: A Julia basket of hand-picked Krylov methods

| Documentation | CI | Coverage | DOI | Downloads | |:-----------------:|:------:|:------------:|:-------:|:-------------:| | docs-stable docs-dev | build-gh | codecov | doi | downloads |

How to Cite

If you use Krylov.jl in your work, please cite it using the metadata given in CITATION.cff.

BibTeX

@article{montoison-orban-2023, author = {Montoison, Alexis and Orban, Dominique}, title = {{Krylov.jl: A Julia basket of hand-picked Krylov methods}}, journal = {Journal of Open Source Software}, volume = {8}, number = {89}, pages = {5187}, year = {2023}, doi = {10.21105/joss.05187} }

Content

This package provides implementations of certain of the most useful Krylov method for a variety of problems:

  1. Square or rectangular full-rank systems

Ax = b

should be solved when b lies in the range space of A. This situation occurs when * A is square and nonsingular, * A is tall and has full column rank and b lies in the range of A.

  1. Linear least-squares problems

minimize ‖b - Ax

should be solved when b is not in the range of A (inconsistent systems), regardless of the shape and rank of A. This situation mainly occurs when * A is square and singular, * A is tall and thin.

Underdetermined systems are less common but also occur.

If there are infinitely many such x (because A is column rank-deficient), one with minimum norm is identified

minimize ‖x‖   subject to   x ∈ argmin ‖b - Ax‖.

  1. Linear least-norm problems

minimize ‖x‖   subject to   Ax = b

should be solved when A is column rank-deficient but b is in the range of A (consistent systems), regardless of the shape of A. This situation mainly occurs when * A is square and singular, * A is short and wide.

Overdetermined systems are less common but also occur.

  1. Adjoint systems

Ax = b   and   Aᴴy = c

where A can have any shape.

  1. Saddle-point and Hermitian quasi-definite systems

[M     A]  [x] = [b]
[Aᴴ   -N]  [y]    [c]

where A can have any shape.

  1. Generalized saddle-point and non-Hermitian partitioned systems

[M   A]  [x] = [b]
[B   N]  [y]    [c]

where A can have any shape and B has the shape of Aᴴ. A, B, b and c must be all nonzero.

Krylov solvers are particularly appropriate in situations where such problems must be solved but a factorization is not possible, either because: * A is not available explicitly, * A would be dense or would consume an excessive amount of memory if it were materialized, * factors would consume an excessive amount of memory.

Iterative methods are recommended in either of the following situations: * the problem is sufficiently large that a factorization is not feasible or would be slow, * an effective preconditioner is known in cases where the problem has unfavorable spectral structure, * the operator can be represented efficiently as a sparse matrix, * the operator is fast, i.e., can be applied with better complexity than if it were materialized as a matrix. Certain fast operators would materialize as dense matrices.

Features

All solvers in Krylov.jl have in-place version, are compatible with GPU and work in any floating-point data type.

How to Install

Krylov can be installed and tested through the Julia package manager:

julia julia> ] pkg> add Krylov pkg> test Krylov

Bug reports and discussions

If you think you found a bug, feel free to open an issue. Focused suggestions and requests can also be opened as issues. Before opening a pull request, start an issue or a discussion on the topic, please.

If you want to ask a question not suited for a bug report, feel free to start a discussion here. This forum is for general discussion about this repository and the JuliaSmoothOptimizers organization, so questions about any of our packages are welcome.

Owner

  • Name: JuliaSmoothOptimizers
  • Login: JuliaSmoothOptimizers
  • Kind: organization
  • Location: DOI: 10.5281/zenodo.2655082

Infrastructure and Solvers for Continuous Optimization in Julia

JOSS Publication

Krylov.jl: A Julia basket of hand-picked Krylov methods
Published
September 26, 2023
Volume 8, Issue 89, Page 5187
Authors
Alexis Montoison ORCID
GERAD and Department of Mathematics and Industrial Engineering, Polytechnique Montréal, QC, Canada.
Dominique Orban ORCID
GERAD and Department of Mathematics and Industrial Engineering, Polytechnique Montréal, QC, Canada.
Editor
Jed Brown ORCID
Tags
linear algebra Krylov methods Krylov processes sparse linear systems GPU computing

Citation (CITATION.cff)

cff-version: "1.2.0"
title: "Krylov.jl: A Julia basket of hand-picked Krylov methods"
message: "If you use this software, please cite our article in the Journal of Open Source Software."
type: software
authors:
  - given-names: Alexis
    family-names: Montoison
    orcid: "https://orcid.org/0000-0002-3403-5450"
    affiliation: "GERAD and Department of Mathematics and Industrial Engineering, Polytechnique Montréal, QC, Canada."
  - given-names: Dominique
    family-names: Orban
    orcid: "https://orcid.org/0000-0002-8017-7687"
    affiliation: "GERAD and Department of Mathematics and Industrial Engineering, Polytechnique Montréal, QC, Canada."
  - given-names: contributors
contact:
  - given-names: Alexis
    family-names: Montoison
    email: alexis.montoison@gerad.ca
    orcid: "https://orcid.org/0000-0002-3403-5450"
identifiers:
  - description: Zenodo archive
    type: doi
    value: 10.5281/zenodo.822073
  - description: JOSS paper
    type: doi
    value: 10.21105/joss.05187
keywords:
  - Julia
  - linear algebra
  - Krylov methods
  - Krylov processes
  - sparse linear systems
  - GPU computing
license: MPL-2.0
repository-code: "https://github.com/JuliaSmoothOptimizers/Krylov.jl"
preferred-citation:
  authors:
  - given-names: Alexis
    family-names: Montoison
    orcid: "https://orcid.org/0000-0002-3403-5450"
  - given-names: Dominique
    family-names: Orban
    orcid: "https://orcid.org/0000-0002-8017-7687"
  date-published: "2023-09-26"
  doi: 10.21105/joss.05187
  issn: 2475-9066
  issue: 89
  journal: Journal of Open Source Software
  publisher:
    name: Open Journals
  start: 5187
  title: "Krylov.jl: A Julia basket of hand-picked Krylov methods"
  type: article
  url: "https://joss.theoj.org/papers/10.21105/joss.05187"
  volume: 8

GitHub Events

Total
  • Create event: 29
  • Commit comment event: 12
  • Release event: 6
  • Issues event: 83
  • Watch event: 68
  • Delete event: 47
  • Issue comment event: 255
  • Push event: 291
  • Pull request review event: 113
  • Pull request review comment event: 190
  • Pull request event: 151
  • Fork event: 11
Last Year
  • Create event: 29
  • Commit comment event: 12
  • Release event: 6
  • Issues event: 83
  • Watch event: 68
  • Delete event: 47
  • Issue comment event: 255
  • Push event: 291
  • Pull request review event: 113
  • Pull request review comment event: 190
  • Pull request event: 151
  • Fork event: 11

Committers

Last synced: 5 months ago

All Time
  • Total Commits: 1,365
  • Total Committers: 25
  • Avg Commits per committer: 54.6
  • Development Distribution Score (DDS): 0.307
Past Year
  • Commits: 137
  • Committers: 4
  • Avg Commits per committer: 34.25
  • Development Distribution Score (DDS): 0.117
Top Committers
Name Email Commits
Alexis Montoison a****n@p****a 946
Dominique Orban d****n@g****m 220
Geoffroy Leconte g****0@g****m 77
tmigot t****t@g****m 37
Abel Soares Siqueira a****a@g****m 30
farhadrclass 3****s 11
Xx-Alexis-xX a****n@e****r 9
DahitoMA m****o@p****a 8
Pawel Latawiec p****l@m****m 4
Monssaf Toukal t****f@g****m 4
AntoninKns 4****s 4
Michael Friedlander m****l@f****o 2
Alexander Seiler s****x@g****m 1
Christopher Rackauckas a****s@c****m 1
Jaroslav Lobačevski j****b@g****m 1
Julia TagBot 5****t 1
Mathieu Besançon m****n@g****m 1
Tim Besard t****d@g****m 1
dependabot[bot] 4****] 1
fpacaud f****8@g****m 1
github-actions[bot] 4****] 1
pricklypointer 1****r 1
Jean-Pierre Dussault d****1@d****a 1
restrin r****6@g****m 1
vepiteski v****i@g****m 1

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 123
  • Total pull requests: 308
  • Average time to close issues: 5 months
  • Average time to close pull requests: 22 days
  • Total issue authors: 31
  • Total pull request authors: 17
  • Average comments per issue: 2.28
  • Average comments per pull request: 2.26
  • Merged pull requests: 250
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 49
  • Pull requests: 137
  • Average time to close issues: 30 days
  • Average time to close pull requests: 6 days
  • Issue authors: 12
  • Pull request authors: 7
  • Average comments per issue: 1.04
  • Average comments per pull request: 1.77
  • Merged pull requests: 120
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • amontoison (81)
  • gdalle (7)
  • rveltz (4)
  • albertomercurio (3)
  • farhadrclass (2)
  • loiseaujc (1)
  • JuliaTagBot (1)
  • charleskawczynski (1)
  • KlausC (1)
  • abelsiqueira (1)
  • alexQueue (1)
  • lijas (1)
  • ZhangFengshun (1)
  • jonas-schulze (1)
  • packquickly (1)
Pull Request Authors
  • amontoison (293)
  • abelsiqueira (22)
  • farhadrclass (13)
  • tmigot (9)
  • gdalle (4)
  • glwagner (2)
  • dpo (2)
  • oscardssmith (2)
  • mpf (2)
  • ChrisRackauckas (2)
  • dependabot[bot] (1)
  • pricklypointer (1)
  • geoffroyleconte (1)
  • goggle (1)
  • paraynaud (1)
Top Labels
Issue Labels
enhancement (23) documentation (18) GPU (5) tests (5) bug (4) question (3) CI (3) breaking (3) performance (3) Epic (1)
Pull Request Labels
performance (10) documentation (8) breaking (5) GPU (4) new method (4) CI (2) Epic (1) bug (1) dependencies (1)

Packages

  • Total packages: 1
  • Total downloads:
    • julia 5,505 total
  • Total dependent packages: 26
  • Total dependent repositories: 13
  • Total versions: 45
juliahub.com: Krylov

A Julia Basket of Hand-Picked Krylov Methods

  • Versions: 45
  • Dependent Packages: 26
  • Dependent Repositories: 13
  • Downloads: 5,505 Total
Rankings
Dependent repos count: 2.5%
Stargazers count: 2.8%
Average: 2.9%
Dependent packages count: 3.1%
Forks count: 3.2%
Last synced: 4 months ago

Dependencies

.github/workflows/Aqua.yml actions
  • actions/checkout v3 composite
  • julia-actions/setup-julia latest composite
.github/workflows/Breakage.yml actions
  • actions/cache v3 composite
  • actions/checkout v3 composite
  • actions/download-artifact v3 composite
  • actions/upload-artifact v3 composite
  • julia-actions/julia-buildpkg v1 composite
  • julia-actions/setup-julia v1 composite
.github/workflows/CommentPR.yml actions
  • actions/github-script v3.1.0 composite
  • actions/github-script v6 composite
.github/workflows/CompatHelper.yml actions
  • julia-actions/setup-julia v1 composite
.github/workflows/Documentation.yml actions
  • actions/checkout v3 composite
  • julia-actions/setup-julia latest composite
.github/workflows/Invalidations.yml actions
  • actions/checkout v3 composite
  • julia-actions/julia-buildpkg v1 composite
  • julia-actions/julia-invalidations v1 composite
  • julia-actions/setup-julia v1 composite
.github/workflows/TagBot.yml actions
  • JuliaRegistries/TagBot v1 composite
.github/workflows/ci.yml actions
  • actions/cache v3 composite
  • actions/checkout v3 composite
  • codecov/codecov-action v3 composite
  • julia-actions/julia-buildpkg v1 composite
  • julia-actions/julia-processcoverage v1 composite
  • julia-actions/julia-runtest v1 composite
  • julia-actions/setup-julia v1 composite