Re: [mpich-discuss] MPI_Get on the same memory location
The MPI spec you reference gives an example of aliasing (bottom p.10, top p.11). Would the following also be considered aliasing? #include <stdio.h> #include <stdlib.h> void copyIntBuffer( int *pin, int *pout, int len ) { int i; for(i=0; i<len; ++i) *pout++ = *pin++; }; int main() { int array[10]={0,1,2,3,4,5,6,7,8,9}; int *a = &array[0]; int *b = &array[3]; copyIntBuffer(a,b,3); return 0; } It is my belief that a definition of a term is much better than an example, albeit more difficult. My $.05 Mike On 08/22/2014 08:25 AM, Carsten Clauss wrote:
MPI-3, Section 2.3, page 10: "Unless specified otherwise, an argument of type OUT or type INOUT cannot be aliased with any other argument passed to an MPI procedure."
Cheers, Carsten
On 08/22/2014 03:10 PM, Balaji, Pavan wrote:
On Aug 22, 2014, at 7:59 AM, Balaji, Pavan <[email protected]> wrote:
On Aug 21, 2014, at 8:42 PM, Nick Radcliffe <[email protected]> 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
_______________________________________________ discuss mailing list [email protected] To manage subscription options or unsubscribe: https://lists.mpich.org/mailman/listinfo/discuss
participants (1)
-
Michael L. Stokes