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

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@beowulf.org sponsored by Penguin Computing
To change your subscription (digest mode or unsubscribe) visit http://www.beowulf.org/mailman/listinfo/beowulf

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

Reply via email to