<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7036.0">
<TITLE>RE: [mpich-discuss] child node can't contact parent?</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/plain format -->

<P><FONT SIZE=2>&nbsp;Hi,<BR>
&nbsp; Looks like something is wrong with the setup of your machines.<BR>
<BR>
# Can you ping from one machine to the other ?<BR>
<BR>
&nbsp; - From Computer1 try pinging Computer2<BR>
&nbsp; - From Computer2 try pinging Computer1<BR>
<BR>
# Start debugging by running a non-MPI program (like hostname)<BR>
<BR>
&nbsp;&nbsp; mpiexec -hosts 2 IPAddress_Of_Computer1 IPAddress_Of_Computer2 hostname<BR>
<BR>
# Then debug with a simple hello world program (don't debug your setup with a complex program)<BR>
<BR>
----------------- hello world ---------------<BR>
#include &lt;stdio.h&gt;<BR>
#include &quot;mpi.h&quot;<BR>
<BR>
int main(int argc, char *argv[]){<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int rank=-1;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MPI_Init(&amp;argc, &amp;argv);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MPI_Comm_rank(MPI_COMM_WORLD, &amp;rank);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;[%d] Hello world\n&quot;, rank);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MPI_Finalize();<BR>
}<BR>
----------------- hello world ---------------<BR>
<BR>
&nbsp;Let us know the results.<BR>
<BR>
Regards,<BR>
Jayesh<BR>
<BR>
-----Original Message-----<BR>
From: owner-mpich-discuss@mcs.anl.gov [<A HREF="mailto:owner-mpich-discuss@mcs.anl.gov">mailto:owner-mpich-discuss@mcs.anl.gov</A>] On Behalf Of Tony Bathgate<BR>
Sent: Wednesday, August 27, 2008 3:31 PM<BR>
To: mpich-discuss@mcs.anl.gov<BR>
Subject: [mpich-discuss] child node can't contact parent?<BR>
<BR>
Hi All,<BR>
<BR>
I apologize in advance for the length of this email; I'm new to the world of MPI and I want to include everything that might be relevant.&nbsp; I have the Win32 IA32 binary of MPICH2 installed on two machines.&nbsp; They are running Windows XP Pro. x64 Edition with Service Pack 2 and they each have an Intel Xeon processor.&nbsp; To simplify things I took them off our network, gave them their own router, and dropped their Windows firewalls.&nbsp; I have assigned the machines static IP's with the router (192.168.5.100 for Computer1, and 192.168.5.200 for Computer2).&nbsp; I've registered the local Administrator accounts (which have identical passwords and credentials) with mpiexec on each machine.&nbsp; And everything below was attempted from the Administrator account.<BR>
<BR>
I've tried running the cpi.exe example but it just hangs:<BR>
<BR>
&nbsp;&nbsp;&nbsp; C:\Program Files (x86)\MPICH2\examples&gt; mpiexec -hosts 2 Computer1<BR>
Computer2 .\cpi.exe<BR>
&nbsp;&nbsp;&nbsp; Enter the number of intervals: (0 quits) 1<BR>
<BR>
(here I waited about 20 minutes, then Ctrl+C)<BR>
<BR>
&nbsp;&nbsp;&nbsp; mpiexec aborting job<BR>
&nbsp;&nbsp;<BR>
&nbsp;&nbsp;&nbsp; job aborted:<BR>
&nbsp;&nbsp;&nbsp; rank: node: exit code[: error message]<BR>
&nbsp;&nbsp;&nbsp; 0: Computer1: 123: mpiexec aborting job<BR>
&nbsp;&nbsp;&nbsp; 1: Computer2: 123<BR>
<BR>
It runs perfectly fine if I have it execute it with the -localonly tag.&nbsp;<BR>
To explore this issue I wrote a simple program that uses MPI_Comm_spawn to spawn a worker program.&nbsp; The master then sends the worker a message and they both exit.&nbsp; The manager node runs the code that follows here:<BR>
&nbsp;&nbsp;&nbsp; #include &lt;mpi.h&gt;<BR>
&nbsp;&nbsp;&nbsp; #include &lt;stdio.h&gt;<BR>
<BR>
&nbsp;&nbsp;&nbsp; int main (int argc, char* argv[])<BR>
&nbsp;&nbsp;&nbsp; {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; someVariable = 10;<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MPI_Info&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; info;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MPI_Comm&nbsp;&nbsp;&nbsp;&nbsp; workercomm;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MPI_Request&nbsp;&nbsp; request;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MPI_Status&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; status;<BR>
&nbsp;&nbsp;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MPI_Init( &amp;argc, &amp;argv );<BR>
&nbsp;&nbsp;&nbsp;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fprintf( stdout, &quot;In Master - someVariable = %i&nbsp; \n&quot;, someVariable );<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fflush( stdout );<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MPI_Info_create( &amp;info );<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MPI_Info_set( info, &quot;host&quot;, &quot;Computer2&quot; );<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MPI_Comm_spawn( &quot;C:\\MPIworker\\Debug\\MPIworker.exe&quot;,<BR>
MPI_ARGV_NULL,<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1, info, 0, MPI_COMM_SELF, &amp;workercomm, MPI_ERRCODES_IGNORE );<BR>
&nbsp;&nbsp;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MPI_Info_free( &amp;info );<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MPI_Isend( &amp;someVariable, 1, MPI_INT, 0, 0, workercomm,<BR>
&amp;(request) );<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MPI_Waitall( 1, request, status );<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fprintf(stdout,&quot;Done sending\n&quot;);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fflush(stdout);<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MPI_Finalize();<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;<BR>
&nbsp;&nbsp;&nbsp; }<BR>
The worker code follows here:<BR>
&nbsp;&nbsp;&nbsp; #include &lt;mpi.h&gt;<BR>
&nbsp;&nbsp;&nbsp; #include &lt;stdio.h&gt;<BR>
<BR>
&nbsp;&nbsp;&nbsp; int main (int argc, char* argv[])<BR>
&nbsp;&nbsp;&nbsp; {<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; someVariable = 0;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MPI_Comm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; parentcomm;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MPI_Request&nbsp;&nbsp;&nbsp; request;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MPI_Status&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; status;<BR>
&nbsp;&nbsp;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MPI_Init( &amp;argc, &amp;argv );<BR>
&nbsp;&nbsp;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fprintf(stdout, &quot;In Worker: Before receive - someVariable = %i \n&quot;,someVariable);<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fflush( stdout );<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MPI_Comm_get_parent( &amp;parentcomm );<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MPI_Irecv( &amp;someVariable, 1, MPI_INT, 0, 0, parentcomm, &amp;request );<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MPI_Wait( &amp;request, &amp;status );<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fprintf( stdout, &quot;After receive - someVariable = %i\n&quot;, someVariable );<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fflush( stdout );<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MPI_Finalize();<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;<BR>
&nbsp;&nbsp;&nbsp; }<BR>
<BR>
When I run this code I get the following results:<BR>
&nbsp;&nbsp;&nbsp; C:\MPImanager\Debug\&gt; mpiexec -n 1 MPImanager.exe<BR>
&nbsp;&nbsp;&nbsp; In Master - someVariable = 10<BR>
&nbsp;&nbsp;&nbsp; Fatal error in MPI_Init: Other MPI error, error stack:<BR>
&nbsp;&nbsp;&nbsp; MPIR_Init_thread&lt;294&gt;............................:Initialization failed<BR>
&nbsp;&nbsp;&nbsp; MPID_Init&lt;242&gt;...................................:Spawned process group was unable to connect back to parent on port &lt;tag=0 port=8673 description=computer1.usask.ca ifname=192.168.5.100&gt;<BR>
&nbsp;&nbsp;&nbsp; MPID_Comm_connect&lt;187&gt;...........................:<BR>
&nbsp;&nbsp;&nbsp; MPIDI_Comm_connect&lt;369&gt;..........................:<BR>
&nbsp;&nbsp;&nbsp; MPIDI_Create_inter_root_communicator_connect&lt;133&gt;:<BR>
&nbsp;&nbsp;&nbsp; MPIDI_CH3I_Connect_to_root_sock&lt;289&gt;.............:<BR>
&nbsp;&nbsp;&nbsp; MPIDU_Sock_post_connect&lt;1228&gt;....................: unable to connect to computer1.usask.ca on port 8673, exhuasted all endpoints &lt;errno -1&gt;<BR>
&nbsp;&nbsp;&nbsp; MPIDU_Sock_post_connect&lt;1244&gt;....................: gethostbyname failed, The requested name is valid, but no data of the requested type was found. &lt;errno 11004&gt;<BR>
<BR>
&nbsp;&nbsp;&nbsp; Job aborted:<BR>
&nbsp;&nbsp;&nbsp; rank: node: exit code[: error message]<BR>
&nbsp;&nbsp;&nbsp; 0: computer2: 1: fatal error in MPI_Init: other MPI error, error stack:<BR>
&nbsp;&nbsp;&nbsp; MPIR_Init_thread&lt;294&gt;............................:Initialization failed<BR>
&nbsp;&nbsp;&nbsp; MPID_Init&lt;242&gt;...................................:Spawned process group was unable to connect back to parent on port &lt;tag=0 port=8673 description=computer1.usask.ca ifname=192.168.5.100&gt;<BR>
&nbsp;&nbsp;&nbsp; MPID_Comm_connect&lt;187&gt;...........................:<BR>
&nbsp;&nbsp;&nbsp; MPIDI_Comm_connect&lt;369&gt;..........................:<BR>
&nbsp;&nbsp;&nbsp; MPIDI_Create_inter_root_communicator_connect&lt;133&gt;:<BR>
&nbsp;&nbsp;&nbsp; MPIDI_CH3I_Connect_to_root_sock&lt;289&gt;.............:<BR>
&nbsp;&nbsp;&nbsp; MPIDU_Sock_post_connect&lt;1228&gt;....................: unable to connect to computer1.usask.ca on port 8673, exhuasted all endpoints &lt;errno -1&gt;<BR>
&nbsp;&nbsp;&nbsp; MPIDU_Sock_post_connect&lt;1244&gt;....................: gethostbyname failed, The requested name is valid, but no data of the requested type was found. &lt;errno 11004&gt;<BR>
<BR>
(Here I waited several minutes before pressing ctrl+c)<BR>
<BR>
&nbsp;&nbsp;&nbsp; mpiexec aborting job ...<BR>
<BR>
(Here I waited several more minutes before pressing ctrl+c and returning to the command prompt)<BR>
<BR>
So the program is able to spawn a process on the worker, but then when the worker is unable to contact the manager node MPI_Init fails.&nbsp; The error stack shows that it has the correct IP address and tries to use port 8673.&nbsp; At first I thought the problem might be that it was appending the domain name (usask.ca) from their old network, but the IP address is still correct so now I'm not sure.<BR>
<BR>
If I change the code so Computer2 is the manager and Computer1 is the worker the results are the same.&nbsp; But just like cpi.exe if I confine both the worker and the manager to the local host it performs perfectly.&nbsp; I assume this is an issue with either the way I've set up my network, or the way I've set up MPICH2 on the computers.&nbsp; Does anyone know what would cause an error like this?<BR>
<BR>
</FONT>
</P>

</BODY>
</HTML>