我编写了一个python脚本,既可以单独启动,也可以使用mpi支持。
python myscript.py
VS
mpirun -np 2 python myscript.py
如何在脚本内部知道启动脚本以执行某些条件操作的方式?
答案 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_RANK
和PMI_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