randnla.jl
Julia algorithms for randomized numerical linear algebra.
Science Score: 54.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
-
✓Academic publication links
Links to: arxiv.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (13.2%) to scientific vocabulary
Keywords
Repository
Julia algorithms for randomized numerical linear algebra.
Basic Info
Statistics
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
- Releases: 0
Topics
Metadata Files
README.md
RandNLA.jl: Randomized algorithms for numerical linear algebra
Author: Cooper Simpson
RandNLA.jl is a pure julia package for fundamental operations and state-of-the-art research. The core is lightweight, but a variety of extensions allow for easy plug-and-play use in other packages. This is still very much a work in progress, and a full roadmap is given in Roadmap.
License & Citation
All source code is made available under an MIT license. You can freely use and modify the code, without warranty, so long as you provide attribution to the authors. See LICENSE for the full text.
This repository can be cited using the GitHub action in the sidebar, or using the metadata in CITATION.cff.
Features
- AbstractFloat support?
- GPU support?
- Sparse support?
- Complex support?
Installation
This package can be installed just like any other Julia package. From the terminal, after starting the Julia REPL, run the following:
julia
julia> ]
pkg> add RandNLA
Testing
To test the package, run the following command in the REPL:
julia
using Pkg
Pkg.test(test_args=[<specific tests>])
Usage
Load the package as usual:
julia
using RandNLA
Design Principles
- Provide a consolidated suite of algorithms, both well established and state of the art
- Interface nicely with other Julia linear algebra packages such as Krylov.jl
- Leverage Julia to provide efficient implementations while staying adaptable and updateable
References
Papers
Julia Packages
- RandomizedLinAlg.jl
- Last updated early 2021
- RandNLA.jl
- Last updated mid 2022
- RandomLinearAlgebraSolvers.jl
- Last updated late 2021
- Randomized Preconditioners.jl
Python Packages
- PARLA
- Continuously updated
- PyRLA: Randomized Linear Algebra in Python
- Last updated 2017
- RandNLA
- Last updated 2017
C++ Pacakges
- RandLAPACK
- Continuously updated
- RandBLAS
- Continuously updated
Roadmap
- Basic Sketching
- Agnostic to RNG, i.e. use
AbstractRNGtype - Left vs. right sketching
- Explicit vs implicit, i.e. is the sketching opeartor realized
- Dense sketching operators
- Rademacher
- Uniform
- Gaussian
- Haar
- Can allow for abitrary distribution as well
- Methods for constructing these distributions?
- Sparse sketching opeartors
- Short-axis
- Long-axis
- iid
- Agnostic to RNG, i.e. use
- Property estimation
- Trace
- Norm
- Decompositions
- SVD
- Nystrom (positive definite and indefinite)
- ID
- CUR
- Advanced Sketching
- Leverage-score sampling
- Advanced algorithms
- Randomized finite differences
Owner
- Name: Cooper Simpson
- Login: RS-Coop
- Kind: user
- Website: rs-coop.github.io
- Repositories: 3
- Profile: https://github.com/RS-Coop
Citation (CITATION.cff)
cff-version: 1.2.0 message: "If you use this software, please cite it as below." authors: - family-names: "Simpson" given-names: "Cooper" orcid: "https://orcid.org/0000-0003-3922-2797" title: "RandNLA.jl" version: 0.0.0 doi: 10.1/2 date-released: 2023-12-01 url: "https://github.com/rs-coop/RandNLA.jl" note: "Julia algorithms for randomized numerical linear algebra"