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?