2

在 Cray XC30 上运行 VASP 5.3.5 时,我看到以下错误:

Rank 4 [Mon Jun  1 14:58:35 2015] [c1-0c0s2n0] Fatal error in PMPI_Allgatherv:  Invalid buffer pointer, error stack:
PMPI_Allgatherv(1235): MPI_Allgatherv(sbuf=0x49ead730, scount=1536,  MPI_DOUBLE_COMPLEX, rbuf=0x49e95730, rcounts=0x494cdba0, displs=0x494d7360, 
MPI_DOUBLE_COMPLEX, comm=0x84000007) failed
PMPI_Allgatherv(1183): Buffers must not be aliased. Consider using MPI_IN_PLACE or setting MPICH_NO_BUFFER_ALIAS_CHECK

6个月前编译的可执行文件不存在。有什么想法吗?

我将 GCC 4.9.2 与 Cray MPICH2 7.1.1、Cray LibSci 13.0.1 和 FFTW 3.3.4.1 一起使用。

4

1 回答 1

3

这是由于 MPICH2 库中的更改现在严格强制 MPI 集合中的非重叠缓冲区。

理想情况下,应通过修改调用以使缓冲区不重叠或在 MPI 调用中指定 MPI_IN_PLACE 来修改代码以使其符合 MPI 标准。

但是,您可以通过设置恢复到与以前版本的 Cray MPICH2 相同的行为:

export MPICH_NO_BUFFER_ALIAS_CHECK=1

在运行代码之前(在 bash 中,您通常会在 aprun 调用 VASP 之前在作业提交脚本中执行此操作)。

请注意,VASP 4 和 VASP 5 也会出现此问题。

于 2015-06-01T14:15:36.507 回答