是由mpirun或mpiexec发布的python脚本吗?

时间:2013-05-17 15:07:50

标签: python conditional mpi

我编写了一个python脚本,既可以单独启动,也可以使用mpi支持。

python myscript.py

VS

mpirun -np 2 python myscript.py

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

2 个答案:

答案 0 :(得分:3)

您是否关心它是使用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检查的变量列表也可能有用。

答案 1 :(得分: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