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? _______________________________________________ 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