Skip to content

Instantly share code, notes, and snippets.

@lopezm94
Last active August 22, 2016 22:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lopezm94/49ce2428c5e22321307977f670823cdb to your computer and use it in GitHub Desktop.
Save lopezm94/49ce2428c5e22321307977f670823cdb to your computer and use it in GitHub Desktop.
Google Summer of Code - 2016

About IterativeSolvers.jl

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.

Project Abstract:

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

Main packages

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.

Work Done

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:

  1. ConvergenceHistory type: This type is returned by the iterative methods and describes the information obtained at each step. The type makes allows easy plotting.

  2. New API: Introduce the new API, changing the name and the signature of the functions.

  3. 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.

  4. 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.

Related

JuliaCon talk at MIT.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment