[eigen] Performance gap between gcc and msvc ? |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/eigen Archives
]
Hi,
i've done some performance comparaison between windows and linux, using
the blocked qr function.
I was using a Core i5 with 3gb memory, and I ran the decomposition on
2048x2048 double random matrix on 2 operating system :
- The first one is an opensuse 11.3 RC1 64 bits, shipped with gcc 4.5. I
got the computation done in 10s in release mode (that is, with -O3)
- The second one is Windows 7 64 bits, using Visual C++ 2010 express. It
ships with the 32 bits version of the compiler, and I've heard that some
feature like openMP are disabled. However, the computation was done in 6s
with release mode...
I've got something like a 40% performance drop for gcc in comparaison to
VC++ 2010. I've heard that gcc generated code was marginally slower than
MSVC one in some case, but 40% is not something negligible in my opinion.
I think I'm missing some powerful optimisation flags to pass to gcc, as I
know that the "by default" flags are quite conservative compared to some
others compilers. But I don't really know which flags to pass, so I'm
asking about this on the mailing list.
BTW is graphite optimisations performing well with eigen ?
On another note I ran qr decomposition for a 2048x2048 random matrix under
scilab on windows, because scilab ships with a (binary only) mkl on
windows. The computation is done in 2s.
I think that the difference may be explained by MSVC disabling openMP on
express version of the compiler, as Core i5 does have 4 logical core
(2physical+2 Hyperthreaded I think), hence a performance improvement. I
would like to know if Eigen does use openMP feature on matrix product,
simultineously with vectorisation feature.
Thanks,
Vincent