<tt><font size=2>> Active target separates exposure and access epochs. 
It is erroneous<br>
> for a process to engage in more than one exposure epoch or more than<br>
> one access epoch per window.  So it's ok for many processes to
<br>
> expose (post/wait) to me concurrently, but for a given window I can
<br>
> access only one (start/complete) at a time.</font></tt>
<br>
<br><tt><font size=2>> Your example code looks ok to me.  Are you
getting an error message?</font></tt>
<br>
<br><tt><font size=2>Yeah, it's definitely a PAMID problem.  As I
said, Rank 0 confuses</font></tt>
<br><tt><font size=2>Rank 4 when it's working on LR group 5/7.  I
just wanted to verify the </font></tt>
<br><tt><font size=2>example was ok and that I wasn't trying to fix something
too odd.</font></tt>
<br>
<br>
<br>
<br><tt><font size=2>>  ~Jim.</font></tt>
<br><tt><font size=2>> On Jun 7, 2013 9:11 AM, "Bob Cernohous"
<bobc@us.ibm.com> wrote:</font></tt>
<br><tt><font size=2>> I haven't worked on rma before but was working
on a problem and ran <br>
> into this **comment in MPI_Win_post: <br>
> <br>
> "Starts an RMA exposure epoch for the local window associated
with <br>
> win.   **Only the processes belonging to group should access
the <br>
> window with RMA calls on win during this epoch.   Each process
in <br>
> group must issue a matching call to MPI_Win_start. MPI_Win_post does<br>
> not block." <br>
> <br>
> Would overlapping epochs be violating the ** line?  I decided
I <br>
> probably need to support this but I wondered if it's bending or <br>
> breaking the 'rules'? <br>
> <br>
> The problem (code at the bottom of this email) is using a cartesian
<br>
> communicator and alternating "left/right' accumulates with 'up/down'<br>
> accumulates on a single win.  So: <br>
> <br>
> - Ranks 0,1,2,3 are doing a left/right accumulate. <br>
> - Ranks 4,5,6,7 are doing a left/right accumulate. <br>
> - ... <br>
> <br>
> and then sometimes... <br>
> <br>
> - Ranks 0,1,2,3 complete and enter the 'up/down' accumulate epoch
<br>
> -- Rank 0 does MPI_Win_post to ranks 4,12 <br>
> -- Rank 1 doesn MPI_Win_post to ranks 5,13 <br>
> ... <br>
> <br>
> So is Rank 0 posting to Rank 4 while 4 is still in the epoch with
5/<br>
> 6/7 a violation of "Only the processes belonging to group should
<br>
> access the window with RMA calls on win during this epoch"?  
>From <br>
> Rank 4's point of view, rank 0 isn't in the group for the current
win/epoch. <br>
> <br>
> Putting a barrier (or something) in between or using two different
<br>
> win's fixes it.  I like using two win's since it separates the
<br>
> epochs and clearly doesn't use the wrong group/rank on the win. <br>
> <br>
>     /* RMA transfers in left-right direction */ <br>
>     MPI_Win_post(grp_lr, 0, win); <br>
>     MPI_Win_start(grp_lr, 0, win); <br>
>     MPI_Accumulate(&i, 1, MPI_INT, ranks_lr[LEFT] ,
0, 1, MPI_INT, <br>
> MPI_SUM, win); <br>
>     MPI_Accumulate(&i, 1, MPI_INT, ranks_lr[RIGHT],
0, 1, MPI_INT, <br>
> MPI_SUM, win); <br>
>     MPI_Win_complete(win); <br>
>     MPI_Win_wait(win); <br>
> <br>
>     /* RMA transfers in up-down direction */ <br>
>     MPI_Win_post(grp_ud, 0, win); <br>
>     MPI_Win_start(grp_ud, 0, win); <br>
>     MPI_Accumulate(&i, 1, MPI_INT, ranks_ud[UP]  ,
0, 1, MPI_INT, <br>
> MPI_SUM, win); <br>
>     MPI_Accumulate(&i, 1, MPI_INT, ranks_ud[DOWN], 0,
1, MPI_INT, <br>
> MPI_SUM, win); <br>
>     MPI_Win_complete(win); <br>
>     MPI_Win_wait(win); <br>
</font></tt>