Zoltan2
Toggle main menu visibility
Loading...
Searching...
No Matches
TimerManager.cpp
Go to the documentation of this file.
1
// @HEADER
2
//
3
// ***********************************************************************
4
//
5
// Zoltan2: A package of combinatorial algorithms for scientific computing
6
// Copyright 2012 Sandia Corporation
7
//
8
// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
9
// the U.S. Government retains certain rights in this software.
10
//
11
// Redistribution and use in source and binary forms, with or without
12
// modification, are permitted provided that the following conditions are
13
// met:
14
//
15
// 1. Redistributions of source code must retain the above copyright
16
// notice, this list of conditions and the following disclaimer.
17
//
18
// 2. Redistributions in binary form must reproduce the above copyright
19
// notice, this list of conditions and the following disclaimer in the
20
// documentation and/or other materials provided with the distribution.
21
//
22
// 3. Neither the name of the Corporation nor the names of the
23
// contributors may be used to endorse or promote products derived from
24
// this software without specific prior written permission.
25
//
26
// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
27
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
29
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
30
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
31
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
32
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
33
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
34
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
35
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
36
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37
//
38
// Questions? Contact Karen Devine (kddevin@sandia.gov)
39
// Erik Boman (egboman@sandia.gov)
40
// Siva Rajamanickam (srajama@sandia.gov)
41
//
42
// ***********************************************************************
43
//
44
// @HEADER
45
//
46
// Testing the TimerManager class.
47
// TODO we only test that it doesn't crash.
48
49
#include <
Zoltan2_TestHelpers.hpp
>
50
#include <
Zoltan2_PartitioningProblem.hpp
>
51
#include <
Zoltan2_BasicIdentifierAdapter.hpp
>
52
#include <
Zoltan2_TimerManager.hpp
>
53
54
#include <Teuchos_DefaultComm.hpp>
55
56
#ifdef _MSC_VER
57
#define NOMINMAX
58
#include <windows.h>
59
#else
60
#include <unistd.h>
61
#endif
62
63
64
using
Zoltan2::TimerManager
;
65
using
Zoltan2::MACRO_TIMERS
;
66
using
Zoltan2::MICRO_TIMERS
;
67
using
Zoltan2::BOTH_TIMERS
;
68
69
70
static
void
sleep_wrap
(
unsigned
int
seconds)
71
{
72
#ifdef _MSC_VER
73
Sleep(1000*seconds);
74
#else
75
sleep(seconds);
76
#endif
77
}
78
79
void
goToSleep
(
const
RCP<const Zoltan2::Environment> &env)
80
{
81
env->timerStart(
MICRO_TIMERS
,
string
(
"sleep for 5 seconds"
));
82
sleep_wrap
(5);
83
env->timerStop(
MICRO_TIMERS
,
string
(
"sleep for 5 seconds"
));
84
85
env->timerStart(
MICRO_TIMERS
,
string
(
"sleep for 3 seconds (twice)"
));
86
sleep_wrap
(3);
87
env->timerStop(
MICRO_TIMERS
,
string
(
"sleep for 3 seconds (twice)"
));
88
89
env->timerStart(
MICRO_TIMERS
,
string
(
"sleep for 2 seconds"
));
90
sleep_wrap
(2);
91
env->timerStop(
MICRO_TIMERS
,
string
(
"sleep for 2 seconds"
));
92
93
env->timerStart(
MICRO_TIMERS
,
string
(
"sleep for 3 seconds (twice)"
));
94
sleep_wrap
(3);
95
env->timerStop(
MICRO_TIMERS
,
string
(
"sleep for 3 seconds (twice)"
));
96
}
97
98
99
int
main
(
int
narg,
char
*arg[])
100
{
101
Tpetra::ScopeGuard tscope(&narg, &arg);
102
Teuchos::RCP<const Teuchos::Comm<int> > comm = Tpetra::getDefaultComm();
103
104
// Create a problem, requesting that Timing be enabled.
105
106
Teuchos::ParameterList pl(
"test list"
);
107
pl.set(
"timer_output_stream"
,
"std::cout"
);
108
pl.set(
"timer_type"
,
"both_timers"
);
109
std::vector<const zscalar_t * >
weights
;
110
std::vector<int> strides;
111
Array<zgno_t> someIds(10,1);
112
typedef
Zoltan2::BasicUserTypes<zscalar_t, zlno_t, zgno_t>
myTypes_t
;
113
typedef
Zoltan2::BasicIdentifierAdapter<myTypes_t>
inputAdapter_t;
114
inputAdapter_t ia(10, someIds.getRawPtr(),
weights
, strides);
115
116
Zoltan2::PartitioningProblem<inputAdapter_t>
problem(&ia, &pl, comm);
117
118
// Use the timers through the environment.
119
120
const
RCP<const Zoltan2::Environment> &env = problem.
getEnvironment
();
121
122
if
(comm->getRank() == 0)
123
std::cout <<
"Sleeping..."
<< std::endl;
124
125
env->timerStart(
MACRO_TIMERS
,
string
(
"Do the sleep test"
));
126
goToSleep
(env);
127
env->timerStop(
MACRO_TIMERS
,
string
(
"Do the sleep test"
));
128
129
comm->barrier();
130
131
// Should show an error
132
env->timerStop(
MACRO_TIMERS
,
string
(
"unstarted timer"
));
133
134
problem.
printTimers
();
135
136
if
(comm->getRank() == 0)
137
std::cout <<
"PASS"
<< std::endl;
138
}
MACRO_TIMERS
@ MACRO_TIMERS
Time an algorithm (or other entity) as a whole.
Definition
Zoltan2_Parameters.hpp:120
MICRO_TIMERS
@ MICRO_TIMERS
Time the substeps of an entity.
Definition
Zoltan2_Parameters.hpp:121
goToSleep
void goToSleep(const RCP< const Zoltan2::Environment > &env)
Definition
TimerManager.cpp:79
sleep_wrap
static void sleep_wrap(unsigned int seconds)
Definition
TimerManager.cpp:70
Zoltan2_BasicIdentifierAdapter.hpp
Defines the BasicIdentifierAdapter class.
myTypes_t
Zoltan2::BasicUserTypes< zscalar_t, zlno_t, zgno_t > myTypes_t
Definition
Zoltan2_MeshCoordinateTest.hpp:22
Zoltan2_PartitioningProblem.hpp
Defines the PartitioningProblem class.
Zoltan2_TestHelpers.hpp
common code used by tests
Zoltan2_TimerManager.hpp
Declarations for TimerManager.
main
int main()
Definition
absdefinitiontest.cpp:6
Zoltan2::BasicIdentifierAdapter
This class represents a collection of global Identifiers and their associated weights,...
Definition
Zoltan2_BasicIdentifierAdapter.hpp:82
Zoltan2::BasicUserTypes
A simple class that can be the User template argument for an InputAdapter.
Definition
Zoltan2_InputTraits.hpp:140
Zoltan2::PartitioningProblem
PartitioningProblem sets up partitioning problems for the user.
Definition
Zoltan2_PartitioningProblem.hpp:105
Zoltan2::Problem::getEnvironment
const RCP< const Environment > & getEnvironment() const
Get the current Environment. Useful for testing.
Definition
Zoltan2_Problem.hpp:178
Zoltan2::Problem::printTimers
void printTimers() const
Return the communicator passed to the problem.
Definition
Zoltan2_Problem.hpp:135
Zoltan2::TimerManager
Definition
Zoltan2_TimerManager.hpp:64
Zoltan2::MACRO_TIMERS
@ MACRO_TIMERS
Time an algorithm (or other entity) as a whole.
Definition
Zoltan2_Parameters.hpp:120
Zoltan2::MICRO_TIMERS
@ MICRO_TIMERS
Time the substeps of an entity.
Definition
Zoltan2_Parameters.hpp:121
Zoltan2::BOTH_TIMERS
@ BOTH_TIMERS
Run both MACRO and MICRO timers.
Definition
Zoltan2_Parameters.hpp:122
weights
static ArrayRCP< ArrayRCP< zscalar_t > > weights
Definition
partition/rcbPerformanceZ1.cpp:82
test
core
unit
environment
TimerManager.cpp
Generated by
1.17.0