[eigen] Problem with g++-4.4 -O2 and Eigen3

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


Hi folks,

after updating Eigen to the newest version in the repository, I now compile my code with Eigen including the "no inlining of the GEBP product kernel" change by Gael.

However, still a simple matrix multiplication goes awfully wrong when using -O2 in g++-4.4:

// a code snipped
Eigen::Matrix<double,3,9> J;
J.fill(1.0);
Eigen::Matrix<double,3,9> Jprime = Eigen::Matrix3d::Identity() * J;
std::cout << "J\n" << J << std::endl;
std::cout << "Jprime\n" << Jprime << std::endl;

// output
J
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
Jprime
-1 -1 -1 -1 -1 -1 -1 -1 -1
-1 -1 -1 -1 -1 -1 -1 -1 -1
-1 -1 -1 -1 -1 -1 -1 -1 -1

As for Hauke, this only occurs only when used deeper inside a project, in the main function it works alright. The problem also occurs for a matrix size of 3x8, and disappears for 3x7 and smaller. Using dynamic sizes does not help.
I also could not find a working order of .o files during linking.

Maybe the no onlining fix didn't go far enough?

Boris

--
Boris Lau

Albert-Ludwigs-University Freiburg
Institute of Computer Science, Autonomous Intelligent Systems Group
Georges-Koehler-Allee 079, D-79110 Freiburg, Germany

Building 079, Room 1005
Phone: +49 761 203-8012 | Mobile: +49 174 9436758
http://www.informatik.uni-freiburg.de/~lau



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