[Beowulf] compilers vs mpi?

Gus Correa gus at ldeo.columbia.edu
Tue Jul 20 10:48:11 PDT 2010

HI Mark

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.

I haven't built OpenMPI this way,
but you may try to link statically with commercial compiler libraries
(say -static-intel, -Bstatic_pgi),
to avoid too much mess with the user environment,
when they are use a different compiler than the one underlying the MPI 

> the OpenMPI FAQ has this comment:
> NOTE: The Open MPI team recommends using a single compiler suite whenever
> possible. Unexpeced 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).

Yes, they do recommend compiler homogeneity.
However, I have built hybrids gcc+ifort
and gcc+pgf90 and both work fine.
(I have the homogeneous versions also.)

I do not even use a different Fortran77 compiler,
it is the same as Fortran90 (F77=FC).

In any case, my experience is that many applications come with such
messy configure/Makefile scheme (which often times refuses
to use the MPI compiler wrappers properly), that no matter what
you do to provide a variety of MPI builds,
there are always problems to build some applications,
and you need to lend a hand to the user.

> and there are complaints elsewhere in the FAQ about f90 bindings.  

In my experience they are not perfect but work reasonably well.
For instance, they do not check
all interfaces (or whatever F90 calls the analog of C function 
prototypes), but if the program is correctly written,
and doesn't go OO-verboard in relying that such checks will be done,
things work.
Fortran77 never had these features anyway, and I guess
mpif77 doesn't check if you are passing an integer
where it should be a real, or if your argument list is shorter
than the function requires.

> 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.  

... and don't forget Open64!  :)

we even have people who want to use
> intel's damned synthetic 128b FP over MPI :(

It's hard to keep the customer satisfied.
You give them the sky, they want the universe.

I hope this helps,
Gus Correa

> _______________________________________________
> Beowulf mailing list, Beowulf at beowulf.org sponsored by Penguin Computing
> To change your subscription (digest mode or unsubscribe) visit 
> http://www.beowulf.org/mailman/listinfo/beowulf

More information about the Beowulf mailing list