[mvapich-discuss] Question about collective communication operations in OpenMPI vs. MVAPICH2

Ivan Raikov ivan.g.raikov at gmail.com
Thu Jan 28 18:03:17 EST 2016


Hi all,

    I recently tried to use some of my OpenMPI code in an MVAPICH2
environment, and I noticed a discrepancy in the semantics of
MPI_Scatter and other collective operations, so I thought I would ask
about this here.

I have been following the pattern below when calling collective
operations in OpenMPI:

if (myrank == root) {
    MPI_Scatter(vector, N, MPI_INTEGER, recvbuf, N, MPI_INTEGER, root,
MPI_COMM_WORLD);
  }
  else {
    MPI_Scatter(NULL, 0, MPI_DATATYPE_NULL, recvbuf, N, MPI_INTEGER,
root, MPI_COMM_WORLD);
  }

My understanding of the MPI_Scatter documentation was that the
sendbuf, sendcount, and sendtype arguments are "significant only at
root" meaning that their values should be ignored by all non-root
processes. This certainly works in OpenMPI. However, the same code
results in no data being sent to the non-root processes with MVAPICH2
2.1. Have I completely misunderstood the specification, or does
MVAPICH2 have different collective operation semantics for a reason?
Thanks in advance for any clarification and best regards,


  -Ivan Raikov


More information about the mvapich-discuss mailing list