[eigen] Performance gap between gcc and msvc ?

[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]


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.



Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/