<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;"><DIV>Hello everyone,</DIV>
<DIV>I created a small linux cluster with 4 compute nodes yesterday. I installed Fedora 14 OS to all machine and mpich2 v1.3.2 on the server node. But i have a serious problem. I can not even make a simple send and receive program work. below is the steps that i follow. You will see the error at the end. I can not run point to point and collective communication routines of mpi. I am suspecting that the problem might have sthg to do with the hydra. Any help is appreciated.</DIV>
<DIV>Deniz.</DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV><STRONG>[ddal@admin mpi_uygulamalar]$ cat hosts <BR>admin<BR>cn01<BR>cn02<BR>cn03<BR>[ddal@admin mpi_uygulamalar]$ cat 01_Send_Receive_One_Message.cpp <BR>#include "mpi.h"<BR>#include <iostream><BR>using namespace std;</STRONG></DIV>
<DIV><STRONG>#define TAG 25</STRONG></DIV>
<DIV><STRONG>int main(int argc, char* argv[])<BR>{<BR> int myRank,<BR> size;</STRONG></DIV>
<DIV><STRONG> char processorName[50];<BR> int nameLength;</STRONG></DIV>
<DIV><STRONG> int a;//size of the send buffer<BR> int b;</STRONG></DIV>
<DIV><STRONG> MPI_Status status;</STRONG></DIV>
<DIV><STRONG> /* Initialize MPI */<BR> MPI_Init(&argc, &argv);</STRONG></DIV>
<DIV><STRONG> /* Determine the size of the group */<BR> MPI_Comm_size(MPI_COMM_WORLD,&size);</STRONG></DIV>
<DIV><STRONG> /* Determine the rank of the calling process */<BR> MPI_Comm_rank(MPI_COMM_WORLD,&myRank);</STRONG></DIV>
<DIV><STRONG> MPI_Get_processor_name(processorName, &nameLength);</STRONG></DIV>
<DIV><STRONG> if(size != 2 )<BR> {<BR> cout<<"Number of CPUs must be 2 !\n";<BR> MPI_Abort(MPI_COMM_WORLD, 99);<BR> }</STRONG></DIV>
<DIV><STRONG> if(myRank == 0)/* Master Sends a Message */<BR> {<BR> a=25;</STRONG></DIV>
<DIV><STRONG> MPI_Send(&a, 1, MPI_INT, 1, TAG, MPI_COMM_WORLD);<BR> printf("%s Sent Variable a Successfully\n",processorName);<BR> }<BR> else /* Process 1 Receives the Message */<BR> {<BR> MPI_Recv(&b, 1, MPI_INT, 0, TAG, MPI_COMM_WORLD, &status );<BR> printf("%s Received Variable a Successfully over b\n",processorName);<BR> printf("b=%d\n",b);<BR> }</STRONG></DIV>
<DIV><STRONG> /* Terminate the MPI */<BR> MPI_Finalize();</STRONG></DIV>
<DIV><STRONG> return 0;<BR>}[ddal@admin mpi_uygulamalar]$ mpicxx 01_Send_Receive_One_Message.cpp -o test.x <BR>[ddal@admin mpi_uygulamalar]$ mpiexec -f hosts -n 2 ./test.x <BR>Fatal error in MPI_Send: Other MPI error, error stack:<BR>MPI_Send(173)..............: MPI_Send(buf=0xbf928900, count=1, MPI_INT, dest=1, tag=25, MPI_COMM_WORLD) failed<BR>MPID_nem_tcp_connpoll(1811): Communication error with rank 1: <BR>[mpiexec@admin] ONE OF THE PROCESSES TERMINATED BADLY: CLEANING UP<BR>[proxy:0:1@cn01] HYD_pmcd_pmip_control_cmd_cb (./pm/pmiserv/pmip_cb.c:868): assert (!closed) failed<BR>[proxy:0:1@cn01] HYDT_dmxu_poll_wait_for_event (./tools/demux/demux_poll.c:77): callback returned error status<BR>[proxy:0:1@cn01] main (./pm/pmiserv/pmip.c:208): demux engine error waiting for event<BR>APPLICATION TERMINATED WITH THE EXIT STRING: Hangup (signal 1)<BR>[ddal@admin mpi_uygulamalar]$ </STRONG></DIV></td></tr></table><br>