# \[ANN\] Sparspak: suite of solvers for linear algebraic equations in Julia

**URL:** <https://discourse.julialang.org/t/ann-sparspak-suite-of-solvers-for-linear-algebraic-equations-in-julia/82461>\
**Category:** General Usage\
**Created:** [June 8, 2022, 8:42pm UTC](https://discourse.julialang.org/t/ann-sparspak-suite-of-solvers-for-linear-algebraic-equations-in-julia/82461 "2022-06-08T20:42:50Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![PetrKryslUCSD](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/petrkryslucsd/32/215825_2.png) [@PetrKryslUCSD](https://discourse.julialang.org/u/PetrKryslUCSD)\
**Post date:** [June 8, 2022, 8:42pm UTC](https://discourse.julialang.org/t/ann-sparspak-suite-of-solvers-for-linear-algebraic-equations-in-julia/82461/1 "2022-06-08T20:42:51Z")

</div>

[# Sparspak.jl](https://github.com/PetrKryslUCSD/Sparspak.jl)

Translation into Julia of the well-known sparse matrix software Sparspak (Waterloo Sparse Matrix Package) for solving large sparse systems of linear algebraic equations.

Sparspak was composed originally of the algorithms from the book “Computer Solution of Large Sparse Positive Definite Systems” by Alan George and Joseph Liu. At the outset written in Fortran 77, later rewritten in Fortran 90, with new high-performance algorithms.

There are a couple of points to this translation:

1. It is really pure Julia, except for a handful of calls to dense linear algebra subroutines. Therefore, as high-performance Julia kernels will become available, a real high performance pure-Julia solver can be constructed which will not require calls to outside libraries.
2. It is a good opportunity to study some classical methods for dealing with sparse matrices, including several renumbering algorithms.

A general sparse-matrix super-nodal LU solver is now available. There is more work to be done, so any contribution will be welcome.

Cheers,

Petr

---

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [June 8, 2022, 8:54pm UTC](https://discourse.julialang.org/t/ann-sparspak-suite-of-solvers-for-linear-algebraic-equations-in-julia/82461/2 "2022-06-08T20:54:31Z")

</div>

Can you help us get a LinearSolve.jl wrapper?

---

<div class="post-metadata">

**Author:** ![PetrKryslUCSD](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/petrkryslucsd/32/215825_2.png) [@PetrKryslUCSD](https://discourse.julialang.org/u/PetrKryslUCSD)\
**Post date:** [June 8, 2022, 9:40pm UTC](https://discourse.julialang.org/t/ann-sparspak-suite-of-solvers-for-linear-algebraic-equations-in-julia/82461/3 "2022-06-08T21:40:06Z")

</div>

For sure.

---

<div class="post-metadata">

**Author:** ![viralbshah](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/viralbshah/32/54_2.png) [@viralbshah](https://discourse.julialang.org/u/viralbshah)\
**Post date:** [June 8, 2022, 10:06pm UTC](https://discourse.julialang.org/t/ann-sparspak-suite-of-solvers-for-linear-algebraic-equations-in-julia/82461/4 "2022-06-08T22:06:23Z")

</div>

Pretty cool! Was it hand translated, or do you have an F77 to Julia script? I am really hoping it is the latter!

Since this is derivative work, the license should include the upstream SPARSPAK license.

-viral

---

<div class="post-metadata">

**Author:** ![PetrKryslUCSD](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/petrkryslucsd/32/215825_2.png) [@PetrKryslUCSD](https://discourse.julialang.org/u/PetrKryslUCSD)\
**Post date:** [June 8, 2022, 10:26pm UTC](https://discourse.julialang.org/t/ann-sparspak-suite-of-solvers-for-linear-algebraic-equations-in-julia/82461/5 "2022-06-08T22:26:58Z")

</div>

I do have a rudimentary tool to translate the Fortran 90 to Julia. It is a slightly modified version of

> <https://gist.github.com/rafaqz/fede683a3e853f36c9b367471fde2f56>

However, I did have to tweak a few things by hand. And, in the process I managed to  
introduce a couple of bugs that led to prolonged debugging sessions. But on the whole,  
things went pretty smoothly.

I have an express permission from the authors (George and Liu) to release the  
rewritten software under the MIT license. So I hope that covers it.

---

<div class="post-metadata">

**Author:** ![JeffreySarnoff](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jeffreysarnoff/32/1980_2.png) [@JeffreySarnoff](https://discourse.julialang.org/u/JeffreySarnoff)\
**Post date:** [June 8, 2022, 10:40pm UTC](https://discourse.julialang.org/t/ann-sparspak-suite-of-solvers-for-linear-algebraic-equations-in-julia/82461/6 "2022-06-08T22:40:54Z")

</div>

That covers the licensing question completely.

---

<div class="post-metadata">

**Author:** ![viralbshah](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/viralbshah/32/54_2.png) [@viralbshah](https://discourse.julialang.org/u/viralbshah)\
**Post date:** [June 9, 2022, 8:17pm UTC](https://discourse.julialang.org/t/ann-sparspak-suite-of-solvers-for-linear-algebraic-equations-in-julia/82461/7 "2022-06-09T20:17:58Z")

</div>

> [@PetrKryslUCSD](#):
>
> I have an express permission from the authors (George and Liu) to release the  
> rewritten software under the MIT license. So I hope that covers it.

That’s amazing! It might be a good idea to note that in the LICENSE file.

---

<div class="post-metadata">

**Author:** ![viralbshah](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/viralbshah/32/54_2.png) [@viralbshah](https://discourse.julialang.org/u/viralbshah)\
**Post date:** [June 9, 2022, 8:18pm UTC](https://discourse.julialang.org/t/ann-sparspak-suite-of-solvers-for-linear-algebraic-equations-in-julia/82461/8 "2022-06-09T20:18:39Z")

</div>

> [@PetrKryslUCSD](#):
>
> A general sparse-matrix super-nodal LU solver is now available. There is more work to be done, so any contribution will be welcome.

BTW, how do you expect this might compare with superlu in terms of performance?

-viral

---

<div class="post-metadata">

**Author:** ![PetrKryslUCSD](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/petrkryslucsd/32/215825_2.png) [@PetrKryslUCSD](https://discourse.julialang.org/u/PetrKryslUCSD)\
**Post date:** [June 9, 2022, 8:45pm UTC](https://discourse.julialang.org/t/ann-sparspak-suite-of-solvers-for-linear-algebraic-equations-in-julia/82461/9 "2022-06-09T20:45:36Z")

</div>

Good question, but I don’t have the answer. Yet.

I do have comparison with UMFPACK though. [Concepts · Sparspak.jl](https://petrkryslucsd.github.io/Sparspak.jl/dev/concepts/concepts/)
