<br><br><div class="gmail_quote">On Wed, May 13, 2009 at 11:22 PM, Glenn Tarbox, PhD <span dir="ltr">&lt;<a href="mailto:glenn@tarbox.org">glenn@tarbox.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br><br><div class="gmail_quote"><div><div></div><div class="h5">On Wed, May 13, 2009 at 11:04 PM, Charles R Harris <span dir="ltr">&lt;<a href="mailto:charlesr.harris@gmail.com" target="_blank">charlesr.harris@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br><br><div class="gmail_quote"><div>On Wed, May 13, 2009 at 10:50 PM, Glenn Tarbox, PhD <span dir="ltr">&lt;<a href="mailto:glenn@tarbox.org" target="_blank">glenn@tarbox.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">


I&#39;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)<br><br>I&#39;m able to map large files and access all the elements unless I&#39;m using slices<br>



<br>so, for example:<br><br>fp = np.memmap(&quot;/mnt/hdd/data/mmap/numpy1e10.mmap&quot;, dtype=&#39;float64&#39;, mode=&#39;r+&#39;, shape=(10000000000,))<br><br>which is 1e10 doubles if you don&#39;t wanna count the zeros<br>



<br>gives full access to a 75 GB memory image<br><br>But when I do:<br><br>fp[:] = 1.0<br>np.sum(fp)<br><br>I get 1410065408.0  as the result<br></blockquote></div><div><br>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.</div>

</div></blockquote></div></div><div><br>I&#39;ve been working on some other things lately and that number seemed related to 2^32... now that I look more closely, I don&#39;t know where that number comes from.<br><br>To your question, I have 32GB of RAM and virtually nothing else running... Top tells me I&#39;m getting between 96% and 98% for this process which seems about right.<br>

<br>Here&#39;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&#39;m gonna bang on it a bit more with some other scripts)<br>

<br>Its only when using slicing that things get strange (he says having not really done a more thorough test)<br><br>Of course, I was assuming this is a 32 bit thing... but you&#39;re right... where did that result come from???<br>

<br>The other clue here is that when I create my own slice (as described above) it returns instantly... numpy doesn&#39;t throw an error but it doesn&#39;t do anything with the slice either.<br><br>Since I&#39;m IO bound anyways, maybe i&#39;ll just write a loop and see if I can&#39;t set all the values.  The machine could use a little exercise anyways.<br>

</div></div></blockquote><div><br>I ran the following test:<br><br>import numpy as np<br>size=10000000000<br>fp = np.memmap(&quot;/mnt/hdd/data/mmap/numpy1e10.mmap&quot;, dtype=&#39;float64&#39;, mode=&#39;r+&#39;, shape=(size,))<br>
for i in xrange(size):<br>    fp[i]=1.0<br><br>time np.sum(fp)<br><pre class="shrunk">10000000000.0<br>Time: CPU 188.36 s, Wall: 884.33 s</pre><br> So, everything seems to be working and it kinda makes sense.  The sum should be IO bound which it is.  I didn&#39;t time the loop but it took a while (maybe 30 minutes) and it was compute bound.<br>
<br>To make sure, I exited the program and ran everything but the initialization loop.<br><br>import numpy as np<br>
size=10000000000<br>
fp = np.memmap(&quot;/mnt/hdd/data/mmap/numpy1e10.mmap&quot;, dtype=&#39;float64&#39;, mode=&#39;r+&#39;, shape=(size,)<br><br>time np.sum(fp)<br><pre class="shrunk">10000000000.0<br>Time: CPU 180.02 s, Wall: 854.72 s</pre>
I was a little surprised that it didn&#39;t take longer given almost half of the mmap&#39;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<br>
<br>So, it &quot;appears&quot; as though the mmap works but there&#39;s something strange with slices going on.<br><br>-glenn<br><br><br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="gmail_quote"><div><br><br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="gmail_quote"><div><br>
<br>Chuck <br></div><br></div><br>
<br>_______________________________________________<br>
Numpy-discussion mailing list<br>
<a href="mailto:Numpy-discussion@scipy.org" target="_blank">Numpy-discussion@scipy.org</a><br>
<a href="http://mail.scipy.org/mailman/listinfo/numpy-discussion" target="_blank">http://mail.scipy.org/mailman/listinfo/numpy-discussion</a><br>
<br></blockquote></div><div><div></div><div class="h5"><br><br clear="all"><br>-- <br>Glenn H. Tarbox, PhD ||  206-274-6919<br><a href="http://www.tarbox.org" target="_blank">http://www.tarbox.org</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>Glenn H. Tarbox, PhD ||  206-274-6919<br><a href="http://www.tarbox.org">http://www.tarbox.org</a><br>