Zoltan2
Toggle main menu visibility
Loading...
Searching...
No Matches
Zoltan2_BaseClassMetrics.hpp
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
13
14
#ifndef ZOLTAN2_BASEMETRICVALUES_HPP
15
#define ZOLTAN2_BASEMETRICVALUES_HPP
16
17
#include <
Zoltan2_Standards.hpp
>
18
19
#define UNKNOWN_METRICS_TYPE_NAME "UnknownMetricClass"
// Unknown would be error
20
#define METRICS_UNSET_STRING "unset"
21
22
namespace
Zoltan2
{
23
25
template
<
typename
scalar_t>
26
class
BaseClassMetrics
{
27
28
private
:
30
void
resetValues(
int
memCount ){
31
scalar_t
*tmp =
new
scalar_t
[memCount];
32
memset(tmp, 0,
sizeof
(
scalar_t
) * memCount);
33
values_ = arcp(tmp, 0, memCount,
true
);
34
}
35
37
std::string metricName_;
38
42
ArrayRCP<scalar_t> values_;
43
44
protected
:
45
47
scalar_t
getValue
(
int
enumIndex)
const
{
return
values_[enumIndex]; }
48
50
void
setValue
(
int
enumIndex,
scalar_t
value) { values_[enumIndex] = value; }
51
52
public
:
53
55
BaseClassMetrics
() :
56
metricName_(
METRICS_UNSET_STRING
), values_() {
57
}
58
60
BaseClassMetrics
(
int
memCount, std::string mname) :
61
metricName_(mname), values_() {
62
resetValues(memCount);
63
}
64
66
BaseClassMetrics
(
int
memCount) :
67
metricName_(
METRICS_UNSET_STRING
), values_() {
68
resetValues(memCount);
69
}
70
72
virtual
~BaseClassMetrics
() {}
73
77
virtual
void
printLine
(std::ostream &os)
const
{};
78
82
virtual
const
std::vector<std::string> &
getMetrics
()
const
83
{
return
static_metricNames_
; }
84
86
virtual
const
std::string &
getMetricType
()
const
87
{
return
static_unknown_metricTypeName_
; }
88
90
const
std::string &
getName
()
const
{
return
metricName_; }
91
93
void
setName
(std::string name) { metricName_ = name;}
94
96
bool
hasMetricValue
(
const
std::string & metric_name)
const
{
97
return
(
convertMetricNameToIndex
( metric_name ) !=
getMetrics
().size() );
98
}
99
101
scalar_t
getMetricValue
(
const
std::string & metric_name)
const
102
{
103
size_t
metricIndex =
convertMetricNameToIndex
(metric_name);
104
if
( metricIndex ==
getMetrics
().size() )
105
return
0.0;
// throw an error
106
return
values_[metricIndex];
107
}
108
110
void
setMetricValue
(
const
std::string & metric_name,
scalar_t
value)
const
111
{
112
size_t
metricIndex =
convertMetricNameToIndex
(metric_name);
113
if
( metricIndex !=
getMetrics
().size() )
114
values_[metricIndex] = value;
115
}
116
118
size_t
convertMetricNameToIndex
(
const
std::string & metric_name)
const
119
{
120
const
std::vector<std::string> & metricNames =
getMetrics
();
121
size_t
metricIndex = std::find(metricNames.begin(), metricNames.end(),
122
metric_name) - metricNames.begin();
123
return
metricIndex;
// this can return metricNames.size() if not found
124
}
125
130
static
std::string
static_unknown_metricTypeName_
;
131
135
static
std::vector<std::string>
static_metricNames_
;
136
140
static
std::vector<std::string>
static_allMetricNames_
;
141
};
142
147
template
<
typename
scalar_t>
148
std::string
BaseClassMetrics<scalar_t>::static_unknown_metricTypeName_
=
149
UNKNOWN_METRICS_TYPE_NAME
;
150
154
template
<
typename
scalar_t>
155
std::vector<std::string>
BaseClassMetrics<scalar_t>::static_metricNames_
= {};
156
157
}
// namespace Zoltan2
158
#endif
METRICS_UNSET_STRING
#define METRICS_UNSET_STRING
Definition
Zoltan2_BaseClassMetrics.hpp:20
UNKNOWN_METRICS_TYPE_NAME
#define UNKNOWN_METRICS_TYPE_NAME
Definition
Zoltan2_BaseClassMetrics.hpp:19
Zoltan2_Standards.hpp
Gathering definitions used in software development.
Zoltan2::BaseClassMetrics::~BaseClassMetrics
virtual ~BaseClassMetrics()
Definition
Zoltan2_BaseClassMetrics.hpp:72
Zoltan2::BaseClassMetrics::setMetricValue
void setMetricValue(const std::string &metric_name, scalar_t value) const
Definition
Zoltan2_BaseClassMetrics.hpp:110
Zoltan2::BaseClassMetrics::hasMetricValue
bool hasMetricValue(const std::string &metric_name) const
Definition
Zoltan2_BaseClassMetrics.hpp:96
Zoltan2::BaseClassMetrics::getMetrics
virtual const std::vector< std::string > & getMetrics() const
Definition
Zoltan2_BaseClassMetrics.hpp:82
Zoltan2::BaseClassMetrics::printLine
virtual void printLine(std::ostream &os) const
Definition
Zoltan2_BaseClassMetrics.hpp:77
Zoltan2::BaseClassMetrics::BaseClassMetrics
BaseClassMetrics(int memCount)
Constructor.
Definition
Zoltan2_BaseClassMetrics.hpp:66
Zoltan2::BaseClassMetrics::static_allMetricNames_
static std::vector< std::string > static_allMetricNames_
Definition
Zoltan2_BaseClassMetrics.hpp:140
Zoltan2::BaseClassMetrics::setName
void setName(std::string name)
Set or reset the name.
Definition
Zoltan2_BaseClassMetrics.hpp:93
Zoltan2::BaseClassMetrics::static_metricNames_
static std::vector< std::string > static_metricNames_
Definition
Zoltan2_BaseClassMetrics.hpp:135
Zoltan2::BaseClassMetrics::setValue
void setValue(int enumIndex, scalar_t value)
Definition
Zoltan2_BaseClassMetrics.hpp:50
Zoltan2::BaseClassMetrics::convertMetricNameToIndex
size_t convertMetricNameToIndex(const std::string &metric_name) const
Definition
Zoltan2_BaseClassMetrics.hpp:118
Zoltan2::BaseClassMetrics::BaseClassMetrics
BaseClassMetrics(int memCount, std::string mname)
Constructor.
Definition
Zoltan2_BaseClassMetrics.hpp:60
Zoltan2::BaseClassMetrics::getValue
scalar_t getValue(int enumIndex) const
Definition
Zoltan2_BaseClassMetrics.hpp:47
Zoltan2::BaseClassMetrics::getMetricType
virtual const std::string & getMetricType() const
Get the class type of the metric.
Definition
Zoltan2_BaseClassMetrics.hpp:86
Zoltan2::BaseClassMetrics::getMetricValue
scalar_t getMetricValue(const std::string &metric_name) const
Definition
Zoltan2_BaseClassMetrics.hpp:101
Zoltan2::BaseClassMetrics::BaseClassMetrics
BaseClassMetrics()
Constructor - for compiling but not used.
Definition
Zoltan2_BaseClassMetrics.hpp:55
Zoltan2::BaseClassMetrics::static_unknown_metricTypeName_
static std::string static_unknown_metricTypeName_
Definition
Zoltan2_BaseClassMetrics.hpp:130
Zoltan2::BaseClassMetrics::getName
const std::string & getName() const
Get the name of the item measured.
Definition
Zoltan2_BaseClassMetrics.hpp:90
Zoltan2
Created by mbenlioglu on Aug 31, 2020.
Definition
Zoltan2_AlgHybrid2GL.hpp:47
Zoltan2::scalar_t
core
src
util
Zoltan2_BaseClassMetrics.hpp
Generated by
1.17.0