Re: [mpich-discuss] How to terminate MPI_Comm_accept
Hirak, Your approach should work fine. I’m not sure what issue you are facing. I assume thread 1 is doing this: while (1) { MPI_Comm_accept(..); MPI_Recv(.., tag, ..); if (tag == REGULAR_CONNECTION) continue; else if (tag == TERMINATION) { MPI_Send(..); break; } } In this case, all clients do an MPI_Comm_connect and then send a message with tag = REGULAR_CONNECTION. When thread 2 is done with its work, it’ll do an MPI_Comm_connect and then send a message with tag = TERMINATION, wait for a response from thread 1, and call finalize. — Pavan On Oct 7, 2014, at 10:58 PM, Roy, Hirak <[email protected]> wrote:
Hi Huiwei,
Thanks for your response.
I don’t think the solution you suggested will work. MPI_Comm_accept is a blocking MPI call and the call does not return until there is a matching MPI_Comm_connect or implementation specified timeout ( the timeout can not be configured and reasonably high). So when Thread2 is waiting on MPI_Comm_accept, it neither can receive any message nor can check any shared flag value.
That’s why I tried to terminate the accept by connecting from thread1.
Please let me know if you have any other suggestion.
Thanks, Hirak _______________________________________________ discuss mailing list [email protected] To manage subscription options or unsubscribe: https://lists.mpich.org/mailman/listinfo/discuss
-- Pavan Balaji ✉️ http://www.mcs.anl.gov/~balaji _______________________________________________ discuss mailing list [email protected] To manage subscription options or unsubscribe: https://lists.mpich.org/mailman/listinfo/discuss
participants (1)
-
Balaji, Pavan