Hi Denis,
no, it's just a member variable VectorizedArray:
VectorizedArray<value_type> a;
But then the class/struct that holds this member variable is not
properly aligned, you probably have it inside an std::vector or
allocated it with 'new'. You will need to put it into an AlignedVector
or similar type. Alternatively you need to wrap the member that is of
type VectorizedArray into an AlignedVector<VectorizedArray>.
|
>│0x7ffff73913cb <Operator<3, 2, 3, LA::d::Vector<float>
>::Operator()+35> vmovaps %ymm0,0xe0(%rbx)
|
This is the offending instruction. The compiler tries to store to the
address given by an offset of 0xe0 (224 bytes) to the value in %rbx,
using an 'aligned' store operation (vmovAps) that assumes 32 byte
alignment. If you print the value of %rbx (in gdb with 'print $rbx'),
I'm pretty sure you get an address that is divisible by 16 but not by
32. It is a pity that the compiler / API of the intrinsics forces the
compiler to use an aligned access instruction whenever there is a
variable of type VectorizedArray but there's nothing we can change and
we have to live with that...
Best,
Martin
--
The deal.II project is located at http://www.dealii.org/
For mailing list/forum options, see
https://groups.google.com/d/forum/dealii?hl=en
---
You received this message because you are subscribed to the Google Groups "deal.II User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to dealii+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.