Archives


- Beowulf
- Beowulf Announce
- Scyld-users
- Beowulf on Debian

[Beowulf] compilers vs mpi?

Many of your questions may have already been answered in earlier discussions or in the FAQ. The search results page will indicate current discussions as well as past list serves, articles, and papers.

Search

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