Il problema che ho riscontrato è stato risolto qui: Loading shared library in open-mpi/ mpi-runMPI - librerie di errore di caricamento condiviso
io non so come, impostando LD_LIBRARY_PATH
o specificando -x LD_LIBRARY_PATH
risolve il problema, quando la mia installazione stessa specifica gli argomenti -L necessarie. La mia installazione è in ~/mpi/
Ho incluso anche il mio compilazione-link configurazioni.
$ mpic++ -showme:version
mpic++: Open MPI 1.6.3 (Language: C++)
$ mpic++ -showme
g++ -I/home/vigneshwaren/mpi/include -pthread -L/home/vigneshwaren/mpi/lib
-lmpi_cxx -lmpi -ldl -lm -Wl,--export-dynamic -lrt -lnsl -lutil -lm -ldl
$ mpic++ -showme:libdirs
/home/vigneshwaren/mpi/lib
$ mpic++ -showme:libs
mpi_cxx mpi dl m rt nsl util m dl % Notice mpi_cxx here %
Quando ho compilato con mpic++ <file>
e corse con mpirun a.out
ho ottenuto un (libreria condivisa) linker errore
error while loading shared libraries: libmpi_cxx.so.1:
cannot open shared object file: No such file or directory
L'errore è stato risolto impostando LD_LIBRARY_PATH
. La domanda è come e perché? Cosa mi manca? Perché LD_LIBRARY_PATH
richiesta quando la mia installazione sembra proprio bene.
Assicurarsi che il 'LD_LIBRARY_PATH' non viene overwitten in' .bashrc' come la mia era con CUDA. Volete qualcosa di simile a 'export LD_LIBRARY_PATH =/lib64/openmpi/lib: $ LD_LIBRARY_PATH' –