[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