如何在MPI作业中的计算节点上设置环境变量

jan*_*195 7 environment-variables mpi

我不明白在调度程序下使用MPI运行时如何在计算节点上设置环境.

我做:

mpirun -np 1 --hostfile ./hostfile foo.sh
Run Code Online (Sandbox Code Playgroud)

foo.sh:

#!/usr/bin/env zsh                                                                                                  
echo $LD_LIBRARY_PATH
Run Code Online (Sandbox Code Playgroud)

然后我没有恢复我在交互式shell中的LD_LIBRARY_PATH ...在与MPI连接时执行/获取的初始化文件是什么?

注意:我在zsh下,我试图把东西放在.zprofile或.zshenv而不是.zshrc中,但它似乎没有做出改变......我的LD_LIBRARY_PATH是在一个.profile中设置的. .bshrc,由.zshrc提供.

Phi*_*lip 7

一些MPI实现-x为此具有mpirun 的标志,例如OpenMPI

-x <env>

在执行程序之前,将指定的环境变量导出到远程节点。每个-x选项只能指定一个环境变量。可以指定现有的环境变量,也可以指定具有相应值的新变量名称。例如:

%mpirun -x显示-x OFILE = / tmp / out ...

-x选项的解析器不是很复杂。它甚至不理解引用的值。建议用户在环境中设置变量,然后使用-x导出(而不是定义)它们。

如果不是,则必须在作业脚本中显式设置环境变量,例如

export LD_LIBRARY_PATH=...
Run Code Online (Sandbox Code Playgroud)

  • 这是正确的方法。MPI甚至可以在计算节点上没有外壳的机器(例如Blue Gene)上运行;当然不能保证将mpirun ssh-es插入每台计算机并在适当的环境下启动shell。集群上的实现通常会_s_对小型节点执行此操作,但是即使这样,如果可用的速度更快(例如在运行Torque的系统上的tm),也无法实现。因此,通常使用方法是使用实​​现特定的选项如上所述导出环境变量,或者将可执行文件包装在设置环境变量的脚本中。 (2认同)