we have installed many software packages on our cluster and the default MPI-library that we suggest to our users is Intel MPI 5.0.3. We have compiled a parallel version of the HDF5 library with Intel MPI. Recently, I installed a version of MVAPICH2 that supports GPUDirect for a user that would like to use the GPUs. Since this user needs HDF5 as well, I thought to use the installed version of the parallel HDF5 library for Intel MPI. I would rely on the ABI compatibility of the different MPI libraries (https://wiki.mpich.org/mpich/index.php/ABI_Compatibility_Initiative):
The ABI compatibility initiative is an understanding between various MPICH derived MPI implementations to maintain runtime compatibility between each other. That is, an application can be compiled with one of them and executed with another.
MVAPICH2 is also compatible with the mentioned libraries, even though (unfortunately) it is not mentioned on the webpage. Unfortunately, the problem is that the Intel MPI wrappers for C automatically include libmpifort.so (the Fortran bindings for MPI). I compile the C application with the MVAPICH2 compiler wrapper for C and the HDF5 library. This wrapper does not include libmpifort.so when linking the executable. Now I end up with an executable that loads the MVAPICH2 libmpi.so library together with the Intel MPI libmpifort.so library, which fails.
Is it a bug that mpiicc also links in the Fortran bindings? If not, would it be possible to add an option to exclude the Fortran bindings from the executable?
PS: I could circumvent this problem by setting the LD_LIBRARY_PATH, but that is not preferred for many other reasons.
The Fortran bindings (libmpifort) should also be part of the MPICH package since they are part of the ABI Compliance Requirements. Therefore please check your installation and environment settings.
I filed an internal ticket (DPD200577045) in order to request a feature that allows you to disable the explicit linking of the Fortran bindings when using the compiler wrapper script.