我的程序如何检测它是否是通过mpirun启动的

我的程序如何检测它是否是通过mpirun启动的,mpi,Mpi,我的MPI程序是作为独立应用程序启动的还是通过mpirun启动的?考虑到半无用和Hristo Iliev的回答和评论,没有通用和可移植的方法来实现这一点。作为一种解决方法,您可以检查mpirun设置的环境变量。参见示例: 没有MPI标准方法来区分直接启动的MPI应用程序与作为单个列组使用mpirun启动的MPI应用程序之间的区别。有关此类MPI作业的详细信息,请参见“” Douglas提供的环境变量检查答案是一种合理的攻击……但不能移植到任何其他MPI实现中 你想解决的问题是什么,需要了解ran

我的MPI程序是作为独立应用程序启动的还是通过mpirun启动的?

考虑到半无用和Hristo Iliev的回答和评论,没有通用和可移植的方法来实现这一点。作为一种解决方法,您可以检查mpirun设置的环境变量。参见示例:

没有MPI标准方法来区分直接启动的MPI应用程序与作为单个列组使用mpirun启动的MPI应用程序之间的区别。有关此类MPI作业的详细信息,请参见“”


Douglas提供的环境变量检查答案是一种合理的攻击……但不能移植到任何其他MPI实现中

你想解决的问题是什么,需要了解rank是如何启动的?@我们有一个任务来解决一些NP问题,首先是作为一个独立的单核程序,然后是MPI集群。我想,如果我只有一个二进制文件,那么它就会简洁明了。
mpirun-np1
?为什么不通过一个脚本来实现这一点…@pyCthon它应该可以在没有安装MPI的情况下运行…@fhucho是的,在你运行代码的脚本中,你可以让它回显或打印来控制它是如何运行的…是的,我也会将环境变量的答案描述为一种攻击。我很惊讶没有更好的解决方案。@DouglasB.stype,MPI标准明确规定它没有规定如何启动MPI程序(§8.7和§8.8)。使用诸如
mpirun
之类的启动器执行启动被视为实施细节,尽管§8.8建议(但不强制要求)提供了一个名为
mpiexec
的启动器,并就如何命名其命令行选项向实现者提出建议。@hristoilev谢谢--考虑到您的评论和Semiuminable的回答,我更新了我的答案,指出这是一个解决方法+1和+1。