Hi, <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; I have traced through the point to point module a few times. So, may be I can share the flow of events : <br>MPI_Init does some basic error checking first and calls MPIR_Init_thread() which primarily populates the MPIR_Process data structure, which also includes the communicator structure. Apart from that, it also initialises some other global variables and the channel interface. <br>
<br>&gt; How the initial communication is established in order to exchange the hostname+ port number details ?<br>&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; Suppose, you are using the standard blocking send mode, the bulk of this work is done in the MPID_Send() function. Here, the library either selects the eager mode or the rendezvous mode ,depending on the size of the message that you intend to transfer. There is a cut-off size (&nbsp; vc-&gt;eager_max_msg_sz )&nbsp; upto which the library chooses the eager mode, for data sizes beyond this, the rendezvous mode is selected. <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Suppose, the message is small and the data is contiguous,either the MPIDI_CH3_EagerContigShortSend() function is invoked. Over here, the eager packet is initialized and the data is copied from the buffer to the eager packet and invokes the MPIDI_CH3_iStartMsg(). This function examines the current connection state, since it is the first call, it is still un-connected. It creates the request data structure and enqueues it. The progress engine takes care of the request from here. The library now tries to form a new connection to the node whose rank has been specified,by invoking the MPIDI_CH3I_VC_post_connect() function. The destination is already known to the library through the rank and the hostname( mpd.hosts). This function gets the info related to the destination IP and the port address. <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The library now invokes the progress engine, through the call to MPIDI_CH3i_Progress_wait(). The actual connection establishment and the data transfer takes place in this function through the calls to MPIDI_CH3I_Progress_handle_sock_event() and MPIDU_Sock_wait(). It loops around till the completion counter is set to 1. <br>
&nbsp; <br>&gt;How is the hostname+port number details sent and received <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; I remember Dave had once helped me out with this : <a href="http://wiki.mcs.anl.gov/mpich2/index.php/" target="_blank">http://wiki.mcs.anl.gov/mpich2/index.php/</a>Sock_conn_protocol<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Its quite copious in content. The best way to understand what
is happening is to actually trace through the entire progress engine.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <br><br>&gt; How is all-to-all communication is done? On which ports this will be done ?<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; I am sure the other experienced members would help you on this. I havent done much in this area. <br>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; I just have a few months exposure to MPICH. If I have gone wrong somewhere, please do correct me.<br><br>Best,<br>Krishna Chaitanya K,<br>Final Year B-Tech,<br>Dept. of Information Technology,<br>National Institute of Technology,Karnataka (NITK)<br>
<br><br>&nbsp;&nbsp;&nbsp;&nbsp; <br><br><br><div class="gmail_quote">On Tue, Mar 11, 2008 at 3:15 AM, Ravi Thati &lt;<a href="mailto:gotothati@gmail.com">gotothati@gmail.com</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hello All,<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; I am working with MPICH-G2.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; I came to know&nbsp; (from mailing search) that&nbsp; while MPI_Init is called , the initialization is being done.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; All-to-all exchange of host+port details is done.<br>

<br>My doubt is :<br><br>&nbsp;How the initial communication is established in order to exchange the hostname+ port number details ?<br>&nbsp;How is the hostname+port number details sent and received ? what are the destination IPs these packets?<br>

<br>&nbsp;How is all-to-all communication is done? On which ports this will be done ?<br>&nbsp;Only after the exchange , each process can communicate with other.<br><br>&nbsp;&nbsp; Thanks for any clarifications. <br>-- <br>Regards,<br><font color="#888888">Ravi.Thati
</font></blockquote></div><br><br clear="all"><br>-- <br>In the middle of difficulty, lies opportunity