Out of memory error when dividing vector by scalar

46 views
Skip to first unread message

Kyle Schalm

unread,
Jul 26, 2012, 3:22:25 PM7/26/12
to sage-s...@googlegroups.com
I'm using sage 4.6.1 (release data 2011-01-11) on Linux.
When I tried to divide a vector of ~10000 elements by a scalar, it ran out of system memory and  crashed.
code:

n = 10000
v = vector([0]*n)   # ok so far
v2 = v/1              # kaboom

I repeated this process for increasing values of n starting at 100 and monitored memory usage and noticed that the memory used increases in a rapid, nonlinear  fashion. It's not used when constructing the list or vector, only when the division occurs. There's nothing magic about the exact value of n, but I have ~1GB ram and with my typical system load, it crashed on me usually near n=9127. Also, i noticed that memory was not freed up after "del v" or "del v2".

I tried with other scalar rings as well (such as Zmod(p^k) for various p,k) and no difference.
If someone can post a quick fix here, I would like to patch my system. Thanks!
-kyle

D. S. McNeil

unread,
Jul 26, 2012, 5:12:07 PM7/26/12
to sage-s...@googlegroups.com
After some digging -- and a fortuitous control-C at the right moment
-- it looks like it's trying to construct the basis for the ambient
free module. This will be a list of 10^4 vectors, each 10^4 elements
long, so it's not surprising it takes a lot of memory.. adding a print
statement in the loop in FreeModule_ambient.basis seems to confirm
that's the issue.

Unfortunately suggesting how to get around this requires a deeper
understanding of Sage internals than I have. :-/


Doug
Reply all
Reply to author
Forward
0 new messages