MPI_Wtime ( ) returns elapsed wall-clock time in seconds as some arbitrary point in past. Elapsed time for program segment is specified by the difference between MPI_Wtime values at starting and end of process. Process clocks are not essentially synchronised, so clock values are not essentially comparable across the processes, and care must be taken in determining overall running time for parallel program. Even if clocks are explicitly synchronised, variation across clocks still can't be predictable to be significantly less than round-trip time for zero-length message among the processes.
Now, we shall explain use of these functions with an example.
Example 1:
#include
int main(int argc, char **argv) {
int i, tmp, sum, s, r, N, x[100];
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &s);
MPI_Comm_rank(MPI_COMM_WORLD, &r);
If(r==0)
{
printf( "Enter N:");
scanf ("%d", &N);
for (i=1; i
MPI_Send(&N, 1, MPI_INT,i, i, MPI_COMM_WORLD);
for (i=r, i
sum+= x[i];
for (i=r, i
{
PRAM Algorithms
MPI_Recv(&tmp, 1, MPI_INT,i, i, MPI_COMM_WORLD, &status); Sum+=tmp;
}
printf( "%d", sum);
}
else {
MPI_Recv(&N, 1, MPI_INT,0, i, MPI_COMM_WORLD, &status);
for (i=r, i
sum+= x[i];
MPI_Send(&sum, 1, MPI_INT, 0, i, MPI_COMM_WORLD);
}
MPI_Finalize( );
}