1 | initial version |
I think Singular is your best bet right now in Sage. There are a lot of options you can try beyond the default behavior, but its hard to know what will be best for a given system. For some things I've worked with the facstd commend in Singular was very helpful, you can do something like:
myideal = myring.ideal(generators)
fstd = singular(myideal).facstd()
bases = [[myring(f) for f in fs] for fs in fstd]
where of course you would have to define the generators and ring. Also, you probably already know this but using different term orders can have an enormous effect on the running time.
I don't think there is anything parallelizable in Sage for Groebner bases at the moment.
Another thing I sometimes find helpful with big systems is to compute Groebner bases of subsets of the generators. This is trivial to parallelize, and sometimes merging those subsets is faster than doing them all at once. It also can give you some insight into the structure of the system.