[Beowulf] compilers vs mpi?

Nifty Tom Mitchell niftyompi at niftyegg.com
Tue Jul 20 15:29:32 PDT 2010


On Tue, Jul 20, 2010 at 12:07:32PM -0400, Mark Hahn wrote:
> 
> Hi all,
> I'm interested in hearing about experiences with mixing compilers
> between the application and MPI.  that is, I would like to be able
> to compile MPI (say, OpenMPI) with gcc, and expect it to work
> correctly with apps compiled with other compilers.  I guess I'm
> reasoning by analogy to normal distro libs.
> 
> the OpenMPI FAQ has this comment:
> 
> NOTE: The Open MPI team recommends using a single compiler suite whenever
> possible. Unexpected or undefined behavior can occur when you mix compiler
> suites in unsupported ways (e.g., mixing Fortran 77 and Fortran 90 compilers
> between different compiler suites is almost guaranteed not to work).
> 
> and there are complaints elsewhere in the FAQ about f90 bindings.
> I'd appreciate it if someone could help a humble C/C++/perl hacker
> understand the issues here...
> 
> thanks, mark hahn.
> PS: we have a large and diverse user base, so tend to have to
> support gcc, Intel, pathscale and pgi.  we even have people who want
> to use intel's damned synthetic 128b FP over MPI :(


Some of this is historic and has been addressed transparently in  OpenMPI.
OFED pulls from OpenMPI I believe...
MPICH, MPICH2 is unknown to me.  Different compilers have the option of 
representing things differently ...

One is Fortran's notion of True/False   There are two conventions
you can test your compiler set with a debugger and short test code.
 0:1
 0:-1
i.e. a choice was made in the space -1:0:1  Depending on
some logic reductions some things might work in code
that breaks at a different optimization level.  

Two other places to double check are: strings and arg() handling.

The older Pathscale/QLogic MPI had libs with symbol handling magic
that could make most of this transparent via mpicc and friends.   
The OpenMPI folk did the same thing differently if I recall.    Synthetic
128b is unknown to me.   C++ bindings can be more difficult and
each compiler should be used to generate bindings as needed
perhaps based on the OpenMPI source/makefiles.   Some caution
is justified as the link line gets longer and longer and 
the users pull this GCC bit, a PGI built lib, an Intel-lib, goto-BLAS (pick one)
etc...

Summary:  boolian, args(), strings times a list of compilers
can generate a pile of permutations....



-- 
	T o m  M i t c h e l l 
	Found me a new hat, now what?




More information about the Beowulf mailing list