【发布时间】:2020-10-10 05:16:37
【问题描述】:
我正在使用 OpenMPI 和 mpirun,我的 MPI 进程被划分到多个 Docker 容器中。每个 Docker 容器都在运行自己的进程,该进程具有一个环境变量,例如 FOO,其中 $FOO(即它的值)因容器而异。在主节点中运行的进程是调用mpirun 的进程。有没有办法让每个工作节点在 mpirun 命令的 MPI 进程中设置 FOO?
我的问题与this one 不同,因为环境变量的值可能因容器而异。在 mpirun 命令中使用 -x 会导出主节点的环境变量值,因此这不适用于我正在尝试做的事情。
编辑:根据评论进行修改以澄清
【问题讨论】:
-
一个环境变量属于一个进程而不是一个容器。您首先需要弄清楚如何(可以这么说)“在容器环境中设置变量”并找到如何在该容器上运行的 MPI 任务中设置它(它是如何启动的?)。
-
“如何在该容器上运行的 MPI 任务中设置它(它是如何启动的?)”的第二部分是我正在寻找的这个问题。 (我已经编辑了问题以澄清第一部分。)
-
你是否已经弄清楚“容器环境中的变量是如何设置的”?同时你可以在调用
mpirun之前尝试unset FOO,这对你来说可能已经足够了(mpirun将不再将FOO环境变量“导出”到MPI任务,因此可能会给他们留下机会获取已经设置的值我不知道如何。