<div dir="ltr"><span style="font-size:12.8px">This is not necessary stated in the standard or guaranteed</span><span style="font-size:12.8px"> by it, it's just my intuition...</span><div><br></div><div>I expect that <span style="font-size:12.8px">MPI_User_function is invoked by the thread that invokes the MPI function that uses it, and that you need a mutex to touch shared state associated with </span><span style="font-size:12.8px">MPI_User_function when running with MPI_THREAD_MULTIPLE, but not otherwise.</span><div><span style="font-size:12.8px"><br></span></div><div>I would hope that MPI implementations do not serialize calls to <span style="font-size:12.8px">MPI_User_function in MPI_THREAD_MULTIPLE mode, because there are many cases where </span><span style="font-size:12.8px">MPI_User_function is trivially reentrant and I would like simultaneous progress if I call MPI_Allreduce concurrently from 2+ threads (with different communicators, of course) with the same </span><span style="font-size:12.8px">MPI_User_function.</span><br><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">Jeff<br></span><div class="gmail_extra"><br><div class="gmail_quote">On Thu, May 25, 2017 at 9:35 AM, Phil Ruffwind <span dir="ltr"><<a href="mailto:rf@rufflewind.com" target="_blank">rf@rufflewind.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hello all,<br>
<br>
I have another question about MPI_User_function.  Does MPI make any<br>
guarantees regarding (a) whether multiple invocations of<br>
MPI_User_function could occur simultaneously within a given process for<br>
a given MPI_Op, and regarding (b) which thread MPI_User_function gets<br>
called on?<br>
<br>
The answer to (a) affects whether MPI_User_function would need any<br>
synchronization (like mutexes or semaphores) if it mutates global state.<br>
 The answer to (b) affects whether it is possible to use thread-local<br>
state inside MPI_User_function.<br>
<br>
I would appreciate any clarifications.  Thanks.<br>
Phil<br>
______________________________<wbr>_________________<br>
mpi-forum mailing list<br>
<a href="mailto:mpi-forum@lists.mpi-forum.org">mpi-forum@lists.mpi-forum.org</a><br>
<a href="https://lists.mpi-forum.org/mailman/listinfo/mpi-forum" rel="noreferrer" target="_blank">https://lists.mpi-forum.org/<wbr>mailman/listinfo/mpi-forum</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">Jeff Hammond<br><a href="mailto:jeff.science@gmail.com" target="_blank">jeff.science@gmail.com</a><br><a href="http://jeffhammond.github.io/" target="_blank">http://jeffhammond.github.io/</a></div>
</div></div></div></div></div>