Re: [eigen] STL Vectors and Alignment |

[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]

*To*: eigen@xxxxxxxxxxxxxxxxxxx*Subject*: Re: [eigen] STL Vectors and Alignment*From*: Christoph Hertzberg <chtz@xxxxxxxxxxxxxxxxxxxxxxxx>*Date*: Wed, 26 Nov 2014 21:40:57 +0100

On 26.11.2014 17:39, Gabriel wrote:

Thanks for the answer! Sorry again for my unclear phrasing! Just to be absolutely sure: Lets say we have: struct A{ Eigen::Vector2d t; }; If we use A locally: A a; a.t is a.t aligned on the Stack, (how does alignment work on the stack)

Yes, that is aligned on the stack. Also, if you wrote, e.g. struct A{ char dummy; // compiler will add filling bytes after this Eigen::Vector2d t; }; a.t will be aligned on the stack.

If we use A on the heap: A * a = new A; then as "a" is not aligned , also a.t is not aligned

If we use EIGEN_MAKE_ALLOCATOR_NEW inside A , then "a" is aligned , and

Yes.

BUT what happens in this example: struct B{ A a; }; struct C{ B b; }; std::vector< C , Eigen::aligned_allocator<C> > vec(1); Is vec[0].b.a.t now aligned in memory? which does *NOT* result in a segfault if Eigen uses SIMD internally?

Yes.

If we use locally lets say: C c; c.b.a.t do something with t is c.b.a.t aligned on the Stack?

Yes.

Or on the heap: C * c = new C; c might not be aligned => c.b might not be aligned => c.b.a => might not bealigned => c.b.a.t might not be aligned => SEGFAULT for usage of c.b.a.t

How do I need to correct the above example such that in the cases above, vector A::t is always aligned to 16bytes?

To make the only not yet working case work, you need to add an EIGEN_MAKE_ALIGNED_OPERATOR_NEW into struct C. It would not hurt to add it into A and B, as well. Christoph -- ---------------------------------------------- Dipl.-Inf., Dipl.-Math. Christoph Hertzberg Cartesium 0.049 Universität Bremen Enrique-Schmidt-Straße 5 28359 Bremen Tel: +49 (421) 218-64252 ----------------------------------------------

**Follow-Ups**:**Re: [eigen] STL Vectors and Alignment***From:*Gabriel

**References**:**[eigen] Block sparse matrices and std vector compilation error***From:*Hilario Tomé

**[eigen] STL Vectors and Alignment***From:*Gabriel

**[eigen] STL Vectors and Alignment***From:*Gabriel

**Re: [eigen] STL Vectors and Alignment***From:*Christoph Hertzberg

**Re: [eigen] STL Vectors and Alignment***From:*Gabriel

**Re: [eigen] STL Vectors and Alignment***From:*Christoph Hertzberg

**Re: [eigen] STL Vectors and Alignment***From:*Gabriel

**Messages sorted by:**[ date | thread ]- Prev by Date:
**Re: [eigen] STL Vectors and Alignment** - Next by Date:
**Re: [eigen] STL Vectors and Alignment** - Previous by thread:
**Re: [eigen] STL Vectors and Alignment** - Next by thread:
**Re: [eigen] STL Vectors and Alignment**

Mail converted by MHonArc 2.6.19+ | http://listengine.tuxfamily.org/ |