Skip to content
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

Update to latest sprs-ldl version to show performance improvements #2

Merged
merged 2 commits into from
Oct 13, 2020

Conversation

vbarrielle
Copy link
Contributor

I have performed some micro optimization in the sprs-ldl code (sparsemat/sprs#207), and now the performance is similar to the original LDL implementation in C:

LdlNumeric took 3683ms to solve 3 sparse systems
LdlNumeric (C version of LDL) took 3675ms to solve 3 sparse systems

@vbarrielle
Copy link
Contributor Author

There have been updates in sprs and sprs-ldl, the main difference is the addition of a fill-in reduction method from the state-of-the art library SuiteSparse. Here are the new benchmark results:

LdlNumeric (rust, NoReduction) took 4567ms to solve 3 sparse systems
L2 diff to ref 0.0000002499301225895644
LdlNumeric (rust, ReverseCuthillMcKee) took 3720ms to solve 3 sparse systems
L2 diff to ref 0.00000002052935494084914
LdlNumeric (rust, CAMDSuiteSparse) took 3085ms to solve 3 sparse systems
L2 diff to ref 0
LdlNumeric (C, NoReduction) took 4253ms to solve 3 sparse systems
L2 diff to ref 0.0000002499301225895644
LdlNumeric (C, ReverseCuthillMcKee) took 3488ms to solve 3 sparse systems
L2 diff to ref 0.00000002052935494084914
LdlNumeric (C, CAMDSuiteSparse) took 2979ms to solve 3 sparse systems
L2 diff to ref 0

This shows this new fill-in reduction helps achieving better performance, we have around 1s per solve. As noted in sparsemat/sprs#199, the best performance would be that of CHOLMOD, at 0.46s per solve, but it's a much more involved decomposition. I think we cannot get better performance out of LDL now, CHOLMOD achieves this performance by being supernodal and exploiting dense structure.

@PTNobel
Copy link
Owner

PTNobel commented Oct 13, 2020

Hi! Sorry I've been super offline recently, lots of deadlines and a new semester. Thanks for all your work on this! I'll work on integrating this into the main repo in December at the latest.

@PTNobel PTNobel merged commit 8b0c81a into PTNobel:master Oct 13, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants