在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。
发布于 2015-06-01 14:15:36
这是由于MPICH2库中的一个变化,它现在严格地强制MPI集合中不重叠的缓冲区。
理想情况下,应该修改代码,使其符合MPI标准,方法是要么修改调用,使缓冲区不重叠,要么在MPI调用中指定MPI_IN_PLACE。
但是,您可以通过设置以下方法恢复到与早期版本的Cray MPICH2相同的行为:
export MPICH_NO_BUFFER_ALIAS_CHECK=1在运行代码之前(在bash中,通常会在对VASP的aprun调用之前在作业提交脚本中这样做)。
备注这个问题在VASP 4和VASP 5中也可以看到。
https://stackoverflow.com/questions/30575776
复制相似问题