single precision sparse matrices for CHOLMOD, UMFPACK, and SPQR #446
Replies: 8 comments 8 replies
-
See the new branch: https://github.com/DrTimothyAldenDavis/SuiteSparse/tree/single . CHOLMOD v5 deletes the CHOLMOD:Core module and replaces it with the new CHOLMOD:Utility module, with support for sparse single precision matrices. However, the rest of CHOLMOD has not yet been updated with support for single precision (float) matrices. CHOLMOD:Utility has the same user API as CHOLMOD:Core, it's just been completely rewritten underneath. It's a branch off of dev, not dev2, because I will need to release this as a stable CHOLMOD 5.0.0 and SuiteSparse 7.3.0 soon. So v7.3.0 will be essentially identical to SuiteSparse 7.2.2, except for CHOLMOD. It will use the same build system, and it doesn't include the new packages (ParU and LAGraph) that are not ready to release. There are some minor changes to the KLU, GPUQREngine, UMFPACK and SPQR, because of the version change of CHOLMOD. I will add this new CHOLMOD v5 to the dev2 branch, and the minor tweaks to KLU, etc, except I'll keep all the latest cmake updates in dev2. If I make any further changes to the CHOLMOD source in the 'single' branch, I'll keep it up to date in dev2 as well. |
Beta Was this translation helpful? Give feedback.
-
I've updated the dev2 branch with CHOLMOD 5.0.0 and the new CHOLMOD:Utility Module. This draft CHOLMOD is fully functional and passes all my rigorous tests in CHOLMOD/Tcov. Support for single precision sparse matrices is not yet complete (it appears in CHOLMOD/Utility but is not yet supported by the other Modules). So any additional changes made to the dev2 branch for the cmake build system updates should work just fine. |
Beta Was this translation helpful? Give feedback.
-
CHOLMOD 5.1.0 is now in the default dev branch, where it's working fine with the SuiteSparse 7.3 build system. The latest build system with major updates from @mmuetzel is still in progressing in the SuiteSparse/dev2 branch, but getting close to release, I think. I could either release CHOLMOD 5.1.0 in SuiteSparse 7.4.0.beta1 now, using the build system currently in SuiteSparse/dev (without ParU and LAGraph as well), or I could wait until all of the latest updates in SuiteSparse/dev2 are ready to release (which would then become SuiteSparse 7.5 when that's ready to go). |
Beta Was this translation helpful? Give feedback.
-
CHOLMOD 5.1.0 is ready to go, as is the tiny change to AMD and CAMD related to that change. For the other packages: it depends.
All the other packages are fine. All I would need to do in the SuiteSparse dev2 branch is to update their version numbers, Doc/ChangeLog, and the various user guides. Each version number x.y.z would bump to x.(y+1).0, since adding the new build system is not a patch (z+1) but a major new feature (y+1). It's not a x+1 bump because all of the packages are binary compatible with the currently released versions. |
Beta Was this translation helpful? Give feedback.
-
OK. Let's do this, then. I will use the new build system in dev2 for the next release, SuiteSparse 7.4.0. It will have:
I think I can take care of all of that. For the conversions of the demos into ctests: yes, I'll need to do that, but it can wait until SuiteSparse 7.5. I'll ping you if I get stuck (like how I got stuck with CHOLMOD on MSVC). But with the CHOLMOD ctests added, I can hopefully mimic the same structure for the other codes. Does that sound like a plan? Thanks again for all your help. The new build system is great. |
Beta Was this translation helpful? Give feedback.
-
Making progress: I have merged all of dev2 into dev, so now all the latest updates (your new build system, my single CHOLMOD, etc) are synced in the default branch. CUDA on MSVC is a real mess. Lots of things that I require from CUDA (for GraphBLAS at least) are in Linux but are not yet ported to Windows, so it might not work at all, until a future release of CUDA itself. I'm collaborating with NVIDIA on CUDA for GraphBLAS and CHOLMOD, and I can ask them for help, too. The primary CUDA work for GraphBLAS is currently here, in the draft GrB v9.0.1: https://github.com/DrTimothyAldenDavis/GraphBLAS/tree/dev2 which is very different from the v8.3.0 in SuiteSparse. I need to sync the latest updates to the GraphBLAS build system in v8.3.0 with v9.0.1 in that repo. At some point I'll transition to doing all of my latest GraphBLAS work in one place (in this repo). |
Beta Was this translation helpful? Give feedback.
-
CHOLMOD 5.1.0 is now in SuiteSparse 7.4.0.beta1, and appears as a pre-release. |
Beta Was this translation helpful? Give feedback.
-
CHOLMOD 5.1.1 appears in SuiteSparse 7.5.0 (a stable release). It's essentially finished, in terms of support for single precision. It could use a method for creating a copy of a sparse matrix, dense matrix, triplet matrix, or factorization, while at the same time converting between single and double precision (see issue #720, which I'll consider for a future version of CHOLMOD), but otherwise it's in good shape. UMFPACK and SPQR are still double-precision only (real & complex). I'll tackle them in the future. |
Beta Was this translation helpful? Give feedback.
-
I'm working on an update to CHOLMOD, UMFPACK, and SPQR that will add support for sparse single precision (float) matrices to those 3 packages. The first package, CHOLMOD, will be updated first.
The new CHOLMOD wil need to be be v5.0 since there are some changes to the API that allow for float and float complex matrices to be added. The new API will be nearly entirely backward-compatible with v4.2, but there is at least one change in a user-visible struct that will differ. However, I don't expect that any downstream packages will care (Common->xworksize becomes Common->xworkbytes, and its meaning changes from # of doubles in the Common->Xwork workspace to the # of bytes in the same space (so it can now be a float array).
I don't expect any downstream packages actually look at this value, since it's managed by CHOLMOD on its own. So most packages should be able to link with v5.0 without even needing to recompile their packages.
However, since this is a visible binary change, CHOLMOD needs to bump to v5.0, and the safest thing will thus be to recompile any downstream packages that use it.
I'm not ready to post this update to CHOLMOD yet, but I can likely post a draft on a new branch in a few
weeksdays (Oct 22 update: it was closer than I thought).Let me know in this discussion thread if you have any questions about the upcoming changes. Stay tuned!
Beta Was this translation helpful? Give feedback.
All reactions