Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Open MPI User's mailing list

Subject: Re: [OMPI users] Performance: MPICH2 vs OpenMPI
From: Anthony Chan (chan_at_[hidden])
Date: 2008-10-09 12:28:42

----- "Brian Dobbins" <bdobbins_at_[hidden]> wrote:

> OpenMPI : 120m 6s
> MPICH2 : 67m 44s
> That seems to indicate that something else is going on -- with -np 1,
> there should be no MPI communication, right? I wonder if the memory
> allocator performance is coming into play here.

If the app sends message to its own rank, it could still go through MPI stack
even with -np 1, i.e. it involves at least 1 memcpy() for point-to-point calls.

> I'd be more inclined to double-check how the Gromacs app is being
> compiled in the first place - I wouldn't think the OpenMPI memory
> allocator would make anywhere near that much difference. Sangamesh, do
> you know what command line was used to compile both of these? Someone
> correct me if I'm wrong, but if MPICH2 embeds optimization flags in
> the 'mpicc' command and OpenMPI does not, then if he's not specifying
> any optimization flags in the compilation of Gromacs, MPICH2 will pass
> its embedded ones on to the Gromacs compile and be faster. I'm rusty
> on my GCC, too, though - does it default to an O2 level, or does it
> default to no optimizations?

MPICH2 does pass CFLAGS specified in configure step to mpicc and friends.
If users don't want CFLAGS to be passed to mpicc, they should set
MPICH2LIB_CFLAGS instead. The reason behind passing CFLAGS to mpicc
is that CFLAGS may contain flag like -m64 or -m32 which is needed in
mpicc to make sure object files compatible with MPICH2 libraries.

I assume default installation here means no CFLAGS is specified, in that
case MPICH2's mpicc will not contain any optimization flag (this is true
in 1.0.7 or later, earlier versions of MPICH2 had various inconsistent
way of handling compiler flags between compiling the libraries and those
used in compiler wrappers.) If Gromacs is compiled with mpicc,
"mpicc -show -c" will show if any optimization flag is used. Without "-c",
the -show alone displays the link command. To check what mpich2 libraries
are compiled of, use $bindir/mpich2version.

If I recall correctly, gcc defaults to "-g -O2". Not sure if the newer version
of gcc changes that.

> Since the benchmark is readily available, I'll try running it later
> today.. didn't get a chance last night.
> Cheers,
> - Brian
> _______________________________________________
> users mailing list
> users_at_[hidden]