<div dir="ltr">Hi, Joachim, <div><br></div><div>Thanks a lot for your response. Is that possible that the rank 0 in server can talk to each process in the client? </div><div>If that's possible, I just need to <span style="color:rgb(0,0,0);font-family:sans-serif;font-size:14.6667px">replace MPI_COMM_WORLD by MPI_COMM_SELF on the server side, right? </span> </div><div><br></div><div>Thanks,</div><div>Shuwei</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Feb 20, 2019 at 5:11 PM Protze, Joachim <<a href="mailto:protze@itc.rwth-aachen.de">protze@itc.rwth-aachen.de</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">



<div>
<div dir="auto" style="direction:ltr;margin:0px;padding:0px;font-family:sans-serif;font-size:11pt;color:black">
Shuwei,<br>
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0px;padding:0px;font-family:sans-serif;font-size:11pt;color:black">
Both MPI calls are collective calls. This means all ranks in the provided communicator must call this function.<br>
</div>
<div dir="auto" style="direction:ltr;margin:0px;padding:0px;font-family:sans-serif;font-size:11pt;color:black">
If you want to connect both applications so that any rank in server can communicate with any rank in client, all processes need to call the function for each side.
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0px;padding:0px;font-family:sans-serif;font-size:11pt;color:black">
If only rank 0 should ever communicate, you can replace MPI_COMM_WORLD by MPI_COMM_SELF on both sides. The resulting newcomm will be a intercommunicator with one rank on each side.<br>
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0px;padding:0px;font-family:sans-serif;font-size:11pt;color:black">
Best<br>
</div>
<div dir="auto" style="direction:ltr;margin:0px;padding:0px;font-family:sans-serif;font-size:11pt;color:black">
Joachim<br>
<br>
</div>
<div dir="auto" style="direction:ltr;margin:0px;padding:0px;font-family:sans-serif;font-size:11pt;color:black">
<div dir="auto" style="direction:ltr;margin:0px;padding:0px;font-family:sans-serif;font-size:11pt;color:black">
--<br>
</div>
<div dir="auto" style="direction:ltr;margin:0px;padding:0px;font-family:sans-serif;font-size:11pt;color:black">
Sent from my mobile phone</div>
<br>
</div>
<br>
<br>
<br>
<div class="gmail_quote">On Wed, Feb 20, 2019 at 10:54 PM +0100, "Shuwei Zhao via discuss"
<span dir="ltr"><<a href="mailto:discuss@mpich.org" target="_blank">discuss@mpich.org</a>></span> wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div dir="3D"ltr"">
<div dir="ltr">
<div dir="ltr">Hi, 
<div><br>
</div>
<div>I was trying to study the usage of mpi client-server model based on the example you provided on <a href="https://www.mcs.anl.gov/research/projects/mpi/mpi-standard/mpi-report-2.0/node106.htm" target="_blank">https://www.mcs.anl.gov/research/projects/mpi/mpi-standard/mpi-report-2.0/node106.htm</a>.
 After writing simple separate client and server source file based on the samples on your website. I found that:</div>
<div>1) when client and server both runs in single process like mpiexec -n 1 server, mpiexec -n 1 client. </div>
<div>it works fine, connection between server and client can successfully be built. </div>
<div>2) when client runs in single process but server runs in multiple processes (2 for example) but only rank 0 in server responsible to call mpi_comm_accept, rank 1 of server is just sleeping. Usage is like mpiexec -n 1 client, mpiexec -n 2 server. In this
 case, server blocks in mpi_comm_accept, which is expected. However, client blocks in mpi_comm_connect which is not expected. </div>
<div>3) when client runs in multiple processes and server runs in multiple processes, only rank 0 of client responsible for mpi_comm_connect and only rank 0 of server responsible for mpi_comm_accept. In this case, same observation in 2). </div>
<div><br>
</div>
<div>May I ask is the hanging of mpi_comm_connect in 2) & 3) expected? Is there a way to build connection successfully when mpi client/server runs under multi-process? </div>
<div><br>
</div>
<div>Thanks a lot,</div>
<div>Shuwei</div>
</div>
</div>
</div>
</blockquote>
</div>
</div>

</blockquote></div>