Hi Sebastian,
There is a cmake option that we added just for this case,
EIGEN_ALIGNMENT. It is an "advanced" option, so turn on advanced options
in cmake to see it. By default, we set eigen alignment to ON for 32 and
64 linux, and 64 bit MS Visual Studio builds. Since we only had trouble
with 32 bit Visual Studio builds. It is interesting that you are seeing
this, so I'll take a look into if we should turn this off by default for
32bit builds with gcc as well.
In the mean time, you can turn off EIGEN_ALIGMENT, and that should
address the issue. This will pass EIGEN_DONT_ALIGN to eigen, and turn
off vectorization as you mentioned below. Or, you could try a 64 bit
Ubuntu as we have had better luck with 64 bit OS's. In fact, I did test
Ubuntu 14.04 64bit during the release process so that should work with
eigen alignment on.
I would recommend trying to get your system to work with EIGEN_ALIGMENT
ON, it had a significant effect on our physics performance tests, I
think 2-3 times faster.
-Paul
On Mon, 2014-10-06 at 10:05 -0300, Sebastian Ordas wrote:
> Hello team, we are testing the Staple example on a virtual machine
> running kubuntu 14.04 LTS 32bits
>
> We get the following assertion:
>
>
http://eigen.tuxfamily.org/dox-devel/group__TopicUnalignedArrayAssert.html
>
> demo@demo:~/opensurgsim/OpenSurgSim/build/Examples/Stapling$ ./Stapling
> Stapling: /usr/include/eigen3/Eigen/src/Core/DenseStorage.h:78:
> Eigen::internal::plain_array<T, Size, MatrixOrArrayOptions,
> 16>::plain_array() [with T = double; int Size = 16; int
> MatrixOrArrayOptions = 0]: Assertion
> `(reinterpret_cast<size_t>(eigen_unaligned_array_assert_workaround_gcc47(array))
> & 0xf) == 0 && "this assertion is explained here: "
> "
http://eigen.tuxfamily.org/dox-devel/group__TopicUnalignedArrayAssert.html"
> " **** READ THIS WEB PAGE !!! ****"' failed.
> Aborted (core dumped)
>
> How to overcome it? Any hint?
>
> The pointer website suggests:
>
>
> I don't care about vectorization, how do I get rid of that stuff?
>
> Two possibilities:
>
> * Define EIGEN_DONT_ALIGN_STATICALLY. That disables all 128-bit static
> alignment code, while keeping 128-bit heap alignment. This has the
> effect of disabling vectorization for fixed-size objects (like
> Matrix4d) while keeping vectorization of dynamic-size objects (like
> MatrixXd). But do note that this breaks ABI compatibility with the
> default behavior of 128-bit static alignment.
> * Or define both EIGEN_DONT_VECTORIZE and