« Return to documentation listing
Table of Contents
MPI_Wtime - Returns an elapsed time on the calling processor.
#include <mpi.h>
double MPI_Wtime()
INCLUDE ’mpif.h’
DOUBLE PRECISION MPI_WTIME()
#include <mpi.h>
double MPI::Wtime()
Time in seconds since an arbitrary time in the past.
MPI_Wtime
returns a floating-point number of seconds, representing elapsed wall-clock
time since some time in the past.
The "time in the past" is guaranteed not
to change during the life of the process. The user is responsible for converting
large numbers of seconds to other units if they are preferred.
This function
is portable (it returns seconds, not "ticks"), it allows high resolution,
and carries no unnecessary baggage. One would use it like this:
{
double starttime, endtime;
starttime = MPI_Wtime();
.... stuff to be timed ...
endtime = MPI_Wtime();
printf("That took %f seconds\n",endtime-starttime);
}
The times returned are local to the node that called them. There is no requirement
that different nodes return the "same" time.
The boolean variable MPI_WTIME_IS_GLOBAL,
a predefined attribute key that indicates whether clocks are synchronized,
does not have a valid value in Open MPI, as the clocks are not guaranteed
to be synchronized.
This function is intended to be a high-resolution, elapsed
(or wall) clock. See MPI_Wtick to determine the resolution of MPI_Wtime.
On POSIX platforms, this function may utilize a timer that is cheaper to
invoke than the gettimeofday() system call, but will fall back to gettimeofday()
if a cheap high-resolution timer is not available. The ompi_info command
can be consulted to see if Open MPI supports a native high-resolution timer
on your platform; see the value for "MPI_WTIME support" (or "options:mpi-wtime"
when viewing the parsable output). If this value is "native", a method
that is likely to be cheaper than gettimeofday() will be used to obtain
the time when MPI_Wtime is invoked.
For example, on platforms that support
it, the clock_gettime() function will be used to obtain a monotonic clock
value with whatever precision is supported on that platform (e.g., nanoseconds).
Note, too, that the MCA parameter opal_timer_require_monotonic can influcence
this behavior. It defaults to true, but if set to false, Open MPI may use
a finer-grained timing mechanism (e.g., the RDTSC/RDTSCP clock ticks on x86_64
platforms), but is not guaranteed to be monotonic in some cases (e.g., if
the MPI process is not bound to a single processor core).
This function
does not return an error value. Consequently, the result of calling it before
MPI_Init or after MPI_Finalize is undefined.
MPI_Wtick
Table of Contents
« Return to documentation listing
|