2012-07-06 47 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文件中设置所有这些变量。