Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |  

This web mail archive is frozen.

This page is part of a frozen web archive of this mailing list.

You can still navigate around this archive, but know that no new mails have been added to it since July of 2016.

Click here to be taken to the new web archives of this list; it includes all the mails that are in this frozen archive plus all new mails that have been sent to the list since it was migrated to the new archives.

Subject: Re: [OMPI devel] MPI_Accumulate() with MPI_PROC_NULL target rank
From: Brian W. Barrett (brbarret_at_[hidden])
Date: 2009-07-15 18:08:47

On Wed, 15 Jul 2009, Lisandro Dalcin wrote:

> The MPI 2-1 standard says:
> "MPI_PROC_NULL is a valid target rank in the MPI RMA calls
> MPI_ACCUMULATE, MPI_GET, and MPI_PUT. The effect is the same as for
> MPI_PROC_NULL in MPI point-to-point communication. After any RMA
> operation with rank MPI_PROC_NULL, it is still necessary to finish the
> RMA epoch with the synchronization method that started the epoch."
> Unfortunately, MPI_Accumulate() is not quite the same as
> point-to-point, as a reduction is involved. Suppose you make this call
> (let me abuse and use keyword arguments):
> MPI_Accumulate(..., target_rank=MPI_PROC_NULL,
> target_datatype=MPI_BYTE, op=MPI_SUM, ...)
> IIUC, the call fails (with MPI_ERR_OP) in Open MPI because MPI_BYTE is
> an invalid datatype for MPI_SUM.
> But provided that the target rank is MPI_PROC_NULL, would it make
> sense for the call to success?

I believe no. We do full argument error checking (that you provided a
valid communicator and datatype) on send, receive, put, and get when the
source/dest is MPI_PROC_NULL. Therefore, I think it's logical that we
extend that to include valid operations for accumulate.