a bit of back and forth on the numpy list last night... ---------- Forwarded message ---------- From: Glenn Tarbox, PhD <gl...@tarbox.org> Date: Thu, May 14, 2009 at 1:31 AM Subject: Re: [Numpy-discussion] numpy slices limited to 32 bit values? To: Discussion of Numerical Python <numpy-discuss...@scipy.org>
On Wed, May 13, 2009 at 11:22 PM, Glenn Tarbox, PhD <gl...@tarbox.org>wrote: > > > On Wed, May 13, 2009 at 11:04 PM, Charles R Harris < > charlesr.har...@gmail.com> wrote: > >> >> >> On Wed, May 13, 2009 at 10:50 PM, Glenn Tarbox, PhD <gl...@tarbox.org>wrote: >> >>> I'm using the latest version of Sage (3.4.2) which is python 2.5 and >>> numpy something or other (I will do more digging presently) >>> >>> I'm able to map large files and access all the elements unless I'm using >>> slices >>> >>> so, for example: >>> >>> fp = np.memmap("/mnt/hdd/data/mmap/numpy1e10.mmap", dtype='float64', >>> mode='r+', shape=(10000000000,)) >>> >>> which is 1e10 doubles if you don't wanna count the zeros >>> >>> gives full access to a 75 GB memory image >>> >>> But when I do: >>> >>> fp[:] = 1.0 >>> np.sum(fp) >>> >>> I get 1410065408.0 as the result >>> >> >> As doubles, that is more than 2**33 bytes, so I expect there is something >> else going on. How much physical memory/swap memory do you have? This could >> also be a python problem since python does the memmap. >> > > I've been working on some other things lately and that number seemed > related to 2^32... now that I look more closely, I don't know where that > number comes from. > > To your question, I have 32GB of RAM and virtually nothing else running... > Top tells me I'm getting between 96% and 98% for this process which seems > about right. > > Here's the thing. When I create the mmap file, I get the right number of > bytes. I can, from what I can tell, update individual values within the > array (I'm gonna bang on it a bit more with some other scripts) > > Its only when using slicing that things get strange (he says having not > really done a more thorough test) > > Of course, I was assuming this is a 32 bit thing... but you're right... > where did that result come from??? > > The other clue here is that when I create my own slice (as described above) > it returns instantly... numpy doesn't throw an error but it doesn't do > anything with the slice either. > > Since I'm IO bound anyways, maybe i'll just write a loop and see if I can't > set all the values. The machine could use a little exercise anyways. > I ran the following test: import numpy as np size=10000000000 fp = np.memmap("/mnt/hdd/data/mmap/numpy1e10.mmap", dtype='float64', mode='r+', shape=(size,)) for i in xrange(size): fp[i]=1.0 time np.sum(fp) 10000000000.0 Time: CPU 188.36 s, Wall: 884.33 s So, everything seems to be working and it kinda makes sense. The sum should be IO bound which it is. I didn't time the loop but it took a while (maybe 30 minutes) and it was compute bound. To make sure, I exited the program and ran everything but the initialization loop. import numpy as np size=10000000000 fp = np.memmap("/mnt/hdd/data/mmap/numpy1e10.mmap", dtype='float64', mode='r+', shape=(size,) time np.sum(fp) 10000000000.0 Time: CPU 180.02 s, Wall: 854.72 s I was a little surprised that it didn't take longer given almost half of the mmap'ed data should have been resident in the sum performed immediately after initialization, but since it needed to start at the beginning and only had the second half in memory, it makes sense So, it "appears" as though the mmap works but there's something strange with slices going on. -glenn > > >> >> Chuck >> >> >> >> _______________________________________________ >> Numpy-discussion mailing list >> numpy-discuss...@scipy.org >> http://mail.scipy.org/mailman/listinfo/numpy-discussion >> >> > > > -- > Glenn H. Tarbox, PhD || 206-274-6919 > http://www.tarbox.org > -- Glenn H. Tarbox, PhD || 206-274-6919 http://www.tarbox.org -- Glenn H. Tarbox, PhD || 206-274-6919 http://www.tarbox.org --~--~---------~--~----~------------~-------~--~----~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~----------~----~----~----~------~----~------~--~---