-
Notifications
You must be signed in to change notification settings - Fork 120
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
Potential switch to sparse matrices for monomial orderings #4114
base: master
Are you sure you want to change the base?
Potential switch to sparse matrices for monomial orderings #4114
Conversation
The old code has a lot of root for improvements (for example, not using P.S.: I am asking, because 200x200 is not a size where I would expect large improvements from a sparse representation. |
Sure: R, (x, y, z) = QQ[:x, :y, :z]
F = FreeMod(R, 500)
I, _ = sub(F, gens(F))
@time standard_basis(I)
|
I now have this timing:
|
e6ee24e
to
0002d78
Compare
If we want this, we would have to (also) allow sparse matrices in |
Let's merge PR #4117 first, as it is the more conservative (= safer? maybe?) change. Then we can consider whether and how to get this one here over the finishing line. Thank you for starting it in any case!!! |
This is a draft for taking some first steps towards using sparse matrices for the
canonical_matrix
of aModuleOrdering
.Today, @jankoboehm and myself investigated the caching of module gbs a little bit. We found that the production of the
canonical_matrix
for theModuleOrdering
s is quite expensive, when the module has many generators (in our example 172). This is probably due to the matrix being dense. I tried to take some steps towards replacing it by a sparse matrix, but reached a point where I couldn't figure out any more how to proceed. However, I thought it might be useful to report on what I did so far and hence I make this draft PR. Let us eventually look into this together.CC: @ederc @RafaelDavidMohr