<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">In general I am opposed to decreasing the performance of applications by mandating strong synchronization semantics.<div><br></div><div>I will have to study this particular instance carefully.</div><div><br></div><div>Bill</div><div><br><div>
<span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div style="font-size: 12px; ">William Gropp</div><div style="font-size: 12px; ">Director, Parallel Computing Institute</div></div></div></span><span class="Apple-style-span" style="font-size: 12px; ">Thomas M. Siebel Chair in Computer Science</span><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div style="font-size: 12px; ">University of Illinois Urbana-Champaign</div></div><div><br></div></div></span><br class="Apple-interchange-newline"></div></span><br class="Apple-interchange-newline"></span><br class="Apple-interchange-newline">
</div>
<br><div><div>On Jul 2, 2014, at 9:38 AM, Rolf Rabenseifner wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>Bill, Rajeev, and all other RMA WG members,<br><br>Hubert and Torsten discussed already in 2012 the meaning of<br>the MPI one-sided synchronization routines for MPI-3.0 shared memory.<br><br>This question is still unresolved in the MPI-3.0 + errata.<br><br>Does the term "RMA Operation" include "a remote load/store <br>from an origin process to the window Memory on a target"?<br><br>Or not? <br><br>The ticket #435 expects "not".<br><br>In this case, MPI_Win_fence and post-start-complete-wait<br>cannot be used for synchronizing the sending process of data <br>with the receiving process of data that use only <br>local and remote load/stores on shared memory windows.<br><br>Ticket 435 extends the meaning of <br>MPI_Win_fence and post-start-complete-wait that they<br>provide sender-Receiver synchronization between processes<br>that use local and remote load/stores<br>on shared memory windows.<br><br>I hope that all RMA working group members, agree that<br> - currently the behavior of these sync-routines for<br>   shared memory remote load/stores is undefined due to<br>   the undefined definition of "RMA Operation"<br> - and that we need an errata that resolves this problem.<br><br>What is your opinion about the solution provided in <br><a href="https://svn.mpi-forum.org/trac/mpi-forum-web/ticket/435">https://svn.mpi-forum.org/trac/mpi-forum-web/ticket/435</a> ?<br><br>Best regards<br>Rolf<br><br>PS: Ticket 435 is the result of a discussion of Pavan, Hubert and I at ISC2014.<br><br>----- Original Message -----<br><blockquote type="cite">From: Hubert Ritzdorf<br></blockquote><blockquote type="cite">Sent: Tuesday, September 11, 2012 7:26 PM<br></blockquote><blockquote type="cite">To: <a href="mailto:mpi3-rma@lists.mpi-forum.org">mpi3-rma@lists.mpi-forum.org</a><br></blockquote><blockquote type="cite">Subject: MPI_Win_allocate_shared and synchronization functions<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Hi,<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">it's quite unclear what Page 410, Lines 17-19<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">A consistent view can be created in the uni?fied<br></blockquote><blockquote type="cite">memory model (see Section 11.4) by utilizing the window<br></blockquote><blockquote type="cite">synchronization functions (see<br></blockquote><blockquote type="cite">Section 11.5)<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">really means. Section 11.5 doesn't mention any (load/store) access to<br></blockquote><blockquote type="cite">shared memory.<br></blockquote><blockquote type="cite">Thus, must<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">(*) RMA communication calls and RMA operations<br></blockquote><blockquote type="cite">     be interpreted   as RMA communication calls (MPI_GET, MPI_PUT,<br></blockquote><blockquote type="cite">...) and<br></blockquote><blockquote type="cite">                                ANY load/store access to shared<br></blockquote><blockquote type="cite">window<br></blockquote><blockquote type="cite">(*) put call             as put call and any store to shared memory<br></blockquote><blockquote type="cite">(*) get call             as get call and any load from shared memory<br></blockquote><blockquote type="cite">(*) accumulate call as accumulate call and any load or store access<br></blockquote><blockquote type="cite">to shared window ?<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Example: Assertion MPI_MODE_NOPRECEDE<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Does<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">the fence does not complete any sequence of locally issued RMA calls<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">mean for windows created by MPI_Win_Allocate_shared ()<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">the fence does not complete any sequence of locally issued RMA calls<br></blockquote><blockquote type="cite">or<br></blockquote><blockquote type="cite">any load/store access to the window memory ?<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">It's not clear to me. I will be probably not clear for the standard<br></blockquote><blockquote type="cite">MPI user.<br></blockquote><blockquote type="cite">RMA operations are defined only MPI functions for window objects<br></blockquote><blockquote type="cite">(as far as I can see).<br></blockquote><blockquote type="cite">But possibly I'm totally wrong and the synchronization functions<br></blockquote><blockquote type="cite">synchronize<br></blockquote><blockquote type="cite">only the RMA communication calls (MPI_GET, MPI_PUT, ...).<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Hubert<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">-----------------------------------------------------------------------------<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Wednesday, September 12, 2012 11:37 AM<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Hubert,<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">This is what I was referring to. I'm in favor of this proposal.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Torsten<br></blockquote><blockquote type="cite"><br></blockquote><br>-- <br>Dr. Rolf Rabenseifner . . . . . . . . . .. email <a href="mailto:rabenseifner@hlrs.de">rabenseifner@hlrs.de</a><br>High Performance Computing Center (HLRS) . phone ++49(0)711/685-65530<br>University of Stuttgart . . . . . . . . .. fax ++49(0)711 / 685-65832<br>Head of Dpmt Parallel Computing . . . <a href="http://www.hlrs.de/people/rabenseifner">www.hlrs.de/people/rabenseifner</a><br>Nobelstr. 19, D-70550 Stuttgart, Germany . . . . (Office: Room 1.307)<br></div></blockquote></div><br></div></body></html>