问题描述
我不了解在调度程序下使用MPI运行时如何在计算节点上设置环境.
I don't understand how the environment is set on compute nodes when running with MPI under a scheduler.
我这样做:
mpirun -np 1 --hostfile ./hostfile foo.sh
与 foo.sh
:
#!/usr/bin/env zsh
echo $LD_LIBRARY_PATH
然后我不恢复在交互式shell中获得的LD_LIBRARY_PATH ...与MPI连接时执行/获取的初始化文件是什么?
Then I do not recover the LD_LIBRARY_PATH I have got in an interactive shell... What are the initialization files that are executed/sourced at connection with MPI?
注意:我在zsh下,我试图将内容放在.zprofile或.zshenv中,而不是.zshrc中,但似乎没有改变...我的LD_LIBRARY_PATH设置在.profile中.由.zshrc来源的.bashrc来源.
note: I am under zsh, and I tried to put things in .zprofile or .zshenv instead of .zshrc, but it doesn't seem to make a change... My LD_LIBRARY_PATH is set in a .profile which is sourced by a .bashrc which is sourced by the .zshrc.
推荐答案
某些MPI实现为此为此mpirun设置了 -x
标志,例如 OpenMPI :
Some MPI implementations have an -x
flag for mpirun for this, e.g. OpenMPI:
在执行程序之前,将指定的环境变量导出到远程节点.每个-x选项只能指定一个环境变量.可以指定现有的环境变量,也可以使用相应的值指定新的变量名称.例如:
Export the specified environment variables to the remote nodes before executing the program. Only one environment variable can be specified per -x option. Existing environment variables can be specified or new variable names specified with corresponding values. For example:
%mpirun -x显示-x OFILE =/tmp/out ...
% mpirun -x DISPLAY -x OFILE=/tmp/out ...
-x选项的解析器不是很复杂.它甚至不理解引用的值.建议用户在环境中设置变量,然后使用-x导出(而不是定义)它们.
The parser for the -x option is not very sophisticated; it does not even understand quoted values. Users are advised to set variables in the environment, and then use -x to export (not define) them.
如果没有,则必须在作业脚本中明确设置环境变量,例如
If your's does not, you'll have to explicitly set the environment variables in your job script, e.g.
export LD_LIBRARY_PATH=...
这篇关于如何在MPI作业中的计算节点上设置环境变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!