Charles R Harris wrote:
Well, what you want might be very easy to do in python, we just need to check the default alignments for doubles and floats for some of the other compilers, architectures, and OS's out there. On the other hand, you might not be able to request a c malloc that is aligned in a portable way without resorting to the same tricks as you do in python. So why not use python and get the reference counting and garbage collection along with it?
First, doing it in python means that I cannot use the facility from C easily. But this is exactly where I need it, and where I would guess most people need it. People want to interface numpy with the mkl ? They will do it in C, right ? And maybe I am just too dumb to see the problem, but I don't see the need for garbage collection and so on :) Again, what is needed is: - aligned allocator -> we can use the one from Steven Johnson, used in fftw, which support more or less the same archs than numpy - Refactor the array creation functions in C such as the implementation takes one additional alignement argument, and the original functions are kept identical to before - Add a few utilities function to check whether it is SSE aligned, arbitrary aligned, etc... The only non trivial point is 2 . Actually, when I first thought about it, I thought about fixing alignement at compile time, which would have made it totally avoidable: it would have been a simple change of the definition of PyDataMem_New to an aligned malloc with a constant. I have already the code for this, and besides aligned malloc code, it is like a 5 lines change of numpy code, nothing terrible, really. David