【问题标题】:How to allow MPI worker nodes read their own environment variables?如何让 MPI 工作节点读取自己的环境变量?
【发布时间】: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任务,因此可能会给他们留下机会获取已经设置的值我不知道如何。

标签: environment-variables mpi


【解决方案1】:

发帖以防万一这最终对其他人有帮助 -

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

【讨论】:

    猜你喜欢
    • 2018-07-01
    • 2017-09-04
    • 2021-08-12
    • 1970-01-01
    • 1970-01-01
    • 2012-08-30
    • 2014-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多