Mpi 确定MPMD中每个程序的进程数

Mpi 确定MPMD中每个程序的进程数,mpi,Mpi,是否可以从程序中知道有多少进程正在执行prog_1和prog_2 mpirun-np3程序1:-np5程序2 我的意思是,我怎么知道3个进程正在执行的prog_1的内部呢?我认为没有一种简单且可移植的方法来实现这一点。 程序名在argv[0]中,因此您可以MPI_聚集()它们和MPI_Bcast()或MPI_分散()您需要的信息 另一种方法是只从第一个程序开始,然后MPI\u Comm\u spawn()第二个程序。argv只包含可执行文件前面的字符串(以及可执行文件的名称),因此-np 3不会

是否可以从程序中知道有多少进程正在执行
prog_1
prog_2

mpirun-np3程序1:-np5程序2


我的意思是,我怎么知道3个进程正在执行的prog_1的内部呢?

我认为没有一种简单且可移植的方法来实现这一点。 程序名在
argv[0]
中,因此您可以
MPI_聚集()
它们和
MPI_Bcast()
MPI_分散()
您需要的信息


另一种方法是只从第一个程序开始,然后
MPI\u Comm\u spawn()
第二个程序。

argv只包含可执行文件前面的字符串(以及可执行文件的名称),因此-np 3不会出现在那里(我正确理解您的想法?)。我试图避免使用MPI_Comm_spawn。这就是为什么您需要
MPI_Gather()
所有
argv[0]
,然后您可以计算出有多少程序以及每个程序运行了多少个实例。现在我明白了,谢谢您的新解释!