I'm having trouble with the portability of executables compiled with OpenMPI. I suspect the sysadms on the HPC system I'm using changed something because I think it worked previously.

Situation: I'm compiling my code locally on a machine with just ethernet interfaces and OpenMPI 1.1.2 that I built.

When I attempt to run that executable on a HPC machine with OpenMPI 1.1.2 and InfiniBand interfaces I get messages about "can't find libmosal.so.0.0" -- I'm certain this wasn't happening earlier.

I can compile on this machine and run on it, even though there is no libmosal.* in my path.

mpif90 --showme on this system gives me:

/opt/compiler/intel/compiler91/x86_64/bin/ifort -I/opt/mpi/x86_64/ intel/9.1/openmpi-1.1.4/include -pthread -I/opt/mpi/x86_64/intel/9.1/ openmpi-1.1.4/lib -L/opt/mpi/x86_64/intel/9.1/openmpi-1.1.4/lib -L/ opt/gm/lib64 -lmpi_f90 -lmpi -lorte -lopal -lgm -lvapi -lmosal -lrt - lnuma -ldl -Wl,--export-dynamic -lnsl -lutil -ldl


I suspect that read access to libmosal.so has been removed and somehow when I link on this machine I'm getting a static library, i.e. libmosal.a


Does this make any sense?

Is there a flag in this compile line that permits linking an executable even when the person doing the linking does not have access to all the libraries, i.e. export-dynamic?


Michael

Reply via email to