Re: [eigen] benchmarking weirdness

[ Thread Index | Date Index | More Archives ]


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.


PS. Feel free to join #eigen on freenode for discussion.

Attachment: signature.asc
Description: This is a digitally signed message part.

Mail converted by MHonArc 2.6.19+