Zoltan2
Toggle main menu visibility
Loading...
Searching...
No Matches
MetricOutputManager.cpp
Go to the documentation of this file.
1
// @HEADER
2
// *****************************************************************************
3
// Zoltan2: A package of combinatorial algorithms for scientific computing
4
//
5
// Copyright 2012 NTESS and the Zoltan2 contributors.
6
// SPDX-License-Identifier: BSD-3-Clause
7
// *****************************************************************************
8
// @HEADER
9
10
//
11
// Testing the MetricOutputManager object.
12
//
13
// Verbosity levels are
14
// NO_STATUS,
15
// BASIC_STATUS,
16
// DETAILED_STATUS,
17
// VERBOSE_DETAILED_STATUS
18
// NUM_STATUS_OUTPUT_LEVELS
19
//
20
// This test can only really be verified by reading the output.
21
// So we are testing that MetricOutputManager doesn't crash.
22
23
24
#include <
Zoltan2_MetricOutputManager.hpp
>
25
#include <
Zoltan2_Parameters.hpp
>
26
#include <
Zoltan2_TestHelpers.hpp
>
27
28
#include <Teuchos_DefaultComm.hpp>
29
30
#include <set>
31
#include <iostream>
32
#include <string>
33
#include <ostream>
34
35
using
std::string;
36
using
Zoltan2::MetricOutputManager
;
37
38
int
main
(
int
narg,
char
*arg[])
39
{
40
Tpetra::ScopeGuard tscope(&narg, &arg);
41
Teuchos::RCP<const Teuchos::Comm<int> > comm = Tpetra::getDefaultComm();
42
43
int
rank = comm->getRank();
44
int
nprocs = comm->getSize();
45
bool
fail
=
false
;
46
47
MetricOutputManager<int>
*intmom = NULL;
48
MetricOutputManager<float>
*floatmom = NULL;
49
MetricOutputManager<double>
*doublemom = NULL;
50
51
// Even ranks print to std::cout
52
53
bool
iPrint = (rank%2 == 0);
54
bool
someOnePrints =
true
;
55
56
comm->barrier();
57
58
try
{
59
intmom =
new
MetricOutputManager<int>
(
60
rank, iPrint, std::cout, someOnePrints,
string
(
"units"
), 10);
61
}
62
catch
(std::exception &e){
63
fail
=
true
;
64
}
65
66
TEST_FAIL_AND_EXIT
(*comm, !
fail
,
"constructor"
, 1);
67
68
if
(intmom->
getMetricsOn
() !=
true
)
69
fail
=
true
;
70
71
TEST_FAIL_AND_EXIT
(*comm, !
fail
,
"getMetricsOn"
, 1);
72
73
if
(rank==0){
74
std::cout <<
"\nThere are "
<< nprocs <<
" processes. "
;
75
std::cout <<
"Even ranks only participate."
<< std::endl;
76
}
77
78
try
{
79
intmom->
print
(
string
(
"number of things"
), 10);
80
intmom->
print
(
string
(
"number of other things"
), 5);
81
}
82
catch
(std::exception &e){
83
fail
=
true
;
84
}
85
86
TEST_FAIL_AND_EXIT
(*comm, !
fail
,
"print to standard output"
, 1);
87
88
delete
intmom;
89
90
// All print to std::cout
91
92
iPrint =
true
;
93
someOnePrints =
true
;
94
comm->barrier();
95
96
try
{
97
floatmom =
new
MetricOutputManager<float>
(
98
99
rank, iPrint, std::cout, someOnePrints,
string
(
"dollars"
), 10);
100
}
101
catch
(std::exception &e){
102
fail
=
true
;
103
}
104
105
TEST_FAIL_AND_EXIT
(*comm, !
fail
,
"constructor"
, 1);
106
107
if
(floatmom->
getMetricsOn
() !=
true
)
108
fail
=
true
;
109
110
TEST_FAIL_AND_EXIT
(*comm, !
fail
,
"getMetricsOn"
, 1);
111
112
if
(rank==0){
113
std::cout <<
"\nThere are "
<< nprocs <<
" processes. "
;
114
std::cout <<
"All ranks participate."
<< std::endl;
115
}
116
117
try
{
118
floatmom->
print
(
string
(
"Price of things"
), 10.10);
119
floatmom->
print
(
string
(
"Price of other things"
), 25.25);
120
}
121
catch
(std::exception &e){
122
fail
=
true
;
123
}
124
125
TEST_FAIL_AND_EXIT
(*comm, !
fail
,
"all print to standard output"
, 1);
126
127
delete
floatmom;
128
129
// Node zero prints to a file.
130
131
iPrint = (rank == 0);
132
someOnePrints =
true
;
133
comm->barrier();
134
135
std::ios_base::openmode flags = std::ios_base::out & std::ios_base::trunc;
136
137
std::ofstream outF(
"testMetricFile.txt"
, flags);
138
139
try
{
140
doublemom =
new
MetricOutputManager<double>
( rank, iPrint, outF, someOnePrints,
string
(
"microseconds"
), 10);
141
}
142
catch
(std::exception &e){
143
fail
=
true
;
144
}
145
146
TEST_FAIL_AND_EXIT
(*comm, !
fail
,
"constructor"
, 1);
147
148
if
(rank==0){
149
std::cout <<
"\nThere are "
<< nprocs <<
" processes. "
;
150
std::cout <<
"Rank zero only participates"
<< std::endl;
151
}
152
153
try
{
154
doublemom->
print
(
string
(
"Time to do something"
),
155
10.101012345);
156
doublemom->
print
(
string
(
"Time to do something else"
),
157
25.2500024);
158
}
159
catch
(std::exception &e){
160
fail
=
true
;
161
}
162
163
TEST_FAIL_AND_EXIT
(*comm, !
fail
,
"printing to a file"
, 1);
164
165
outF.close();
166
167
comm->barrier();
168
169
if
(rank == 0){
170
std::ifstream inF(
"testMetricFile.txt"
);
171
string
s;
172
while
(getline(inF, s)){
173
std::cout << s << std::endl;
174
}
175
inF.close();
176
system(
"rm testMetricFile.txt"
);
// \todo fix for windows
177
}
178
179
comm->barrier();
180
181
delete
doublemom;
182
183
if
(rank==0)
184
std::cout <<
"PASS"
<< std::endl;
185
}
TEST_FAIL_AND_EXIT
#define TEST_FAIL_AND_EXIT(comm, ok, s, code)
Definition
ErrorHandlingForTests.hpp:34
Zoltan2_MetricOutputManager.hpp
Defines the MetricOutputManager class.
Zoltan2_Parameters.hpp
Defines Parameter related enumerators, declares functions.
Zoltan2_TestHelpers.hpp
common code used by tests
main
int main()
Definition
absdefinitiontest.cpp:15
Zoltan2::MetricOutputManager
MetricOutputManager handles output of profiling messages.
Definition
Zoltan2_MetricOutputManager.hpp:39
Zoltan2::MetricOutputManager::getMetricsOn
bool getMetricsOn() const
Return true if any process outputs metrics.
Definition
Zoltan2_MetricOutputManager.hpp:87
Zoltan2::MetricOutputManager::print
void print(const std::string &msg, const T val)
Print a line of information.
Definition
Zoltan2_MetricOutputManager.hpp:93
fail
static const std::string fail
Definition
findUniqueGids.cpp:45
test
core
unit
environment
MetricOutputManager.cpp
Generated by
1.17.0