MPI错误来自非常简单的fortran代码示例



我编译了以下代码:

program mpisimple

implicit none

integer ierr
include 'mpif.h'
call mpi_init(ierr)
write(6,*) 'Hello World!'
call mpi_finalize(ierr)
end

使用命令:mpif90-o helloworld simplempi.f90

当我使用以下命令运行时:

$ mpiexec -np 1 ./helloworld
Hello World!

正如你所看到的,它工作得很好。但当我使用任何其他数量的处理器(这里是4个(运行时,我会收到错误,基本上我必须用ctrl+C来杀死它

Fatal error in MPI_Init: Other MPI error, error stack:
MPIR_Init_thread(805).....: fail failed
MPID_Init(1859)...........: channel initialization failed
MPIDI_CH3_Init(126).......: fail failed
MPID_nem_init_ckpt(858)...: fail failed
MPIDI_CH3I_Seg_commit(427): PMI_KVS_Get returned 4
In: PMI_Abort(69777679, Fatal error in MPI_Init: Other MPI error, error stack:
MPIR_Init_thread(805).....: fail failed
MPID_Init(1859)...........: channel initialization failed
MPIDI_CH3_Init(126).......: fail failed
MPID_nem_init_ckpt(858)...: fail failed
MPIDI_CH3I_Seg_commit(427): PMI_KVS_Get returned 4)
forrtl: severe (174): SIGSEGV, segmentation fault occurred

可能是什么问题?我是在Linux hpc系统上做这件事的。

我弄清楚了发生这种情况的原因。我使用的系统不要求用户通过调度器提交单核作业,但多核作业需要它。一旦mpiexec命令通过PBS bash脚本提交,错误就消失了,输出如预期。

最新更新