I am trying to send messages between processors in a few different configurations.
I have processor with architecture A and a few processors with architecture B. All processors are connected together via a network.
I am using MPI to send messages between processors. In my programs I like to find the time between messages. For this I am using MPI_Wtime(). I measure the time before a message is sent and then after it is received and from that I find the elapsed time.
Now, when I time messages sent between one architecture B to another B, I get good time data - that is, the time values are of a reasonable order of magnitude. I can also log times from processor B to processor A.
However, when I try to time message sent from processor architecture A to architecture B, I get complete gibberish. I have time values in the range of BILLIONS of second for a 1 KB message. There is no way that is correct.
To recap, I get reasonable timing data for messages sent from:
Architecture B to Architecture B
Architecture B to Architecture A
I get very unreasonable timing data when I time message sent from:
Architecture A to Architecture B.
A very rough idea of what I am doing is:
Again, that is just a very rough outline of the code.Code:double start_time, end_time; FILE *timing; timing = fopen("timing", "w"); start_time = MPI_Wtime(); if (myrank == 0) MPI_Send(message, 10, MPI_CHAR, 1, 99, MPI_COMM_WORLD); if (myrank != 0) MPI_Recv(message, 10, MPI_CHAR, 0, 99, MPI_COMM_WORLD, &status); end_time = MPI_Wtime(); fprintf(timing, "Time: %f\n", (end_time - start_time));