1#include "gmock/gmock.h"
3#include "Kokkos_Core.hpp"
24using namespace Kokkos::utils::callbacks;
42 constexpr unit_t sleep_for{500.};
44 const auto seq = std::make_shared<sequence_t>(
45 region_matcher_t{{{
"region A"}}},
46 region_matcher_t{{{
"region B"}}},
47 region_matcher_t{{{
"region C"}}}
52 for(
unsigned short int irep = 0; irep < 3; ++irep)
54 #define DO_A_REGION(_name_) \
55 Kokkos::Timer region_##_name_##_outer; \
56 region_##_name_##_outer.reset(); \
57 Kokkos::Profiling::pushRegion("region " #_name_); \
58 std::this_thread::sleep_for(sleep_for); \
59 Kokkos::Profiling::popRegion(); \
60 const auto region_##_name_##_elapsed = region_##_name_##_outer.seconds();
68 #define CHECK_TIMER(_index_, _name_) \
70 auto& timer = seq->timers.at(_index_); \
71 const auto duration = timer.template duration<unit_t>(); \
72 ASSERT_GT(duration, sleep_for) << #_name_; \
73 ASSERT_LT(duration, Kokkos::utils::timer::seconds{region_##_name_##_elapsed}); \
static void unregister_listener(const Callable *const callable)
Unregister a callable object as a listener.
static listener_list_const_iter_t register_listener(std::shared_ptr< Callable > callable)
Register a callable object, passed as a shared pointer, as a listener.
RegionTimerListener< EventRegexMatcher > region_timer_t
Listener to time regions whose name matches a regex.
TEST_F(EnqueuedEventTimerTest, duration)
std::chrono::duration< double, std::nano > nanoseconds
Matcher to select events whose name matches name.
EventTypeMatcher< region_matcher_t, PushRegionEvent, PopRegionEvent > matcher_t
Time a sequence of push/pop regions.
Initializing and finalizing Kokkos::utils::callbacks::Manager in a RAII manner.
#define CHECK_TIMER(_index_, _name_)
#define DO_A_REGION(_name_)