【问题标题】:MPI error from very simple example fortran code来自非常简单的示例 fortran 代码的 MPI 错误
【发布时间】:2020-11-25 01:36:29
【问题描述】:

我已经编译了这段代码:

 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 系统上执行此操作。

【问题讨论】:

    标签: mpi


    【解决方案1】:

    我知道为什么会这样了。我正在使用的系统不需要用户通过调度程序提交单核作业,但对于多核作业确实需要它。一旦通过 PBS bash 脚本提交了 mpiexec 命令,错误就消失了,并且输出如预期的那样。

    【讨论】:

    • 您可能在集群的头节点上设置了非常低的资源限制。 ulimit -a 显示它们。这通常是为了防止人们使用多核作业使头节点超载。
    猜你喜欢
    • 2012-10-09
    • 2015-05-13
    • 2020-03-23
    • 2011-05-10
    • 1970-01-01
    • 1970-01-01
    • 2011-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多