Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

How to prevent sage+macaulay2 overusing RAM on CoCalc (SageMathCloud)

The title pretty much says it all, but here are some more details: I'm running on CoCalc with a Members Host+Always Run license, using SageMath's groebner_basis method and telling it to use Macaulay2's gb or f4 methods. It runs for a while and then crashes with weird error messages (which I haven't found online):

TypeError: Error evaluating Macaulay2 code.
IN:sageAssign(symbol sage64,(groebnerBasis(sage66,sage65)));
OUT:stdio:1:27:(3): error: no method found for applying groebnerBasis to:
     argument 1 :  sage66 (of class Symbol)
     argument 2 :  sage65 (of class Symbol)

additionally, on the top of the website a warning is shown:

WARNING: Several programs in your project just crashed because they ran out of memory. Try some common solutions to avoid this. (Needless to say - the common solutions don't apply)

So I'm pretty sure the problem is that the computation overuses RAM (relative to the licensed 1GB I have). Is there a way to tell Macaulay2 (through sage) to use only a specified amount of RAM (e.g. the 1gb I have licensed)? Or alternatively - is there a way to know how much RAM a calculation would need before running it, so that I'll be able to license the appropriate amount without running many failed attempts in the process of gauging it?

For reference - when I'm trying to run SageMath on my university's cluster with allocated 2 cores and 1 gb RAM - it doesn't crash (nor does the computation ends, as Macaulay2 isn't installed and a "very slow toy implementation" is used by SageMath instead - which is why I'm trying to use CoCalc in the first place) so I'm assuming SageMath doesn't gobble up more than it can chew while Macaulay2 does, but maybe I'm wrong.