如何让 MPI 工作节点读取自己的环境变量?

How to allow MPI worker nodes read their own environment variables?

我正在使用 OpenMPI 和 mpirun,我的 MPI 进程分布在多个 Docker 容器中。每个 Docker 容器都是 运行 自己的进程,它有一个环境变量,比如 FOO,其中 $FOO(即它的值)因容器而异。主节点中的进程 运行 是调用 mpirun 的进程。有没有办法让每个工作节点在 mpirun 命令的 MPI 进程中设置 FOO

我的问题与 的不同之处在于环境变量的值可能因容器而异。在 mpirun 命令中使用 -x 导出主节点的环境变量值,因此这对我正在尝试做的事情不起作用。

编辑:根据评论进行了修改以澄清

张贴以防最终对其他人有帮助 -

我最终通过在启动 MPI 进程之前将环境变量写入 /etc/environment 来解决这个问题。我的 Docker 图像使用 Ubuntu 作为基础,即使在非交互式、非登录 shell(这是 MPI 使用的)中,/etc/environment 也受到尊重。