[mpich-discuss] send and recieve not working over ethernet
Pavan Balaji
balaji at mcs.anl.gov
Sat Dec 1 09:25:37 CST 2012
Are the architectures of the two machines identical? Both x86 64-bit?
Did you install a 64-bit OS on both machines ("uname -m" == "x86_64")?
-- Pavan
On 12/01/2012 08:34 AM US Central Time, D Griffiths wrote:
> I am completely new to MPI so I hope I’m not asking anything too silly.
> I have two computers, one running Ubuntu and the other running
> Scientific Linux. They recognise each other as hosts, I can ssh from
> each without a password and have disabled any firewalls.
>
> Although I can run a simple Hello World application, the trouble starts
> when I try to use MPI_SEND and MPI_RECV. I am trying a simple program to
> send an int variable from one node to the other (see source code below).
>
> If I run the code with two processes on the same computer I get the
> correct output:
>
> dan at siriusa:~/mpich2/tutorial2$ mpiexec -n 2 ./result2
>
> Process 0 sending number 4
> Process 1 received number 4 from process 0
>
> However, if I try to run the code using both computers, I get:
>
> dan at siriusa:~/mpich2/tutorial2$ mpiexec -n 2 -f hosts ./result2
>
> Process 0 sending number 4
> Process 1 received number -1078477356 from process 0
>
> My host file:
>
> dan at siriusa:~/mpich2/tutorial2$ cat hosts
>
> 192.168.88.1
> 192.168.88.2
>
> So there is some sort of problemwith using the send/recieve functions
> over the network. As I said I am a beginner at this, so any help will be
> greatly appreciated. Thanks in advance.
>
> Code:
>
> #include <mpi.h>
>
> #include <stdio.h>
> #include <stdlib.h>
>
> int main(int argc, char** argv) {
>
> // Initialize the MPI environment
> MPI_Init(NULL, NULL);
> // Find out rank, size
> int world_rank;
> MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);
> int world_size;
> MPI_Comm_size(MPI_COMM_WORLD, &world_size);
> // Get the name of the processor
> char processor_name[MPI_MAX_PROCESSOR_NAME];
> int name_len;
> MPI_Get_processor_name(processor_name, &name_len);
>
> // We are assuming at least 2 processes for this task
> if (world_size < 2) {
> fprintf(stderr, "World size must be greater than 1 for %s\n",
> argv[0]);
> MPI_Abort(MPI_COMM_WORLD, 1);
> }
>
> int number;
> if (world_rank == 0) {
> // If we are rank 0, set the number to -1 and send it to process 1
> number = 4;
> printf("Process 0 sending number %d\n",number);
> MPI_Send(&number, 1, MPI_INT, 1, 0, MPI_COMM_WORLD);
>
> } else if (world_rank == 1) {
> MPI_Recv(&number, 1, MPI_INT, 0, 0, MPI_COMM_WORLD,
> MPI_STATUS_IGNORE);
> printf("Process 1 received number %d from process 0\n", number);
> }
>
> MPI_Finalize();
> }
>
>
> _______________________________________________
> discuss mailing list discuss at mpich.org
> To manage subscription options or unsubscribe:
> https://lists.mpich.org/mailman/listinfo/discuss
>
--
Pavan Balaji
http://www.mcs.anl.gov/~balaji
More information about the discuss
mailing list