Date: Tue, 1 Apr 2003 14:53:09 +0200 From: Jesper Larsson Traeff To: mpi-21@XXXXXXXXXXXXX Subject: Correction to One-sided communications, Section 6.7: Semantics and Correctness Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.4i X-Virus-Scanned: by amavisd-milter (http://amavis.org/ X-Spam-Status: No, hits=0.0 required=5.0 tests= version=2.21 X-Spam-Level: Sender: owner-mpi-21@XXXXXXXXXXXXX Precedence: bulk Reply-To: mpi-21@XXXXXXXXXXXXX Dear MPI-2 Group, the list has been silent for quite some time. Here's an error (I think) and an issue concerning semantics of one-sided communications, that might reactivate discussions. MPI-2, Section 6.7: Semantics and Correctness of one-sided communications The rules on p.138 explain when operations are to complete at origins and targets, and in particular when updates become visible in public and private copies of windows. To my understanding: Rule 5 should state that an update in a location in a private window copy of a process becomes visible in the public window when that process perform a synchronization operation to end the current exposure epoch, that is an MPI_WIN_FENCE, MPI_WIN_UNLOCK or MPI_WIN_WAIT (and *not*, as written, MPI_WIN_POST) Rule 6 should state that an update to a public window becomes visible in the private window of the process owning the locations when the window owner opens the next exposure epoch, that is after the next MPI_WIN_FENCE, MPI_WIN_LOCK or MPI_WIN_POST (and *not*, as written, MPI_WIN_WAIT) Thus, it seems that in rules 5 and 6 the roles of MPI_WIN_POST and MPI_WIN_WAIT where falsely swapped. Is that so? The issue here is quite subtle and maybe some "advice to users" should be added. The MPI-2 standard apparently only guarantees eg. cache coherence (on a window) after the opening the next access epoch (Rule 6). Barrier synchronization or explicit synchronization with send/recv's alone does not guarantee this! This can likely confuse users who end, say, a phase in a application using MPI-lock synchronization with an explicit MPI_Barrier, and after the barrier expect all data now to be visible in the private window copies. In some MPI implementations or for some architectures that may not be so! Regards Jesper