[Numpy-discussion] numpy ndarray questions

David Cournapeau david at ar.media.kyoto-u.ac.jp
Mon Jan 26 22:49:17 EST 2009


Jochen wrote:
> Hi all,
>
> I just wrote ctypes bindings to fftw3 (see
> http://projects.scipy.org/pipermail/scipy-user/2009-January/019557.html
> for the post to scipy). 
> Now I have a couple of numpy related questions:
>
> In order to be able to use simd instructions I 
> create an ndarray subclass, which uses fftw_malloc to allocate the
> memory and fftw_free to free the memory when the array is deleted. This
> works fine for inplace operations however if someone does something like
> this:
>
> a = fftw3.AlignedArray(1024,complex)
>
> a = a+1
>
> a.ctypes.data points to a different memory location (this is actually an
> even bigger problem when executing fftw plans), however 
> type(a) still gives me <class 'fftw3.planning.AlignedArray'>.
>   

I can't comment about subclassing ndarrays, but I can give you a hint
about aligned allocator problem: you could maintain two list of cached
plans, automatically detect whether your arrays are aligned or not, and
use the appropriate list of plans; one list is for aligned arrays, one
for unaligned. Before removing support for fftw, I played with some C++
code to do exactly that. You can tell fftw to create plans for unaligned
arrays by using FFTW_UNALIGNED flag:

http://projects.scipy.org/scipy/scipy/browser/branches/refactor_fft/scipy/fftpack/backends/fftw3/src/zfft.cxx

cheers,

David



More information about the NumPy-Discussion mailing list