
On 11/06/11 12:16, David A. Greene wrote:
You machine intrinsics here, yes? This is where I think many times the compiler might do better. If the compiler is good. :)
Well, nothing prevent us to say that if on architecture X with compiler Y, nothing has to be done, do nothing. Every arch/compiler/os combo is an extension point in NT2
It's a little odd that "important" information would be stripped. I know this is not a discussion of NT2 but for the curious, can you explain this? Thanks!
not stripped sorry, exploited where it need and potentially removed before being passed to the underlying level where they make less sense.
Oh absolutely. But I think that such people should be aware that code generated by boost.simd may not be the best for their hardware implementation IF they have access to a good compiler later. In those cases, though, I suppose replacing, say, pack<float> with float everywhere should get most of the original scalar code back. There may yet be a little more cleanup to do but isn't that the case with _every_ HPC code? :) :) :)
The code can be let untouched by sayign that on machine X with compiler Y, pack<float> is just w/e it need to be and redirecting pack operators and functions to a simple scalar version. We should I think keep the pack abstraction, even if for some smart compilers the onyl stuff it will do is add w/e mark-up/pragma/infos the compiler want to see. boost.simd is really for just letting peopel that need to mess with this kind of code for w/e reasons (and we evoked a few) to do so in a platform independant way with proper abstraction. If you need more, then we need to let a higher level tools do it, and that's what nt2 aims to be.