Re: [eigen] No vectorization in presence of .cast<T>() calls

[ Thread Index | Date Index | More Archives ]

On 18.12.2010 14:45, Benoit Jacob wrote:
> 2010/12/18 Christoph Hertzberg <chtz@xxxxxxxxxxxxxxxxxxxxxxxx>:
>> [...]
>> Another point: Did someone already think about how to support AVX in the
>> future? -- Last time I checked there were some hard-coded 16 in the code ...
> Sure, as soon as AVX hardware is actually available, that's a useful
> thing to do :-)
> Yes there still are hardcoded 16's but that's not a big problem.
> Should be easy to get rid of, as they mostly don't affect the API.
> The only thing that worries me a little bit is when this impacts the
> API itself. There are 2 such places:
>  - the Aligned option to Map
>  - the AlignedBit flag on expression (that one is largely internal though).
> What we can do in Eigen 3.1 is:
>  - replace Aligned by a template<int N=16> struct Aligned. So Aligned
> would mean 16-byte aligned, and you could do Aligned<32> if you want
> to explicitly specify 32 byte alignment. This preserves the API, but
> changes the ABI of class Map, I think that's OK: we're only making ABI
> stability guarantees on plain objects, not expressions, so especially
> in Eigen 3.0 this doesn't have to include class Map.

I'm afraid you would have to write Aligned<> then, so for full
API-compatibility maybe a new struct and a typedef would be required.

Also regarding ABI-stability: Having a struct like this:
	struct S{double d; Vector4d vec;};
leads to different layout depending on alignment requirements (depending
on alignment requirements of vec the struct is 40, 48 or 64 bytes long
(though I don't know how far ABI stability goes for you).

On the other hand I don't know if 32byte alignment is required at all
for AVX (wikipedia says: "The alignment requirement of SIMD memory
operands is relaxed."). Also I agree that there is currently no reason
for a rush to support AVX ...


Dipl.-Inf. Christoph Hertzberg
Cartesium 0.051
Universität Bremen
Enrique-Schmidt-Straße 5
28359 Bremen

Tel: (+49) 421-218-64252

Mail converted by MHonArc 2.6.19+