Re: [eigen] a few more points...

[ Thread Index | Date Index | More Archives ]

2009/1/3 Gael Guennebaud <gael.guennebaud@xxxxxxxxx>:
>>> and I don't think that's safe to add AlignedBit if we have
>>> ForceAligned, eg:
>>> Matrix4d m1;
>>> m1.block<2,2>(1,0) *= 2;
>>> will take the "LinearVectorization with CompleteUnrolling" path and crash.
>> The block expression here doesn't have the LinearAccessBit because it
>> isn't a vector. So this assignment shouldn't take the
>> LinearVectorization path.
> right, so it will take the "InnerVectorization with CompleteUnrolling"
> and still crash.

ok, now I understand. But the point is, with code such as
>>> Matrix4d m1;
>>> m1.block<2,2>(1,0) *= 2;
I would never have thought of using ForceAligned. But now I understand
your explanation, there are other examples like you say where we want
ForceAligned but not Aligned flag, like when one does aligned accesses
in a non-aligned block.

>> Actually your ForceAligned as you explained it sounds like exactly
>> what I want. What I need now is a way to tell Assign.h to use a
>> vectorized path -- currently it doesn't because SrcIsAligned is 0 in
>> ei_assign_traits because my block expression doesn't have the
>> AlignedBit.
> .mark<AlignedBit>() ???

Doh... sure that does the trick. I guess I was just wrongly assuming
that Eigen should do that automatically with ForceAligned but now I
understand why it doesn't. Thanks.



Mail converted by MHonArc 2.6.19+