
This whole explicitly passing simd<T> in place of T, which seems to be the same thing done in nt2, in order to make use of certain optimizations seems like a poor interface choice. In almost all cases, the user logically cares about a container of T, and wants to work with individual elements, and the library should ensure that SIMD operations are used whenever possible. In particular, the design of the Eigen library, at least in this respect, seems more appropriate. Perhaps I am just misinterpreting the intended semantics of using simd<T>, but if it in fact it results in the logical value_type still being T, then the question is why you would even need to specify simd at all, rather than having it always be used. I also don't see how the optimization can be externalized in the (quite common) case of doing more than element-wise operations. heeee, no. pack<T,N> is used internally by nt2. The nt2, matrix and
On 03/03/11 19:34, Jeremy Maitin-Shepard wrote: table interface dont require anything at this level. nt2::table<T> DO vectorize withotu anythign special. pack is however available as a generic sized packet with potential simdization for people wanting to write low level SIMD code.