
On 06/06/2011 12:10, Robert Jones wrote:
From reading a few of the nt2 webpages, and wikipedia on SSE2, the business of exploiting SIMD capability seems to be in the domain of the compiler. How does this look from a library perspective? What are the mechanisms you'll use/consider?
This has been discussed several times in the past on this mailing list already. I suggest you take a look at the Boostcon 2011 presentation: <https://github.com/boostcon/2011_presentations/raw/master/thu/simd.pdf>
You mention "in the style of phoenix", so does this mean that as users of your library we would construct the equivalent of phoenix lazy objects, which would then have enough internal intelligence to evaluate in a super-efficient, SIMD context?
Mathieu meant that the library layout is similar to that of Phoenix in that there are several more-or-less independent components. Phoenix has the core, the operator, the bind and the scope components (and probably others I'm forgetting). It's also the case for Boost.SIMD where functions are grouped together into components. That notwithstanding, Boost.SIMD does use expression templates and lazy objects in a way that is a bit similar to Phoenix.