2012-07-06 49 views
5

我試圖使用mpi運行使用轉矩調度程序來運行我的程序。雖然在我的PBS文件我加載的所有圖書館通過在open-mpi/mpi-run中加載共享庫

export LD_LIBRARY_PATH=/path/to/library 

但它給錯誤即

error while loading shared libraries: libarmadillo.so.3: 
cannot open shared object file: No such file or directory. 

我猜的錯誤在於在所有節點沒有設置變量LD_LIBRARY_PATH。我將如何使它工作?

+0

你可以在這裏發佈你的PBS腳本嗎? – chrisaycock 2012-07-06 19:09:42

回答

16

LD_LIBRARY_PATH不會自動導出到MPI進程,產生mpirun。您應該使用

mpirun -x LD_LIBRARY_PATH ... 

推送的值爲LD_LIBRARY_PATH。還要確保指定的路徑存在於羣集中的所有節點上,並且在任何地方都可以使用libarmadillo.so.3

+2

如果使用本地Torque/TM支持編譯Open MPI,則應自動將LD_LIBRARY_PATH(和環境的其餘部分)傳播到分配中的所有節點。如果Open MPI不是使用原生Torque支持構建的,那麼我猜你正在使用rsh/ssh來啓動,在這種情況下,「-x LD_LIBRARY_PATH」子句是必需的。我實際上建議用Torque/TM支持重新構建OMPI;由於多種原因,它比rsh/ssh支持要好。 – 2012-07-09 14:56:14

+0

謝謝。我用這個SHIT驅動MAD ....導出LD_LIBRARY_PATH應該讓子進程使用這些變量,但事實證明它並不是。 – 2016-03-22 22:56:10

+0

@GregK。導出只適用於在mpiexec運行的同一節點上啓動的進程,因爲這些進程是後者的子進程。在遠程節點上啓動的進程是相應ORTE牧羊人守護進程的子進程,並且不直接繼承「mpiexec」環境,而僅僅是轉發到守護進程並由其另外設置的環境。 (我可能是錯的;傑夫斯派雷斯更清楚) – 2016-03-22 23:29:20

3

在某些系統上,您的環境並不總是通過mpirun傳播。您應該在.bashrc文件中設置所有這些變量。