|Re: [eigen] benchmarking weirdness|
[ Thread Index |
| More lists.tuxfamily.org/eigen Archives
- To: eigen@xxxxxxxxxxxxxxxxxxx
- Subject: Re: [eigen] benchmarking weirdness
- From: "Gael Guennebaud" <gael.guennebaud@xxxxxxxxx>
- Date: Sun, 6 Jan 2008 15:32:29 +0100
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:to:subject:in-reply-to:mime-version:content-type:references; bh=5qlRaVBVk60sKmPRX1PZPsDbv2YS80LFioFlocY0TeQ=; b=UQyguWbzcOJH6TvaUP60VM18wjt/0dkEkLiJrYKx9F4e0imQLfJ+93z/kYjXMTzoj0yFiEtvhLDgfG39x8FGTkYFAGD1jGR2ybc7tGJkdLUKqzlrEyiWQo7wAvFJC7dc3oNqq5FXUfGz/lM6WzVascs6f4C9+mpnLzjEziWXxCU=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:in-reply-to:mime-version:content-type:references; b=czrysCvuL2eRT0eSDHyTupGIEPTxwdUl+3rEMz3V3xnnkgyN8UJBp+sKREGiabIXWvFiOJswk2HlxmzuriffkQ1pY4GQfdoOvXOZadMHaVEAfBTcrRs99R1XjWbKua5N7QRk0D+5zWghOd3l7Bxoq4DGyA9FztQJnlBeyKgKH/g=
On Jan 6, 2008 2:36 PM, Benoît Jacob <jacob@xxxxxxxxxxxxxxx
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
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.