<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
Hi Burlen,</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
You are not allowed to issue collectives concurrently on the same communicator.  You can use non-blocking collectives, i.e. MPI_Ireduce and MPI_Iallreduce to achieve the overlapping. You still need serialize the issue of MPI_Ireduce/MPI_Iallreduce, but you
 don't need mutex to wait for the request to complete in concurrent threads.<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
-- <br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
Hui<br>
</div>
<div id="appendonsend"></div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> Burlen Loring via discuss <discuss@mpich.org><br>
<b>Sent:</b> Wednesday, July 12, 2023 1:29 PM<br>
<b>To:</b> <discuss@mpich.org> <discuss@mpich.org><br>
<b>Cc:</b> Burlen Loring <burlen.loring@gmail.com><br>
<b>Subject:</b> [mpich-discuss] possible thread bug with MPI_Reduce/MPI_Allreduce</font>
<div> </div>
</div>
<div>
<div dir="ltr">Hi All,
<div><br>
</div>
<div>I'm using MPICH 4.0.2 on Fedora 37 from the package manager for development. From an MPI parallel  simulation I'm spawning a thread that does a number of reductions (MPI_Allreduce and MPI_Reduce). MPI_IN_PLACE option is used. The results are written with
 POSIX I/O from rank 0. The simulation continues, and can launch the next set of reductions before the previous ones completed. I have called MPI_Init_thread and requested and received MPI_THREAD_MULTIPLE support.</div>
<div><br>
</div>
<div>However, when multiple threads overlap (in test runs 3-4 threads running concurrently) both MPI_Allreduce and MPI_Reduce calls can produce incorrect results. If instead I serialize the threads, by waiting on them before returning to the simulation, the
 results are correct. Also, if I use a mutex around my MPI_Allreduce/Reduce sections, the results are correct. I think that MPI_Reduce/Allreduce is not thread safe. </div>
<div><br>
</div>
<div>I was wondering if this is a known issue? Could it be a mpich build/configure setting not set correctly by the Fedora package maintainer ? </div>
<div><br>
</div>
<div>Thanks</div>
<div>Burlen</div>
</div>
</div>
</body>
</html>