C++ MPI_Comm_spawn throws断言在文件src/util/procmap/local_proc.c的第127行失败:node_id<;=最大节点id

C++ MPI_Comm_spawn throws断言在文件src/util/procmap/local_proc.c的第127行失败:node_id<;=最大节点id,c++,mpi,spawn,mpich,C++,Mpi,Spawn,Mpich,我正在使用MPICH。我用一个进程启动mpi程序,使用: mpiexec -n 1 -f hostfile ./master [arguments] 其中,my arguments是mpi进程所需的参数集。主进程计算要生成的工作进程的最佳数量,然后调用以下函数: MPI_Comm_spawn("./worker", argv, nprocs, MPI_INFO_NULL, 0, MPI_COMM_SELF,&intercomm,NULL); 现在,当我有一个machinefile时,

我正在使用MPICH。我用一个进程启动mpi程序,使用:

mpiexec -n 1 -f hostfile ./master [arguments]
其中,my arguments是mpi进程所需的参数集。主进程计算要生成的工作进程的最佳数量,然后调用以下函数:

MPI_Comm_spawn("./worker", argv, nprocs, MPI_INFO_NULL, 0, MPI_COMM_SELF,&intercomm,NULL);
现在,当我有一个machinefile时,该程序运行良好,如下所示:

node01:2
node02:1
node03:1
node04:1
因此,在node01上,我有2个进程正在运行(master+1 worker),其余的节点有一个进程。所以我修改了hostfile,如下所示。现在,在执行
MPI\u COMM\u spawn()
之后,子进程没有初始化,最后我的断言失败

node01:1
node02:1
node03:1
node04:1
错误

Assertion failed in file src/util/procmap/local_proc.c at line 127: node_id <= max_node_id
internal ABORT - process 0
Assertion failed in file src/util/procmap/local_proc.c at line 112: my_node_id <= max_node_id
internal ABORT - process 2
Assertion failed in file src/util/procmap/local_proc.c at line 127: node_id <= max_node_id
internal ABORT - process 1

在文件src/util/procmap/local_proc.c第127行的断言失败:node_id
nprocs的值是多少?主机文件中必须有足够的进程插槽用于两个MPI作业,即
nprocs+1
插槽。在这种情况下,我得到的
nprocs
等于3。
nprocs
的值是多少?主机文件中必须有足够的进程插槽用于两个MPI作业,即
nprocs+1
插槽。在这种情况下,我得到的
nprocs
等于3。