You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and dots ('.'), can be up to 35 characters long. Letters must be lowercase.
91 lines
2.0 KiB
91 lines
2.0 KiB
// 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
|
|
|