Mvapich2缓冲区别名

时间:2014-07-23 14:52:43

标签: mpi hpc

我使用MVAPICH2启动了一个MPI程序并收到此错误:

Fatal error in PMPI_Gather:
Invalid buffer pointer, error stack:
PMPI_Gather(923): MPI_Gather() failed
PMPI_Gather(857): Buffers must not be aliased

我认为有两种方法可以解决这个问题:

  1. 重写我的MPI程序(使用不同的缓冲区)
  2. 禁用检查缓冲区别名
  3. 有人知道如何使用MVAPICH2做到这一点吗?一些编译器选项,参数,环境变量等?

    像MV2_NO_BUFFER_ALIAS_CHECK之类的东西,但不起作用。

1 个答案:

答案 0 :(得分:6)

您正在做的是一个不正确的程序,您应该重写代码以使用单独的缓冲区

或者,如果要将同一缓冲区用作MPI_IN_PLACE的输入和输出值,则可以使用MPI_GATHER。没有看到你的代码,我无法告诉你如何做到这一点。您可以查看一些关于MPI_GATHER的{​​{3}},并详细了解MPI_IN_PLACE如何运作,看看是否能解决您的问题。