Run ifconfig on your nodes. Do you have multiple IP interfaces? If so, are they on the same IP subnet? (e.g., one IP interface 192.168.1.x/24 and another on 192.168.1.y/24)
On Apr 4, 2012, at 7:55 PM, Rohan Deshpande wrote: > Hi, > > I am not quite sure what does that mean. Can you please explain more. > > Thanks > > On Wed, Apr 4, 2012 at 10:47 PM, Jeffrey Squyres <jsquy...@cisco.com> wrote: > Do you have multiple IP interfaces on a single machine on the same IP subnet, > perchance? > > If so, don't do that. :-) Put each of your IP addresses in a different IP > subnet. > > > On Apr 3, 2012, at 10:30 PM, Rohan Deshpande wrote: > > > Hi, > > > > I am running a MPI program using cluster and tcp communication. > > > > To run I am using: mpirun --prefix /usr/local/ --mca btl tcp,self > > --hostfile slaves -np 6 scatter > > > > > > I am getting following output: > > > > Process 0 on host host1 has elements 0 1 2 3 > > Process 1 on host host1 has elements 4 5 6 7 > > Process 2 on host host1 has elements 8 9 10 11 > > Process 3 on host host1 has elements 12 13 14 15 > > [slave1][[24708,1],5][btl_tcp_endpoint.c:486:mca_btl_tcp_endpoint_recv_connect_ack] > > received unexpected process identifier [[24708,1],4] > > > > When trying to communicate with slave1 i get received unexpected process > > identifier error. > > > > My PATH and LD_LIBRARY_PATH are correctly set in .bashrc file. > > > > > > > > Source code - > > > > > > #include <stdlib.h> > > #include <stdio.h> > > #include "mpi.h" > > #define MAXPROC 8 /* Max number of procsses */ > > #define LENGTH 24 /* length of buffer */ > > > > int main(int argc, char* argv[]) { > > int i, j, np, me; > > const int nametag = 40; /* Tag value for sending name */ > > const int datatag = 45; /* Tag value for sending data */ > > const int root = 0; /* Root process in scatter */ > > MPI_Status status; /* Status object for receive */ > > > > char myname[MPI_MAX_PROCESSOR_NAME]; /* Local host name string */ > > char hostname[MAXPROC][MPI_MAX_PROCESSOR_NAME]; /* Received host names */ > > int namelen; > > > > int x[LENGTH]; /* Send buffer */ > > int y[LENGTH]; /* Receive buffer */ > > > > MPI_Init(&argc, &argv); /* Initialize MPI */ > > MPI_Comm_size(MPI_COMM_WORLD, &np); /* Get nr of processes */ > > MPI_Comm_rank(MPI_COMM_WORLD, &me); /* Get own identifier */ > > > > MPI_Get_processor_name(myname, &namelen); /* Get host name */ > > myname[namelen++] = (char)0; /* Terminating null byte */ > > > > /* Check that we have an even number of processes and at most MAXPROC */ > > if (np>MAXPROC || np%2 != 0) { > > if (me == 0) { > > printf("You have to use an even number of processes (at most %d)\n", > > MAXPROC); > > } > > MPI_Finalize(); > > exit(0); > > } > > > > if (me == 0) { /* Process 0 does this */ > > > > /* Initialize the array x with values 0 .. LENGTH-1 */ > > for (i=0; i<LENGTH; i++) { > > x[i] = i; > > } > > > > printf("Process %d on host %s is distributing array x to all %d > > processes\n\n", > > me, myname, np); > > > > /* Scatter the array x to all proceses, place it in y */ > > MPI_Scatter(x, LENGTH/np, MPI_INT, y, LENGTH/np, MPI_INT, root, > > MPI_COMM_WORLD); > > > > /* Print out own portion of the scattered array */ > > printf("Process %d on host %s has elements", me, myname); > > for (i=0; i<LENGTH/np; i++) { > > printf(" %d", y[i]); > > } > > printf("\n"); > > > > /* Receive messages with hostname and the scattered data */ > > /* from all other processes */ > > for (i=1; i<np; i++) { > > MPI_Recv (hostname[i], namelen, MPI_CHAR, i, nametag, MPI_COMM_WORLD, > > &status); > > MPI_Recv (y, LENGTH/np, MPI_INT, i, datatag, MPI_COMM_WORLD, &status); > > printf("Process %d on host %s has elements", i, hostname[i]); > > for (j=0; j<LENGTH/np; j++) { > > printf(" %d", y[j]); > > } > > printf("\n"); > > } > > > > printf("Ready\n"); > > > > > > } else { /* all other processes do this */ > > > > /* Receive the scattered array from process 0, place it in array y */ > > MPI_Scatter(x, LENGTH/np, MPI_INT, y, LENGTH/np, MPI_INT, root, \ > > MPI_COMM_WORLD); > > /* Send own name back to process 0 */ > > MPI_Send (myname, namelen, MPI_CHAR, 0, nametag, MPI_COMM_WORLD); > > /* Send the received array back to process 0 */ > > MPI_Send (y, LENGTH/np, MPI_INT, 0, datatag, MPI_COMM_WORLD); > > > > } > > > > MPI_Finalize(); > > exit(0); > > } > > > > Any idea what could be wrong? > > > > > > Thanks > > > > > > > > > > > > _______________________________________________ > > users mailing list > > us...@open-mpi.org > > http://www.open-mpi.org/mailman/listinfo.cgi/users > > > -- > Jeff Squyres > jsquy...@cisco.com > For corporate legal information go to: > http://www.cisco.com/web/about/doing_business/legal/cri/ > > > _______________________________________________ > users mailing list > us...@open-mpi.org > http://www.open-mpi.org/mailman/listinfo.cgi/users > > > > -- > > Best Regards, > > ROHAN DESHPANDE > > > > _______________________________________________ > users mailing list > us...@open-mpi.org > http://www.open-mpi.org/mailman/listinfo.cgi/users -- Jeff Squyres jsquy...@cisco.com For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/