【问题标题】:Was the python script launched by mpirun or mpiexec?python 脚本是由 mpirun 还是 mpiexec 启动的?
【发布时间】:2013-05-12 19:39:52
【问题描述】:

我编写了一个 Python 脚本,它既可以独立启动,也可以通过 mpi 支持启动。

python myscript.py

mpirun -np 2 python myscript.py

如何在脚本内部知道脚本以何种方式启动以执行某些条件操作?

【问题讨论】:

    标签: python conditional mpi


    【解决方案1】:

    您是否关心它是使用 MPI 运行还是在一个 MPI 等级上运行?对于已编译的 MPI 代码,仅运行程序仍会在 MPI 下启动它,但只有一级;所以你可能只是初始化 MPI 并检查MPI_COMM_WORLD 的大小。但是,如果您在没有 MPI 的情况下运行,则可能是您试图避免初始化 MPI(或者甚至需要有可用的 MPI 实现)。如果是这样,您可能需要检查特定的环境变量,这些变量似乎是特定于实现的。对于 Open MPI,列表位于 http://www.open-mpi.org/faq/?category=running#mpi-environmental-variables。对于 MPICH,各种消息来源都提到了 PMI_RANKPMI_SIZE 作为常用设置; Microsoft MPI 记录了它设置的那些。它们可能特定于特定的 MPICH 版本或配置。 http://www.roguewave.com/portals/0/products/threadspotter/docs/2012.1/linux/manual_html/apas03.html 有一个变量列表可供检查,这也可能有用。

    【讨论】:

      【解决方案2】:

      如果你在 Unix 上,你可以分析以下输出:

      import os 
      print os.popen("ps -p %d -oargs=" % os.getpid()).read().strip()
      

      getpid()getppid()(针对父母)一起玩。对于可移植的解决方案,您需要像 psutil 这样的外部库:

      import psutil, os
      p = psutil.Process(os.getppid())
      print p.name
      

      【讨论】:

      • 抱歉...我正在寻找一种便携式解决方案。感谢您的回答
      • 可以使用外部库还是只使用 Python 的标准库?
      • 像什么?我可以将库添加到我的项目中
      • 你的回答是对的,但我之前选择了一个,因为不需要外部库。无论如何感谢您的帮助
      • np,如果您的 mpi 发行版支持它们,我还认为检查环境变量是一种更好的方法。
      猜你喜欢
      • 2014-10-06
      • 2013-04-27
      • 1970-01-01
      • 2019-05-21
      • 1970-01-01
      • 2014-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多