IterativeSolvers.jl is a Julia package that provides iterative algorithms for solving linear systems, eigensystems and singular value problems. The purpose of this package is to provide efficient Julia implementations for iterative methods. The package aims to accept a wide variety of input types and that's why most arguments don't specify a specific type.
This proposal consists of the design of an API for Iterative methods in Julia and the setup of benchmarks and a regression tracker.
Mentor: Jiahao Chen
Organization: The Julia Language
Category: Package
All the work is split in two Julia packages:
- SugarBLAS.jl
- IterativeSolvers.jl
SugarBLAS.jl is package made by me to facilitate optimizations on IterativeSolvers.jl using the BLAS library.
All the work to SugarBLAS.jl has been merged, this wasn't an issue because I was the only one reviewing it. A list of commits is here.
Commits to IterativeSolvers.jl hasn't been so straightforward to merge. Merging has been slow and work began to accumulate since all of the work dependended on the new API. This has resulted in having a main pull request in the package with all of the work done, this pull request only remains to show what has been done but its contents will be progressively merged with separate smaller pull requests. Check here to see the complete list of commits in the pull request.
Work merged to the package: commits
Things left to merge from the main pull request:
-
ConvergenceHistory type: This type is returned by the iterative methods and describes the information obtained at each step. The type makes allows easy plotting.
-
New API: Introduce the new API, changing the name and the signature of the functions.
-
Documentation and Benchmarks: The documentation will be built and constantly updated by travis whenever the benchmarks or a function documentation is changed in the code.
-
BLAS optimizations using SugarBLAS.jl. This one is described in PR #79.
Regression tracking was postponed for a later time when the Julia organization is ready to add package benchmarks to their dedicated cluster. Currently it only evaluates the Julia source code. The benchmarks were made in such a way to temporarily solve this issue.
JuliaCon talk at MIT.