-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Clarify semantics of one-sided semantics when changing synchronization mode #37
Comments
Originally by rsthakur on 2008-12-08 13:41:17 -0600 It would be good to have these examples in the text. These things are not obvious from simply reading the rules. |
Originally by rsthakur on 2009-02-03 16:44:34 -0600 Looks good to me. |
Originally by traff on 2009-02-10 08:19:49 -0600 Reviewers - reviews are needed!! I imagine some discussion may still be needed on this Jesper |
Originally by tipparajuv on 2009-02-10 11:41:43 -0600 would it make sense to merge this with advise to users on p.351 |
Originally by brbarret on 2009-02-10 16:43:02 -0600 looks good to me. |
Originally by traff on 2009-03-04 03:15:50 -0600 Reviewer's (Rolf, Bill): please think about this, and add a review statement. To Vinod: the examples come right after the advice to user's, so I see no need to merge, I Jesper |
Originally by RolfRabenseifner on 2009-04-04 06:08:44 -0500
I propose that you substitute
by
Reasons:
|
Originally by gropp on 2009-04-05 16:57:40 -0500 The key point here is that the updates happen at unlock/fence for those two modes but the "scalable sync" splits the update to post and wait. This should be described first, then (fixed) examples can illustrate the point (these are rules 5 and 6 on page 350). |
Originally by traff on 2009-04-06 03:51:04 -0500 Rolf, thanks for the comments. I've tried to take them into account. I hope the ticket can be rereviewed, and still be in the MPI 2.2 process |
Originally by traff on 2009-04-07 02:43:09 -0500 Reviewers - please have a look at this, last chance (if not already passed) for MPI 2.2 Jesper |
Originally by rsthakur on 2009-04-07 16:51:37 -0500 In this proposed text: "The RMA synchronization operations define when updates must have become visible in public and private windows. Updates may become visible earlier, but such behavior is implementation dependent." I would suggest a slight rephrase of the first sentence to In Example 4, in the sentence "To allow B to read the value of X stored by A the local store must be replaced by an MPI_Put that updates the public window copy." I would replace "an MPI_Put" by "a local MPI_Put" just to avoid any confusion. Similarly, in Example 5, in the sentence "To ensure that the value put by process A is read, the local load must be replaced with an MPI_Get operation." I would replace "an MPI_Get" with "a local MPI_Get" just to avoid any confusion that you get it remotely. |
Originally by RolfRabenseifner on 2009-04-08 09:26:51 -0500 First about Rajeevs review: I'm in favor for these changes. My review:
Sentences about fence instead of barrier:
REVIEW on EXAMPLE 5: I try to do it later. |
Originally by RolfRabenseifner on 2009-04-08 11:00:41 -0500 Decision at the meeting: I should add the review comments now, to get it to the first Reading before end of the meeting. --> Write-toke at me. |
Originally by RolfRabenseifner on 2009-04-08 11:10:15 -0500 I included last two reviews. |
Originally by RolfRabenseifner on 2009-04-24 15:38:41 -0500 Late review for example 5:
Because the example is still correct (and only a little bit misleading), I would treat this modification as a minor change, provided ticket author and
This is again a minor modification provided ticket author and The modified example would be:Example 5.
rules (5,6) do not guarantee that the private copy of X at B has been |
Originally by gropp on 2009-04-26 21:21:09 -0500 I agree with Rolf's minor change to example 5. (I note that the start/complete are still present in the example - is that what you intended?) |
Originally by traff on 2009-05-07 13:52:56 -0500 I have done the changes to example 5 suggested by Rolf, and also reviewed the changes introduced during the last forum meeting.
The spirit of the ticket has not been changed, therefore I think the status of the ticket can still count as "has 1st reading" Reviewers, please have a look; I hope you agree - such that this can progress for 2.2 Best, Jesper |
Originally by rsthakur on 2009-05-07 14:18:17 -0500 I don't think this sentence is right because fence is not synchronizing
In example 4, the fence on process B (in place of barrier) could return even before store X was called on Process A. Similar situation in Example 5. |
Originally by traff on 2009-05-07 14:33:52 -0500 Actually, I'd be most happy with removing the whole last paragraph, which I think might create more confusion than clarity. And, yes, you're right (unless there have been some previous fence calls, etc.) So - shall I drop this whole discussion? Jesper |
Originally by rsthakur on 2009-05-07 14:36:27 -0500 Yes, I have been uneasy about that paragraph for a while. I wouldn't mind if it is not there. |
Originally by traff on 2009-05-07 14:46:56 -0500 Let's wait a few days and see what the others say. But I'd also be for dropping this paragraph. |
Originally by traff on 2009-06-01 17:18:14 -0500 Following Rajeevs comment and suggestion, I have removed the following, last paragraph from the proposal. It is partly wrong, and potentially confuses more than it clarifies. Since this change does not add anything new to the ticket, I think/hope it can still count as having been read. Jesper Removed: In examples 4 and 5, replacing the barrier with a fence operation would lead to the desired behavior. |
Originally by RolfRabenseifner on 2009-06-08 09:19:10 -0500 I checked the discussion and all modifications since my last review:
|
Originally by traff on 2009-08-11 02:56:41 -0500 Attachment added: |
Originally by traff on 2009-08-11 03:01:09 -0500 PDF ready, please review Editorial change: "neither the MPI_Win_wait nor MPI_Win_complete calls" to I'm not entirely happy with the typography (verbatim environment); this could be improved |
Originally by RolfRabenseifner on 2009-08-29 17:42:36 -0500 PDF review: okay. |
Originally by traff on 2009-08-30 05:46:00 -0500 Dear reviewers - please do check this (complex) ticket! So far it Jesper |
Originally by htor on 2009-08-30 08:57:53 -0500 Review ok, some minor comments though (NO show-stoppers!):
|
Originally by rsthakur on 2009-08-30 17:25:49 -0500 pdf review ok. |
Originally by traff on 2009-08-31 03:06:05 -0500 I implemented Torsten's suggestion, and asked explicitly for more reviews - one or two are still needed |
Originally by tipparajuv on 2009-08-31 23:37:03 -0500 review ok. |
Originally by traff on 2009-09-01 02:27:48 -0500 Reluctantly setting status to "complete" (Brian, review?) |
Originally by jsquyres on 2010-09-18 05:00:29 -0500 This ticket is (long-since) complete; marking it resolved/text committed. |
Originally by traff on 2008-10-14 06:54:19 -0500
Description
The specification in the one-sided semantics of when updates become visible in private and public copies of a window is complicated, and it is not entirely clear how they allow to switch between the various active and passive synchronization modes.
History
Goes back to 2003, see
http://www.cs.uiuc.edu/homes/wgropp/projects/parallel/MPI/mpi-errata/discuss/waitpost/
Proposed Solution
Add to the standard the following statement.
p. 352, line 22 (before (End of advice to users.):
"The RMA synchronization operations define when updates are guaranteed to become visible in public and private windows.
Updates may become visible earlier, but such behavior is implementation dependent."
p.352, after line 23, add:
"The semantics are illustrated by the following examples:
Example 1 (rule 5).
Example 2 (rule 6).
Note that the private copy of X has not necessarily been updated
after the barrier, so omitting the lock-unlock at process B may lead to
the load returning an obsolete value.
Example 3.
The rules do not guarantee that process A in the following sequence will
see the value of X as updated by the local store by B before the lock.
Example 4.
In the following sequence
it is not guaranteed that process B reads the value of X as per the local
update by process A, because neither
MPI_Win_wait
norMPI_Win_complete
calls by process A ensure visibility in the public window copy. To allow B to read the value of X stored by A the local store must be replaced by a localMPI_Put
that updates the public window copy. Note that by this replacement Xmay become visible in the private copy in process memory of A
only after the
MPI_Win_wait
call in process A.The update on Y made before the
MPI_Win_post
call is visible in the public window after the
MPI_Win_post
call and therefore correctly gottenby process B. The
MPI_Get(Y)
call could be moved to the epoch started by theMPI_Win_start
operation, and process B would still get the value stored by A.Example 5.
Finally, in the following sequence
rules (5,6) do not guarantee that the private copy of X at B has been
updated before the load takes place. To ensure that the value
put by process A is read, the local load must be replaced with a local
MPI_Get
operation, or must beplaced after the call to
MPI_Win_wait
.Impact on Implementations
None. It is only a clarification
The text was updated successfully, but these errors were encountered: