[Numpy-discussion] Crash using "reshape"...

Francesc Alted francesc@continuum...
Wed Nov 21 04:14:58 CST 2012


On 11/21/12 10:12 AM, Terry J. Ligocki wrote:
> I am having a problem with "reshape" crashing:
>
>     > python
>     Python 2.6.4 (r264:75706, Jan 16 2010, 21:11:47)
>     [GCC 4.3.2] on linux2
>     Type "help", "copyright", "credits" or "license" for more information.
>     >>> import numpy
>     >>> numpy.version.version
>     '1.6.2'
>     >>> npData = numpy.ones([701,701,7899],dtype=numpy.dtype('b'))
>     >>> npDataSubset = npData[[slice(0,700),slice(0,700),slice(0,5000)]]
>     >>> npDataOutput = npDataSubset.reshape([700*700*5000],order='F')
>     Segmentation fault
>
> If I change the "5000" to a "4000", everything is fine.  I'm not 
> running out of memory - my system had 48 GB of memory and nothing else 
> is using a significant portion of this memory.
>
> Note:  700x700x4000 = 1,960,000,000 < 2^31 and 700x700x5000 = 
> 2450000000 > 2^31.  I suspect somewhere in the underlying code there 
> is a signed 32-bit integer being used for an index/pointer offset 
> (this is running on a 64-bit machine).

Yes, looks like a 32-bit issue.  Sometimes you can have 32-bit software 
installed in 64-bit machines, so that might be your problem.  What's the 
equivalent of numpy.intp in your machine?  Mine is:

In []: import numpy as np

In []: np.intp
Out[]: numpy.int64

If you see 'numpy.int32' here then that is the problem.

-- 
Francesc Alted



More information about the NumPy-Discussion mailing list