[Numpy-discussion] Deprecating PyDataMem_RENEW ?
Mon May 5 07:44:51 CDT 2008
While working again on the fftpack module, to clean things up and
speed some backends (in particular fftw3, which is really sub-optimal
right now), I remembered how much unaligned data pointer in numpy arrays
hurt performances. So I would like to relaunch the discussion on aligned
allocators and default alignement for numpy arrays :
Basically, what I have in mind is, in a first step (for numpy 1.2):
- define functions to allocate on a given alignement
- make PyMemData_NEW 16 byte aligned by default (to be compatible
with SSE and co).
The problem was, and still is, realloc. It is not possible to implement
realloc with malloc/free (in a portable way), and as such, it is not
possible to have an aligned realloc.
In numpy, we can always replace realloc by malloc/free, because we know
the size of the old block: would deprecating PyMemData_RENEW and
replacing them by PyMemeData_NEW/PyMemData_FREE be possible, such as to
make all numpy arrays follow a default alignement ? There are only a few
of them in numpy (6 of them), 0 in scipy, and I guess extensions never
really used them ?
More information about the Numpy-discussion