Re: [eigen] benchmarking weirdness

[ Thread Index | Date Index | More Archives ]

On Jan 6, 2008 2:36 PM, Benoît Jacob <jacob@xxxxxxxxxxxxxxx> wrote:
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.
yes, I forgot to mention that. ICC want to use the MatrixBase::random member instead of the global one. I don't know how to fix that properly. Maybe the the global math functions should have their own namespace or be inside a static class....

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.

it seems ICC also defines __GNUC__ and understands  __attribute__((always_inline)) , so nothing to do here :)

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.

note that this assert is raised from the ICC binary at compile time ! so it is likely a ICC bug or wrong C++ code.

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.

Obviously, I also tried to get GCC be able to vectorize but I did not succeed. I have already succeeded to get auto-vectorization working on other codes, so I guess this is really a limitation of the current GCC ( 4.2.1). Maybe the 4.3 branch is smarter...

> and for your information, the 3x3 example takes about 15s without
> _expression_ template (with GCC and manual unrolling).
I used another lib for that experiment ! it was just to show that everything seems to work well.


Mail converted by MHonArc 2.6.19+