On Sat, Apr 12, 2008 at 7:01 PM, Pauli Virtanen <[EMAIL PROTECTED]> wrote:
> http://projects.scipy.org/scipy/numpy/ticket/551 > > This ticket (milestone 1.0.5 critical) seems to occur because > cblas_DGEMV in SSE2-enabled Atlas, at least the one shipped with > Debian/Ubuntu, apparently requires that doubles are aligned on 8-byte > boundaries in memory. If not, a segmentation fault ensues. When > unpickling arrays, numpy uses data directly from a Python string, which > is consistently not aligned on a 8-byte boundary => crash. > > [I'm quite sure this is the reason. There is a minimal testcase in > comment 22 in the ticket is someone wants to confirm this.] > > *** > > So should numpy try to work around this by reallocating the memory when > unpickling, and forcibly aligning it as required by SSE2-Atlas? > My vote is for checking the alignment and reallocating if needed and sending a ticket upstream. Pickling is probably not the preferred way to store large arrays so a workaround is acceptable. I wonder if Python itself shouldn't be allocating strings on 8 byte boundaries? Or maybe it is the unpickling routine that could use fixing, maybe its reading into a large string and using an offset not divisible by 8. Have there been any problems with Atlas in other distributions? Chuck
_______________________________________________ Numpy-discussion mailing list [email protected] http://projects.scipy.org/mailman/listinfo/numpy-discussion
