// Copyright (C) 2006 Douglas Gregor <doug.gregor -at- gmail.com> | |
// Use, modification and distribution is subject to the Boost Software | |
// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at | |
// http://www.boost.org/LICENSE_1_0.txt) | |
/** @file timer.hpp | |
* | |
* This header provides the @c timer class, which provides access to | |
* the MPI timers. | |
*/ | |
#ifndef BOOST_MPI_TIMER_HPP | |
#define BOOST_MPI_TIMER_HPP | |
#include <boost/mpi/config.hpp> | |
#include <boost/limits.hpp> | |
namespace boost { namespace mpi { | |
/** @brief A simple timer that provides access to the MPI timing | |
* facilities. | |
* | |
* The @c timer class is a simple wrapper around the MPI timing | |
* facilities that mimics the interface of the Boost Timer library. | |
*/ | |
class BOOST_MPI_DECL timer { | |
public: | |
/** Initializes the timer | |
* | |
* @post @c elapsed() == 0 | |
*/ | |
timer(); | |
/** Restart the timer. | |
* | |
* @post @c elapsed() == 0 | |
*/ | |
void restart(); | |
/** Return the amount of time that has elapsed since the last | |
* construction or reset, in seconds. | |
*/ | |
double elapsed() const; | |
/** Return an estimate of the maximum possible value of | |
* elapsed(). Note that this routine may return too high a value on | |
* some systems. | |
*/ | |
double elapsed_max() const; | |
/** Returns the minimum non-zero value that @c elapsed() may | |
* return. This is the resolution of the timer. | |
*/ | |
double elapsed_min() const; | |
/** Determines whether the elapsed time values are global times or | |
local processor times. */ | |
static bool time_is_global(); | |
private: | |
double start_time; | |
}; // timer | |
inline timer::timer() | |
{ | |
restart(); | |
} | |
inline void timer::restart() | |
{ | |
start_time = MPI_Wtime(); | |
} | |
inline double timer::elapsed() const | |
{ | |
return MPI_Wtime() - start_time; | |
} | |
inline double timer::elapsed_max() const | |
{ | |
return (std::numeric_limits<double>::max)(); | |
} | |
inline double timer::elapsed_min() const | |
{ | |
return MPI_Wtick(); | |
} | |
} } // end namespace boost::mpi | |
#endif // BOOST_MPI_TIMER_HPP |