Miguel Ángel Vázquez wrote:
> Dear all,
> I am trying to run a C++ program which uses dynamic libraries under mpi.
> The compilation command looks like:
> mpiCC `pkg-config --cflags itpp` -o montecarlo montecarlo.cpp
> `pkg-config --libs itpp`
> And it works if I executed it in one machine:
> mpirun -np 2 -H localhost montecarlo
> I tested this both in the "master node" and in the "compute nodes" and
> it works. However, when I try to run it with two different machines:
> mpirun -np 2 -H localhost,hpcnode1 montecarlo
> The program claims that it can't find the shared libraries:
> montecarlo: error while loading shared libraries: libitpp.so.6: cannot
> open shared object file: No such file or directory
> The LD_LIBRARY_PATH is set properly at every machine, any idea where the
> problem is? I attached you the config.log and the result of the omp-info
> Thank you in advance,
Shells behave differently depending on whether it is an interactive
login shell or a non-interactive shell. For example, the bash shell uses
.bash_profile in case, but .bashrc in the other. Check the documentation
for your shell and see what files it uses in each case, and make sure
the non-login config file has the necessary settings for your MPI jobs.
It sounds like your login shell environment is okay, but your non-login
environment isn't setup correctly. This is a common problem.
I use bash, and to keep it simple, my .bash_profile is just a symbolic
link to .bashrc. That way, both shell types have the same environment.
This isn't always a good idea, but in my case it's fine.