
iain.denniston@blueyonder.co.uk wrote:
I played around with a SIMD abstraction layer for a while - the goal being to create a thin wrapper around SIMD code to allow simple compile time switches between different archtechtures SIMD implementations (particularly x86 vs. PowerPC vs. Software - due to Xbox 360 and PC). I have the initial code lying around somewhere if anyone is interested in such a library - it certianly may smooth over some of the headaches of creating such maths libraries (although the performance characteristics may not be ideal).
I'm not sure whether this would be the right level for architecture specific optimizations. Having a layer that provides access to SIMD instructions might smooth out issues between SSE and AltiVec, but programming Cell or perhaps CUDA is afaik a bit more involved. I would start with larger operations such as FFT, SVD or "multiply a set of vectors with matrix A". Given a portable C++-only implementation, you could then provide architecture specific implementations of these building blocks. Malte