|Re: [eigen] benchmarking weirdness|
[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]
Hi, Thanks for the updated patch, I just committed it as this list has been notified. There is only one thing that I don't understand: why did you introduce this random_ ? I reverted this change. Other than that, your diff was applied as-is. It's also interesting that the enum trick did not work! Also, now I remember why my approach was legal C++: in the CRT pattern, the Derived and Base classes are generated simultaneously. Anyway, I'm very happy to have your patch. Regarding inlining, you could edit the EIGEN_ALWAYS_INLINE define in Util.h and set it to whatever is appropriate when the compiler is ICC. I don't really understand how there can be a failed assert... the first thing to do is to run test/test in gdb to get a backtrace; the second thing to do is to track down the precise line of code in test/*.cpp that triggers the failed assert. I don't know much about vectorization and didn't know that -fno-exceptions played a role here. Maybe then GCC would also be able to vectorize? In benchmark_suite I didn't ask it to, so it's no wonder why it didn't vectorize. But of course, I don't expect GCC's x86 assembly backend to be as good as ICC's one. > and for your information, the 3x3 example takes about 15s without > expression template (with GCC and manual unrolling). Here I don't understand what you are saying. Are you mixing up "unrolling by meta-programs" and "expression templates" ? There is no way that you can use Eigen2 without expression templates as that would amount to rewriting it all from scratch; also, expression templates are not directly related to unrolling. If you want to see what performance would be without expression templates, use Eigen1 instead of Eigen2. You should get 30%-50% lower speed in this example. Cheers, Benoit PS. Feel free to join #eigen on freenode for discussion.
Description: This is a digitally signed message part.
|Mail converted by MHonArc 2.6.19+||http://listengine.tuxfamily.org/|