<div class="gmail_quote">On Mon, Apr 23, 2012 at 20:54, Jeff Hammond <span dir="ltr">&lt;<a href="mailto:jhammond@alcf.anl.gov">jhammond@alcf.anl.gov</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div id=":52d">If you implement your user-defined reduction using MPI_Accumulate<br>
locally, does that not solve the problem?  In this case, whatever you<br>
can do for MPI_Accumulate is valid for MPI_Reduce, right?<br>
<br>
my_reduction(..)<br>
{<br>
MPI_Win_create(MPI_COMM_SELF,..);<br>
MPI_Accumulate(rank=me,..);<br>
MPI_Win_free(MPI_COMM_SELF,..);<br>
}</div></blockquote></div><br><div>&quot;No MPI communication function may be called inside the user function.&quot;</div><div><br></div><div>I think that means that these are not allowed, even when performed on MPI_COMM_SELF.</div>
<div><br></div><div>Note that it&#39;s not the &quot;hard&quot; implementation that I&#39;m complaining about, it&#39;s the need to translate between two different MPI_Ops that do exactly the same thing, but one that cannot be used with collectives and one that cannot be used with one-sided.</div>