I liked your text, which does not use an platform-oriented terms e.g.
virtual memory language.
Jeff
On Tue, Jan 2, 2018 at 1:59 PM, William Gropp <wgropp(a)illinois.edu> wrote:
> I see no harm in adding a clarification - not an errata, and not a change.
> Is my text sufficiently precise, or is there better text that we could use?
>
> Bill
>
> William Gropp
> Director and Chief Scientist, NCSA
> Thomas M. Siebel Chair in Computer Science
> University of Illinois Urbana-Champaign
>
>
>
>
>
>
> On Jan 2, 2018, at 3:54 PM, Jeff Hammond <jeff.science(a)gmail.com> wrote:
>
> I agree with all of these comments, but a user is arguing that these
> requirements are not clear from the text, e.g. because the meaning of
> existence in "existing memory" is not defined. It seems that what is
> obvious to us is not obvious to users.
>
> Jeff
>
>
> On Tue, Jan 2, 2018 at 12:54 PM, William Gropp <wgropp(a)illinois.edu>
> wrote:
>
>> Yes. The r and l values must remain valid until the free.
>>
>> Bill
>>
>> William Gropp
>> Director and Chief Scientist, NCSA
>> Thomas M. Siebel Chair in Computer Science
>> University of Illinois Urbana-Champaign
>>
>>
>>
>>
>>
>>
>> On Jan 2, 2018, at 2:52 PM, Nathan Hjelm <hjelmn(a)mac.com> wrote:
>>
>> I would expect that the intent is also that the memory should not be
>> freed/unmapped before the matching call to MPI_Win_free() correct?
>>
>> -Nathan
>>
>> On Jan 02, 2018, at 01:19 PM, William Gropp <wgropp(a)illinois.edu> wrote:
>>
>> It was certainly the intent that the memory be allocated. Specifically,
>> if a is the pointer and the region is of length L, then (assuming char *a
>> and ) a[0] … a[L-1] must be valid r and l values at the point of the call.
>>
>> Bill
>>
>> William Gropp
>> Director and Chief Scientist, NCSA
>> Thomas M. Siebel Chair in Computer Science
>> University of Illinois Urbana-Champaign
>>
>> On Jan 2, 2018, at 1:52 PM, Jeff Hammond <jeff.science(a)gmail.com> wrote:
>> If a user passes a (base,size) pair that corresponds to a range of
>> addresses that are not allocated and/or mapped, is that a correct MPI
>> program?
>>
>> The only text I can find that implies that buffers passed to
>> MPI_Win_create have to be allocated is the following, assuming that one
>> interprets "existing memory" this way.
>>
>> "Each process specifies a window of existing memory that it exposes to
>> RMA accesses by the processes in the group of comm." (MPI 3.1 11.2.1)
>>
>> The Fortran-specific text is similarly suggestive, but it only says that
>> a user can pass a simply contiguous array, not that such a thing is
>> required.
>>
>> "In Fortran, one can pass the first element of a memory region or a whole
>> array, which must be ‘simply contiguous’"
>>
>> Thanks,
>>
>> Jeff
>>
>> --
>> Jeff Hammond
>> jeff.science(a)gmail.com
>> http://jeffhammond.github.io/
>> _______________________________________________
>> mpiwg-rma mailing list
>> mpiwg-rma(a)lists.mpi-forum.org
>> https://lists.mpi-forum.org/mailman/listinfo/mpiwg-rma
>>
>>
>> _______________________________________________
>> mpiwg-rma mailing list
>> mpiwg-rma(a)lists.mpi-forum.org
>> https://lists.mpi-forum.org/mailman/listinfo/mpiwg-rma
>>
>> _______________________________________________
>> mpiwg-rma mailing list
>> mpiwg-rma(a)lists.mpi-forum.org
>> https://lists.mpi-forum.org/mailman/listinfo/mpiwg-rma
>>
>>
>>
>> _______________________________________________
>> mpiwg-rma mailing list
>> mpiwg-rma(a)lists.mpi-forum.org
>> https://lists.mpi-forum.org/mailman/listinfo/mpiwg-rma
>>
>
>
>
> --
> Jeff Hammond
> jeff.science(a)gmail.com
> http://jeffhammond.github.io/
> _______________________________________________
> mpiwg-rma mailing list
> mpiwg-rma(a)lists.mpi-forum.org
> https://lists.mpi-forum.org/mailman/listinfo/mpiwg-rma
>
>
>
> _______________________________________________
> mpiwg-rma mailing list
> mpiwg-rma(a)lists.mpi-forum.org
> https://lists.mpi-forum.org/mailman/listinfo/mpiwg-rma
>
--
Jeff Hammond
jeff.science(a)gmail.com
http://jeffhammond.github.io/
I see no harm in adding a clarification - not an errata, and not a change. Is my text sufficiently precise, or is there better text that we could use?
Bill
William Gropp
Director and Chief Scientist, NCSA
Thomas M. Siebel Chair in Computer Science
University of Illinois Urbana-Champaign
> On Jan 2, 2018, at 3:54 PM, Jeff Hammond <jeff.science(a)gmail.com> wrote:
>
> I agree with all of these comments, but a user is arguing that these requirements are not clear from the text, e.g. because the meaning of existence in "existing memory" is not defined. It seems that what is obvious to us is not obvious to users.
>
> Jeff
>
>
> On Tue, Jan 2, 2018 at 12:54 PM, William Gropp <wgropp(a)illinois.edu <mailto:[email protected]>> wrote:
> Yes. The r and l values must remain valid until the free.
>
> Bill
>
> William Gropp
> Director and Chief Scientist, NCSA
> Thomas M. Siebel Chair in Computer Science
> University of Illinois Urbana-Champaign
>
>
>
>
>
>
>> On Jan 2, 2018, at 2:52 PM, Nathan Hjelm <hjelmn(a)mac.com <mailto:[email protected]>> wrote:
>>
>> I would expect that the intent is also that the memory should not be freed/unmapped before the matching call to MPI_Win_free() correct?
>>
>> -Nathan
>>
>> On Jan 02, 2018, at 01:19 PM, William Gropp <wgropp(a)illinois.edu <mailto:[email protected]>> wrote:
>>
>>> It was certainly the intent that the memory be allocated. Specifically, if a is the pointer and the region is of length L, then (assuming char *a and ) a[0] … a[L-1] must be valid r and l values at the point of the call.
>>>
>>> Bill
>>>
>>> William Gropp
>>> Director and Chief Scientist, NCSA
>>> Thomas M. Siebel Chair in Computer Science
>>> University of Illinois Urbana-Champaign
>>>
>>>> On Jan 2, 2018, at 1:52 PM, Jeff Hammond <jeff.science(a)gmail.com <mailto:[email protected]>> wrote:
>>>> If a user passes a (base,size) pair that corresponds to a range of addresses that are not allocated and/or mapped, is that a correct MPI program?
>>>>
>>>> The only text I can find that implies that buffers passed to MPI_Win_create have to be allocated is the following, assuming that one interprets "existing memory" this way.
>>>>
>>>> "Each process specifies a window of existing memory that it exposes to RMA accesses by the processes in the group of comm." (MPI 3.1 11.2.1)
>>>>
>>>> The Fortran-specific text is similarly suggestive, but it only says that a user can pass a simply contiguous array, not that such a thing is required.
>>>>
>>>> "In Fortran, one can pass the first element of a memory region or a whole array, which must be ‘simply contiguous’"
>>>>
>>>> Thanks,
>>>>
>>>> Jeff
>>>>
>>>> --
>>>> Jeff Hammond
>>>> jeff.science(a)gmail.com <mailto:[email protected]>
>>>> http://jeffhammond.github.io/ <http://jeffhammond.github.io/>_______________________________________________
>>>> mpiwg-rma mailing list
>>>> mpiwg-rma(a)lists.mpi-forum.org <mailto:[email protected]>
>>>> https://lists.mpi-forum.org/mailman/listinfo/mpiwg-rma <https://lists.mpi-forum.org/mailman/listinfo/mpiwg-rma>
>>> _______________________________________________
>>> mpiwg-rma mailing list
>>> mpiwg-rma(a)lists.mpi-forum.org <mailto:[email protected]>
>>> https://lists.mpi-forum.org/mailman/listinfo/mpiwg-rma <https://lists.mpi-forum.org/mailman/listinfo/mpiwg-rma>_______________________________________________
>> mpiwg-rma mailing list
>> mpiwg-rma(a)lists.mpi-forum.org <mailto:[email protected]>
>> https://lists.mpi-forum.org/mailman/listinfo/mpiwg-rma <https://lists.mpi-forum.org/mailman/listinfo/mpiwg-rma>
>
> _______________________________________________
> mpiwg-rma mailing list
> mpiwg-rma(a)lists.mpi-forum.org <mailto:[email protected]>
> https://lists.mpi-forum.org/mailman/listinfo/mpiwg-rma <https://lists.mpi-forum.org/mailman/listinfo/mpiwg-rma>
>
>
>
> --
> Jeff Hammond
> jeff.science(a)gmail.com <mailto:[email protected]>
> http://jeffhammond.github.io/ <http://jeffhammond.github.io/>_______________________________________________
> mpiwg-rma mailing list
> mpiwg-rma(a)lists.mpi-forum.org
> https://lists.mpi-forum.org/mailman/listinfo/mpiwg-rma
I agree with all of these comments, but a user is arguing that these
requirements are not clear from the text, e.g. because the meaning of
existence in "existing memory" is not defined. It seems that what is
obvious to us is not obvious to users.
Jeff
On Tue, Jan 2, 2018 at 12:54 PM, William Gropp <wgropp(a)illinois.edu> wrote:
> Yes. The r and l values must remain valid until the free.
>
> Bill
>
> William Gropp
> Director and Chief Scientist, NCSA
> Thomas M. Siebel Chair in Computer Science
> University of Illinois Urbana-Champaign
>
>
>
>
>
>
> On Jan 2, 2018, at 2:52 PM, Nathan Hjelm <hjelmn(a)mac.com> wrote:
>
> I would expect that the intent is also that the memory should not be
> freed/unmapped before the matching call to MPI_Win_free() correct?
>
> -Nathan
>
> On Jan 02, 2018, at 01:19 PM, William Gropp <wgropp(a)illinois.edu> wrote:
>
> It was certainly the intent that the memory be allocated. Specifically,
> if a is the pointer and the region is of length L, then (assuming char *a
> and ) a[0] … a[L-1] must be valid r and l values at the point of the call.
>
> Bill
>
> William Gropp
> Director and Chief Scientist, NCSA
> Thomas M. Siebel Chair in Computer Science
> University of Illinois Urbana-Champaign
>
> On Jan 2, 2018, at 1:52 PM, Jeff Hammond <jeff.science(a)gmail.com> wrote:
> If a user passes a (base,size) pair that corresponds to a range of
> addresses that are not allocated and/or mapped, is that a correct MPI
> program?
>
> The only text I can find that implies that buffers passed to
> MPI_Win_create have to be allocated is the following, assuming that one
> interprets "existing memory" this way.
>
> "Each process specifies a window of existing memory that it exposes to RMA
> accesses by the processes in the group of comm." (MPI 3.1 11.2.1)
>
> The Fortran-specific text is similarly suggestive, but it only says that a
> user can pass a simply contiguous array, not that such a thing is required.
>
> "In Fortran, one can pass the first element of a memory region or a whole
> array, which must be ‘simply contiguous’"
>
> Thanks,
>
> Jeff
>
> --
> Jeff Hammond
> jeff.science(a)gmail.com
> http://jeffhammond.github.io/
> _______________________________________________
> mpiwg-rma mailing list
> mpiwg-rma(a)lists.mpi-forum.org
> https://lists.mpi-forum.org/mailman/listinfo/mpiwg-rma
>
>
> _______________________________________________
> mpiwg-rma mailing list
> mpiwg-rma(a)lists.mpi-forum.org
> https://lists.mpi-forum.org/mailman/listinfo/mpiwg-rma
>
> _______________________________________________
> mpiwg-rma mailing list
> mpiwg-rma(a)lists.mpi-forum.org
> https://lists.mpi-forum.org/mailman/listinfo/mpiwg-rma
>
>
>
> _______________________________________________
> mpiwg-rma mailing list
> mpiwg-rma(a)lists.mpi-forum.org
> https://lists.mpi-forum.org/mailman/listinfo/mpiwg-rma
>
--
Jeff Hammond
jeff.science(a)gmail.com
http://jeffhammond.github.io/
Yes. The r and l values must remain valid until the free.
Bill
William Gropp
Director and Chief Scientist, NCSA
Thomas M. Siebel Chair in Computer Science
University of Illinois Urbana-Champaign
> On Jan 2, 2018, at 2:52 PM, Nathan Hjelm <hjelmn(a)mac.com> wrote:
>
> I would expect that the intent is also that the memory should not be freed/unmapped before the matching call to MPI_Win_free() correct?
>
> -Nathan
>
> On Jan 02, 2018, at 01:19 PM, William Gropp <wgropp(a)illinois.edu> wrote:
>
>> It was certainly the intent that the memory be allocated. Specifically, if a is the pointer and the region is of length L, then (assuming char *a and ) a[0] … a[L-1] must be valid r and l values at the point of the call.
>>
>> Bill
>>
>> William Gropp
>> Director and Chief Scientist, NCSA
>> Thomas M. Siebel Chair in Computer Science
>> University of Illinois Urbana-Champaign
>>
>>> On Jan 2, 2018, at 1:52 PM, Jeff Hammond <jeff.science(a)gmail.com <mailto:[email protected]>> wrote:
>>> If a user passes a (base,size) pair that corresponds to a range of addresses that are not allocated and/or mapped, is that a correct MPI program?
>>>
>>> The only text I can find that implies that buffers passed to MPI_Win_create have to be allocated is the following, assuming that one interprets "existing memory" this way.
>>>
>>> "Each process specifies a window of existing memory that it exposes to RMA accesses by the processes in the group of comm." (MPI 3.1 11.2.1)
>>>
>>> The Fortran-specific text is similarly suggestive, but it only says that a user can pass a simply contiguous array, not that such a thing is required.
>>>
>>> "In Fortran, one can pass the first element of a memory region or a whole array, which must be ‘simply contiguous’"
>>>
>>> Thanks,
>>>
>>> Jeff
>>>
>>> --
>>> Jeff Hammond
>>> jeff.science(a)gmail.com <mailto:[email protected]>
>>> http://jeffhammond.github.io/ <http://jeffhammond.github.io/>_______________________________________________
>>> mpiwg-rma mailing list
>>> mpiwg-rma(a)lists.mpi-forum.org <mailto:[email protected]>
>>> https://lists.mpi-forum.org/mailman/listinfo/mpiwg-rma <https://lists.mpi-forum.org/mailman/listinfo/mpiwg-rma>
>> _______________________________________________
>> mpiwg-rma mailing list
>> mpiwg-rma(a)lists.mpi-forum.org <mailto:[email protected]>
>> https://lists.mpi-forum.org/mailman/listinfo/mpiwg-rma <https://lists.mpi-forum.org/mailman/listinfo/mpiwg-rma>_______________________________________________
> mpiwg-rma mailing list
> mpiwg-rma(a)lists.mpi-forum.org
> https://lists.mpi-forum.org/mailman/listinfo/mpiwg-rma
I would expect that the intent is also that the memory should not be freed/unmapped before the matching call to MPI_Win_free() correct?
-Nathan
On Jan 02, 2018, at 01:19 PM, William Gropp <wgropp(a)illinois.edu> wrote:
It was certainly the intent that the memory be allocated. Specifically, if a is the pointer and the region is of length L, then (assuming char *a and ) a[0] … a[L-1] must be valid r and l values at the point of the call.
Bill
William Gropp
Director and Chief Scientist, NCSA
Thomas M. Siebel Chair in Computer Science
University of Illinois Urbana-Champaign
On Jan 2, 2018, at 1:52 PM, Jeff Hammond <jeff.science(a)gmail.com> wrote:
If a user passes a (base,size) pair that corresponds to a range of addresses that are not allocated and/or mapped, is that a correct MPI program?
The only text I can find that implies that buffers passed to MPI_Win_create have to be allocated is the following, assuming that one interprets "existing memory" this way.
"Each process specifies a window of existing memory that it exposes to RMA accesses by the processes in the group of comm." (MPI 3.1 11.2.1)
The Fortran-specific text is similarly suggestive, but it only says that a user can pass a simply contiguous array, not that such a thing is required.
"In Fortran, one can pass the first element of a memory region or a whole array, which must be ‘simply contiguous’"
Thanks,
Jeff
--
Jeff Hammond
jeff.science(a)gmail.com
http://jeffhammond.github.io/
_______________________________________________
mpiwg-rma mailing list
mpiwg-rma(a)lists.mpi-forum.org
https://lists.mpi-forum.org/mailman/listinfo/mpiwg-rma
_______________________________________________
mpiwg-rma mailing list
mpiwg-rma(a)lists.mpi-forum.org
https://lists.mpi-forum.org/mailman/listinfo/mpiwg-rma
That limitation is why MPI_WIN_CREATE_DYNAMIC was created…
From: mpiwg-rma [mailto:[email protected]] On Behalf Of William Gropp
Sent: Tuesday, January 02, 2018 3:19 PM
To: MPI WG Remote Memory Access working group <mpiwg-rma(a)lists.mpi-forum.org>
Cc: MPI WG Remote Memory Access working group <mpiwg-rma(a)mpi-forum.org>
Subject: Re: [mpiwg-rma] MPI_Win_create on unmapped memory?
It was certainly the intent that the memory be allocated. Specifically, if a is the pointer and the region is of length L, then (assuming char *a and ) a[0] … a[L-1] must be valid r and l values at the point of the call.
Bill
William Gropp
Director and Chief Scientist, NCSA
Thomas M. Siebel Chair in Computer Science
University of Illinois Urbana-Champaign
On Jan 2, 2018, at 1:52 PM, Jeff Hammond <jeff.science(a)gmail.com<mailto:[email protected]>> wrote:
If a user passes a (base,size) pair that corresponds to a range of addresses that are not allocated and/or mapped, is that a correct MPI program?
The only text I can find that implies that buffers passed to MPI_Win_create have to be allocated is the following, assuming that one interprets "existing memory" this way.
"Each process specifies a window of existing memory that it exposes to RMA accesses by the processes in the group of comm." (MPI 3.1 11.2.1)
The Fortran-specific text is similarly suggestive, but it only says that a user can pass a simply contiguous array, not that such a thing is required.
"In Fortran, one can pass the first element of a memory region or a whole array, which must be ‘simply contiguous’"
Thanks,
Jeff
--
Jeff Hammond
jeff.science(a)gmail.com<mailto:[email protected]>
http://jeffhammond.github.io/
_______________________________________________
mpiwg-rma mailing list
mpiwg-rma(a)lists.mpi-forum.org<mailto:[email protected]>
https://lists.mpi-forum.org/mailman/listinfo/mpiwg-rma
It was certainly the intent that the memory be allocated. Specifically, if a is the pointer and the region is of length L, then (assuming char *a and ) a[0] … a[L-1] must be valid r and l values at the point of the call.
Bill
William Gropp
Director and Chief Scientist, NCSA
Thomas M. Siebel Chair in Computer Science
University of Illinois Urbana-Champaign
> On Jan 2, 2018, at 1:52 PM, Jeff Hammond <jeff.science(a)gmail.com> wrote:
>
> If a user passes a (base,size) pair that corresponds to a range of addresses that are not allocated and/or mapped, is that a correct MPI program?
>
> The only text I can find that implies that buffers passed to MPI_Win_create have to be allocated is the following, assuming that one interprets "existing memory" this way.
>
> "Each process specifies a window of existing memory that it exposes to RMA accesses by the processes in the group of comm." (MPI 3.1 11.2.1)
>
> The Fortran-specific text is similarly suggestive, but it only says that a user can pass a simply contiguous array, not that such a thing is required.
>
> "In Fortran, one can pass the first element of a memory region or a whole array, which must be ‘simply contiguous’"
>
> Thanks,
>
> Jeff
>
> --
> Jeff Hammond
> jeff.science(a)gmail.com <mailto:[email protected]>
> http://jeffhammond.github.io/ <http://jeffhammond.github.io/>_______________________________________________
> mpiwg-rma mailing list
> mpiwg-rma(a)lists.mpi-forum.org
> https://lists.mpi-forum.org/mailman/listinfo/mpiwg-rma
If a user passes a (base,size) pair that corresponds to a range of
addresses that are not allocated and/or mapped, is that a correct MPI
program?
The only text I can find that implies that buffers passed to MPI_Win_create
have to be allocated is the following, assuming that one interprets
"existing memory" this way.
"Each process specifies a window of existing memory that it exposes to RMA
accesses by the processes in the group of comm." (MPI 3.1 11.2.1)
The Fortran-specific text is similarly suggestive, but it only says that a
user can pass a simply contiguous array, not that such a thing is required.
"In Fortran, one can pass the first element of a memory region or a whole
array, which must be ‘simply contiguous’"
Thanks,
Jeff
--
Jeff Hammond
jeff.science(a)gmail.com
http://jeffhammond.github.io/
simon, on most systems today there is no way to sync userlevel libs like mpi
with isa instructions in terms of atomicity. if you want perf. do it by
hand:
i) separate them
ii) merge them with hand-crafted methods within threads
several order faster than mpi sequentializing...
mp
2017-08-16 11:24 GMT+02:00 Simon Schwitanski <
simon.schwitanski(a)rwth-aachen.de>:
> Hello,
>
> I have got a question about the atomicity of accumulate operations as
> described in 11.7.1. It says (page 461, lines 8 - 11):
>
> > The previous correctness conditions imply that a location updated by a
> > call to an accumulate operation cannot be accessed by a load or an RMA
> > call other than accumulate until the accumulate operation has completed
> > (at the target).
>
> I am a little bit confused about what this actually means: Does it mean
> that local load accesses on the target are (somehow) delayed if there is
> an ongoing accumulate operation to the same location? Or does it just
> mean that concurrent load accesses are forbidden and lead to undefined
> behavior? And why does this not hold for store accesses?
>
> Thanks!
>
>
> Simon
> _______________________________________________
> mpiwg-rma mailing list
> mpiwg-rma(a)lists.mpi-forum.org
> https://lists.mpi-forum.org/mailman/listinfo/mpiwg-rma
>
On Wed, Aug 16, 2017 at 2:24 AM, Simon Schwitanski <
simon.schwitanski(a)rwth-aachen.de> wrote:
> Hello,
>
> I have got a question about the atomicity of accumulate operations as
> described in 11.7.1. It says (page 461, lines 8 - 11):
>
> > The previous correctness conditions imply that a location updated by a
> > call to an accumulate operation cannot be accessed by a load or an RMA
> > call other than accumulate until the accumulate operation has completed
> > (at the target).
>
> I am a little bit confused about what this actually means: Does it mean
> that local load accesses on the target are (somehow) delayed if there is
> an ongoing accumulate operation to the same location? Or does it just
> mean that concurrent load accesses are forbidden and lead to undefined
> behavior? And why does this not hold for store accesses?
>
>
The MPI standard does not specify how atomicity is implemented. It can use
hardware atomics or regular instructions with mutual exclusion. Both of
these serialize, but at different granularity.
The behavior of concurrency MPI_Accumulate and direct local access is not
defined, although it is allowed. If you want to read memory concurrently
with an MPI_Accumulate, use MPI_Get_accumulate(MPI_NO_OP) or
MPI_Fetch_op(MPI_NO_OP).
Jeff
> Thanks!
>
>
> Simon
> _______________________________________________
> mpiwg-rma mailing list
> mpiwg-rma(a)lists.mpi-forum.org
> https://lists.mpi-forum.org/mailman/listinfo/mpiwg-rma
>
--
Jeff Hammond
jeff.science(a)gmail.com
http://jeffhammond.github.io/