-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
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
[SuiteSparse_jll] Update to v7.4.0 #52577
Conversation
59a7a1f
to
b3081f8
Compare
There is only one relevant test failure, of course on 32-bit Windows:
I have no idea of what's the problem, so I'd appreciate any help here (also in the form of removing support for 32-bit Windows 🙃) Everywhere else it's all good. But we also need to merge JuliaSparse/SparseArrays.jl#478 at the same time to clear the warnings about the version of cholmod:
|
Is it adding some garbage to the start of the array? |
34a56b0
to
41433ce
Compare
No, the number of elements is correct, but 12, 25, 5 for some reasons are at the front: https://buildkite.com/julialang/julia-master/builds/31334#018c82ce-35e2-43c1-a143-eebf240e7b15/12749-13075
But this is wrong already at https://github.com/JuliaSparse/SparseArrays.jl/blob/8308232f12fe6d28c689e11b2e19b48a484136f6/src/solvers/cholmod.jl#L1320, and as far as I understand (but I may be wrong) the |
cc @rayegun. The challenge here is of course how does one even test on 32-bit windows. |
I'm tempted by marking the test as broken on 32-bit Windows so that we can move on 🥲 |
I think it may actually be ok to do so. |
😮💨, time to find the W32 VM again |
82cdd33
to
e9e9897
Compare
In case someone has a way to debug this on 32-bit Windows, I reduced the failure to using LinearAlgebra, SparseArrays, SparseArrays.CHOLMOD
n = 100
A = sprand(n,n,5/n) |> t -> t't + I
SA = CHOLMOD.Sparse(A)
F = CHOLMOD.@cholmod_param postorder = false begin
CHOLMOD.@cholmod_param nmethods = 1 begin
CHOLMOD.analyze_p(SA, Int[p-1 for p in 1:n])
end
end
F.p == 1:n # this should be true, but it's false It can probably be reduced further, but I know absolutely nothing of the SparseArrays code, I think I reached the maximum I could spend on this. If no one has ideas, I might just mark the test as broken only on that platforms so that we can upgrade the package. |
@DrTimothyAldenDavis Would you have any insight into what might be causing the win32 failure above? |
No idea. I do try to maintain as much backward compatibility as possible between say a 4.0 and a 5.0 package. I would have to check the details to see what API/API differs. Is that the question? I do test SuiteSparse in its CI with WIN32 on GitHub and it's passing. Can you try 7.4.0.betaX where X is 10 I think, but is changing daily? I will release 7.4.0 stable soon. |
That would suggest that there may be an issue in our wrappers. |
Yes. It could be the cholmod 4 vs 5, above. Or it could be a Christmas bug. The first two numbers are 12,25 after all 😀 |
e9e9897
to
bd5104f
Compare
There are tons of test failures with SuiteSparse v7.4.0, on all platforms, not just 32-bit Windows.... |
What's most worrying is that we're getting loads of
errors, which comes from libblastrampoline, but I have no clue of how this is related to upgrading to SuiteSparse 7.4.0 |
The build system of SuiteSparse has been completely overhauled for 7.4.0. Many of the configuration flags have changed their names. You'd probably need to adjust your build rules for that change here:
|
Great news: after updating the wrappers using the SuiteSparse header files (PR JuliaSparse/SparseArrays.jl#480 by @rayegun), all SparseArrays tests are passing in this PR, for all platforms, including 32-bit ones (and including the permutation test). The failures reported above were likely due to some changes in SuiteSparse between v7.2.1 and v7.3.0/v7.4.0 which broke ABI compatibility on 32-bit systems. Also @imciner2 identified the change to the type of other_2 in cholmod_common as a potential problem on 32-bit platforms, so that may be the culprit, and what forced us to update the wrappers. Tomorrow I'll update JuliaSparse/SparseArrays.jl#478 to include the changes in JuliaSparse/SparseArrays.jl#480 and keep everything in one place, but this is now looking good for us, thanks everybody for the help! |
Sorry for the headaches. We're getting feedback from spack, PETsc, linux distros, msys, octave, ... and of course julia, and the feedback doesn't come all at once. We're trying to make the build system work for everybody, but it means that it's an iterative process. |
Whenever I change a package, I do keep to the semantic versioning process: CHOLMOD has had a few breaking changes in the past, for example. SuiteSparse itself doesn't track each version change of the packages inside it. I used to bump the major SO of SuiteSparse itself when any of its component packages had a major SO bump, but that caused problems with linux distro maintainers so I don't do that anymore. So here's how CHOLMOD has bumped in is major SO numbers, recently:
and you're note that the bump from CHOLMOD 4.x.x to 5.x.x did not cause SuiteSparse itself to bump from 7.2.1 to 8.0.0. I may have broken the ABI upward compatibility by changing the |
For example, the change from |
No worries @DrTimothyAldenDavis. Thanks for the work you are doing to coalesce all these various requests and update the packages, the actual build system changes recently have actually led to a simplification of the build script we use in Yggdrasil, so that is appreciated. One thing that might be useful going forward for doing the updates to these wrappers is to have a more detailed changelog for the APIs of the various components. For instance, when I started looking at the CHOLMOD 4->5 version bump to see if that was the cause of the errors, there wasn't really a good list of what changes were made to the API, so I ended up having to read through the header file and sometimes do a comparison between the old header and the new header. Some of the changes (like changing the naming/meaning of |
@DrTimothyAldenDavis Apologies - My complaint was not meant for you, but for the way we integrate SuiteSparse in Julia itself and update it in a roundabout way. |
I can work on that. |
832c882
to
acb9ecf
Compare
I updated this PR to use latest changes in JuliaSparse/SparseArrays.jl#478. That PR now includes better way to update If tests are green, as I hope since there should be no functional changes compared to this fully green run (excluding to may-fail jobs), we should be good to go. |
7109421
to
aeba6d1
Compare
I am not sure off the top of my head how to regenerate the hashes, if no one does it before ~10AM tomorrow I will givve it a shot. |
The checksum refreshing script is in |
Update information in `stdlib/SparseArrays.version` and then run the commands ``` git rm -rf deps/checksums/SparseArrays-* make -C stdlib -j checksum-SparseArrays ```
aeba6d1
to
2b9634a
Compare
Update information in
I just did it. This should be good to go now! |
Does anyone know if the BLAS patch we are applying upstreamed to SuiteSparse? |
I could take a look, and consider it for SuiteSparse 7.5.0. Where is it in SuiteSparse_jll? |
It's a backport of DrTimothyAldenDavis/SuiteSparse#671, it's already in SuiteSparse. |
If I did I was just reiterating what triage (in its great wisdom) decided #48161 (comment). So according to that we are indeed never allowed to remove stdlibs from Julia. We could make the stdlibs upgradable (so you can upgrade them with the package manager) and ignore the bundled ones. This situation is of course worse for users than if the stdlibs were just properly moved out but hey, it is not "breaking". |
This reverts commit c5dcf4f.
This reverts commit c5dcf4f.
This reverts commit c5dcf4f.
Usual memo to self for the update:
stdlib/SuiteSparse_jll/Project.toml
deps/checksums/suitesparse
withmake -f contrib/refresh_checksums.mk -j libsuitesparse
. Note: this will also delete the filesdeps/checksums/SuiteSparse-*.tar.gz/*
, but those refer to the stdlib which is the julia wrapper around the binary dependency, those files have to be restored manually, I don't know how to make the makefile behave nicely. You will also have to remove the linesSuiteSparse-*.tar.gz/md5/*
added to the filedeps/checksums/suitesparse
, they are wrong for the same reasondeps/libsuitesparse.version
.Judging by the changes in JuliaPackaging/Yggdrasil#7596 we don't need to touch the manual build system.
I have no idea whether SuiteSparse retains API/ABI compatibility within the same major version, I surely hope so because I won't have the strength to try and fix large compatibility errors.