[mpich-discuss] MPI_Get on the same memory location
Balaji, Pavan
balaji at anl.gov
Fri Aug 22 08:10:34 CDT 2014
On Aug 22, 2014, at 7:59 AM, Balaji, Pavan <balaji at anl.gov> wrote:
> On Aug 21, 2014, at 8:42 PM, Nick Radcliffe <nradclif at cray.com> wrote:
>
>>> If buffers overlap, use memmov and not memcpy:
>>
>> Good point, you would have to use memmov in general for overlapping source and target buffers. I was thinking of the special case where the source and target buffers are identical.
>>
>>> I don’t think so. It’s an incorrect program to get from a buffer to itself. MPICH is being helpful is catching this user error.
>>
>> Do you know where in the standard this is specified? I'm having trouble finding it.
>
> The parameter in PUT is a “const void *”. It’s read-only for MPI.
It’s less clear for GET, but the standard says it’s equivalent to sending and receiving, which should imply overlapping buffers is invalid. Either way, I can’t imagine that not being the intention of the RMA working group (I’m a part of it).
In MPI-2, this was not a problem at all since we couldn’t send data from the local public window to a remote public window (two simultaneous locks were not allowed; FENCE didn’t allow load/store and PUT/GET in the same epoch, etc.). In MPI-3 we allowed this, but forgot to make it clear that they shouldn’t overlap.
We should try to make it clearer in the standard, though I don’t think it’s valid even in MPI-3.
— Pavan
--
Pavan Balaji ✉️
http://www.mcs.anl.gov/~balaji
More information about the discuss
mailing list