Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Open MPI User's mailing list

Subject: [OMPI users] MPI_IN_PLACE with GATHERV, AGATHERV, and SCATERV
From: Gerlach, Charles A. (charles.gerlach_at_[hidden])
Date: 2013-10-08 15:40:50


I have an MPI code that was developed using MPICH1 and OpenMPI before the MPI2 standards became commonplace (before MPI_IN_PLACE was an option).

So, my code has many examples of GATHERV, AGATHERV and SCATTERV, where I pass the same array in as the SEND_BUF and the RECV_BUF, and this has worked fine for many years.

Intel MPI and MPICH2 explicitly disallow this behavior according to the MPI2 standard. So, I have gone through and used MPI_IN_PLACE for all the GATHERV/SCATTERVs that used to pass the same array twice. This code now works with MPICH2 and Intel_MPI, but fails with OpenMPI-1.6.5 on multiple platforms and compilers.

PLATFORM COMPILER SUCCESS? (For at least one simple example)
------------------------------------------------------------
SLED 12.3 (x86-64) - Portland group - fails
SLED 12.3 (x86-64) - g95 - fails
SLED 12.3 (x86-64) - gfortran - works

OS X 10.8 -- intel -fails

In every case where OpenMPI fails with the MPI_IN_PLACE code, I can go back to the original code that passes the same array twice instead of using MPI_IN_PLACE, and it is fine.

I have made a test case doing an individual GATHERV with MPI_IN_PLACE, and it works with OpenMPI. So it looks like there is some interaction with my code that is causing the problem. I have no idea how to go about trying to debug it.

In summary:

OpenMPI-1.6.5 crashes my code when I use GATHERV, AGATHERV, and SCATTERV with MPI_IN_PLACE.
Intel MPI and MPICH2 work with my code when I use GATHERV, AGATHERV, and SCATTERV with MPI_IN_PLACE.

OpenMPI-1.6.5 works with my code when I pass the same array to SEND_BUF and RECV_BUF instead of using MPI_IN_PLACE for those same GATHERV, AGATHERV, and SCATTERVs.

-Charles