-
-
Notifications
You must be signed in to change notification settings - Fork 5.6k
Remove SuiteSparse and derived functions from julia repo #27638
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
632df6b
to
e4436af
Compare
e4436af
to
01d965e
Compare
Putting on milestone to make sure we do this before releasing 0.7 or hopefully even before the beta. |
So if this is not ready this week, we should hold the beta until it's ready? |
Maybe review at end of week. If this is going to take substantially longer, we can move it off the milestone. I suspect we can get it in. |
This should be merged once we merge #27638
01d965e
to
82c85b5
Compare
82c85b5
to
d9b2174
Compare
Ok, the failing tests are because of The second option is to move all sparse capabilities out of The third option is to not move out SuiteSparse at all. As I experiment with this, I think we should either have sparse matrices and sparse linear algebra both in stdlib, or move all of sparse out of stdlib. Keeping it piecemeal could be confusing. |
The reason why this isn't completed yet is exactly the sparse linear algebra components in |
1a63ea4
to
18b5824
Compare
Tests pass locally now. I've moved the linear algebra pieces that depend on |
I think we should just move all of the sparse linear algebra routines in one shot, rather than do some here and some later, so that there is a clear link between what was removed and what is available in SparseLinearAlgebra. |
I've moved the remaining linear algebra pieces to Another concern is the effect of the generic linear algebra fallbacks. Moving the sparse linear algebra functions to |
Having the default implementation that works but is slow is not ideal. Can we disable the fallback for SparseMatrixCSC? |
I don't think this is practical. The two proper solutions would be to either change the signatures of all the fallbacks since there are many arrays for which they're not really useful ( |
There are still some references to |
What about the option of moving all of the sparse matrix capabilities into an external package? It seems that it is better to provide a reliable way to get good performance rather than accidentally leading people to slow fallbacks - we will keep receiving messages about the slowness and have to keep repeating the solution. |
Let's get this PR merged and move SuiteSparse out first. The other questions that result from this, we can deal with as we move forward. |
18545ff
to
cad5a8b
Compare
Making all of |
Yes, decoupling sparse solvers does give tremendous flexibility. Let's do that first and think about |
I’m very against moving this now that we have got the beta cut. Deadlines have to mean something and we need to make progress toward a final release and stop pushing large breaking changes to the last minute. |
@andreasnoack I rebased the branch to fix the remaining merge conflict, so this should be good once CI passes. |
f1d931f
to
8581a90
Compare
More conflicts were introduced, so I've rebased again. |
Given that this moves a bunch of matmul stuff as well, quite a bit of stuff would slow down due to fallbacks. I would personally be favour of either retaining SuiteSparse, or moving all of sparse (including SparseArrays), but not do it piecemeal. |
I agree with @ViralBShah. I don't think it is worth to move things out until we can point to a |
https://github.com/JuliaLinearAlgebra/SparseLinearAlgebra.jl is already there and can be finished up and registered if we want to merge this PR so that is not the concern. @ViralBShah's concern is if people will remember to write For |
With type piracy, there will always be that concern. Perhaps it can be solved by being clear in the README's of the package what the purpose of them are? |
With dense arrays we have the separation, but from a user standpoint, arrays are in Base, and you only have to import LinearAlgebra. People will not know or remember the distinction between SparseArrays and SparseLinearAlgebra. In fact, even I don't think I will. Maybe we can have a set of specializations that basically say "use SparseLinearAlgebra" - should be easy with a macro. With that, I wouldn't mind splitting this out. Shipping slow behaviour by default is something we should avoid. |
The idea is that most people shouldn't need to remember the distinction between |
How will people learn about |
It is unlikely that you get your hands on a |
Can we add a dependency on LinearAlgebra to SparseArrays and define the methods that would otherwise hit slow fallbacks to throw an error pointing to SparseLinearAlgebra? |
How do we promote the one thing that is not in the distribution over one thing that is? Should our Julia docs then ask people to install the external package and maybe not ever refer to SparseArrays? Technically yes, but as a user I would find this extremely confusing. |
So can we move SparseArrays out as well? |
Probably needs to be redone differently whenever we reconsider this. |
Instead, it becomes a proper package. The new package is https://github.com/JuliaLinearAlgebra/SuiteSparse.jl. This is similar to #27616.