C++ MPI_Comm_spawn throws断言在文件src/util/procmap/local_proc.c的第127行失败:node_id<;=最大节点id
我正在使用MPICH。我用一个进程启动mpi程序,使用: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时,
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_idnprocs的值是多少?主机文件中必须有足够的进程插槽用于两个MPI作业,即nprocs+1
插槽。在这种情况下,我得到的nprocs
等于3。nprocs
的值是多少?主机文件中必须有足够的进程插槽用于两个MPI作业,即nprocs+1
插槽。在这种情况下,我得到的nprocs
等于3。