【问题标题】:How can my program detect, whether it was launch via mpirun我的程序如何检测它是否是通过 mpirun 启动的
【发布时间】:2012-10-01 17:49:33
【问题描述】:

我的 MPI 程序如何检测它是作为独立应用程序还是通过 mpirun 启动的?

【问题讨论】:

  • 您要解决什么问题需要了解排名是如何启动的?
  • @semiuseless 我们有一个任务来解决一些 NP 问题,首先作为独立的单核程序,然后在 MPI 集群上。而且我认为如果我只有一个二进制文件会很简洁。
  • mpirun -np 1?为什么不直接通过脚本来实现...
  • @pyCthon 它应该可以在没有安装 MPI 的情况下运行...
  • @fhucho 是的,在你运行代码的脚本中,你可以让它回显或打印到控制台它是如何运行的......

标签: mpi


【解决方案1】:

考虑到 semiuseless 和 Hristo Iliev 的答案和 cmets,没有通用且可移植的方法来做到这一点。作为一种解决方法,您可以检查 mpirun 设置的环境变量。参见例如:
http://www.open-mpi.org/faq/?category=running#mpi-environmental-variables

【讨论】:

    【解决方案2】:

    没有 MPI 标准方法来区分直接启动的 MPI 应用程序,或与 mpirun 一起启动的单一级别。有关此类 MPI 作业的更多信息,请参阅“Singleton MPI_Init”。

    Douglas 的环境变量检查答案是一个合理的 hack……但不能移植到任何其他 MPI 实现。

    【讨论】:

    • 是的,我还将环境变量的答案描述为 hack。我很惊讶没有更好的解决方案。
    • @DouglasB.Staple,MPI 标准明确声明它没有指定 MPI 程序的启动方式(第 8.7 节和第 8.8 节)。使用像mpirun 这样的启动器来执行启动被认为是一个实现细节,尽管§8.8 建议(但不强制)提供一个名为mpiexec 的启动器并且建议 实现者关于如何命名其命令行选项。
    • @HristoIliev 谢谢——我更新了我的答案,指出这是一种解决方法,考虑到你的评论和半无用的答案。 +1 和 +1。
    猜你喜欢
    • 2020-06-05
    • 1970-01-01
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-05
    相关资源
    最近更新 更多