[Mpi3-rma] GetAccumulate restriction needed?

Pavan Balaji balaji at mcs.anl.gov
Sun Apr 3 21:42:31 CDT 2011


On 04/03/2011 09:32 PM, Underwood, Keith D wrote:
>> This would be required if the application does not want to create two
>> buffers, one for the input and one for the output. The implementation
>> can internally use pipelining to use a smaller buffer space.
>
> That is not a use case :-)  My understanding of fetch-and-add style
> operations is that you want both your increment and the old value at
> the target.  So, I am back to:  what is the use case?

I don't have a use case as in an application that uses it currently, as 
I don't know of any applications that do large-message fetch-and-op today.

>> Also, we need this for symmetry. Two-sided calls support it.
>
> MPI_Sendrecv requires disjoint buffers, and that is the closest thing in two-sided.

Ah, yes. This is only for collectives. I misspoke.

>> I don't follow the implementation nightmare with this? Why is this a
>> problem?
>
> Would you think the user would expect that having the same source and
> target buffer would cause the implementation to:
>
> -allocate a buffer
> -perform a get into that buffer
> -wait for get completion
> -perform an atomic
> -wait for atomic completion
> -copy the data from the internal buffer to the user buffer

Why are you trying to it atomically? Get_accumulate is only element-wise 
atomic.

  -- Pavan

-- 
Pavan Balaji
http://www.mcs.anl.gov/~balaji



More information about the mpiwg-rma mailing list