|Re: [eigen] AVX/LRB and SSE with SoA support|
[ Thread Index |
| More lists.tuxfamily.org/eigen Archives
On 08/23/2010 08:53 PM, Gael Guennebaud wrote:
well, Eigen is a general purpose math library and so such "hacks" does
not match well with our objectives. We have to find a better solution.
If one wants to use the Vector units of the processor and store masks
for comparisons, the comparison operators cannot return values of type
The only typesafe solution i see here is to introduce types like
IntBool, FloatBool, DoubleBool etc. (These could be template types like
EigenBool<type X>...). The size of the template is like the size of X,
so it can store the mask. One can add functions like toBool(), select
and so on.
One could even add a Conversion-To-Bool expression template ;-)
I understand this seems to be a lot of work, but the reward is a
significant increase in speed. In the future the increase will become
even bigger, because of wider vector registers.
I did a part of the demo program using plugins, but this is not enough,
as Eigen has already comparison operators, so one would have to derive
in this case to avoid changing the original code.
You could at least take the few Intrinsics specialisations and
expression templates from the patch.
Thanks for all your time.