Mathias Gaunard
This week I presented a proposal to the C++ standards committee to provide a standard library component for SIMD computation based on the library in development Boost.SIMD (not yet a Boost library).
Unfortunately the concurrency/parallelism group has decided that they do not want C++ to provide types representing SIMD registers. I'm afraid I don't quite understand the rationale for such a refusal;
It's pretty clear to me. A better approach is to add language constructs to help the compiler do the vectorization. It's 2013. We should be finished with requiring people to hand-vectorize code. Adding things like "restrict" and/or keywords like "concurrent," ways to disambiguate possible aliases, describe unknown loop dependences, etc. are going to be much more flexible and fruitful long-term than providing a library that is tied to a particular model of parallelism (and a narrow model of vectorization, BTW). Please look at what compilers from PGI, Intel, CAPS and yes, Cray, do to help users parallelize code. A reading of the pragma descriptions in the various compiler manuals would be informative. -David