OPAL (Object Oriented Parallel Accelerator Library)
2024.2
OPAL
IpplMessageCounter.cpp
Go to the documentation of this file.
1
#include "
Utility/IpplMessageCounter.h
"
2
3
#include "
PETE/IpplExpressions.h
"
4
5
IpplMessageCounter::IpplMessageCounter
() :
ison
(true)
6
{
7
8
}
9
10
IpplMessageCounterRegion
*
IpplMessageCounter::getActiveRegion
()
11
{
12
if
(
activeRegion
>=0 && (
unsigned
int
)
activeRegion
<
counterRegions
.size())
13
return
counterRegions
[
activeRegion
];
14
else
15
return
0;
16
}
17
18
void
IpplMessageCounter::setActiveRegion
(
int
ar)
19
{
20
activeRegion
= ar;
21
}
22
23
void
IpplMessageCounter::unsetActiveRegion
()
24
{
25
activeRegion
= -1;
26
}
27
28
int
IpplMessageCounter::addRegion
(
IpplMessageCounterRegion
*mcr)
29
{
30
counterRegions
.push_back(mcr);
return
counterRegions
.size()-1;
31
}
32
33
void
IpplMessageCounter::registerMessage
(
int
size)
34
{
35
if
(
ison
&&
getActiveRegion
())
36
getActiveRegion
()->
registerMessage
(size);
37
}
38
39
IpplMessageCounterRegion::IpplMessageCounterRegion
(
const
std::string &n)
40
:
name
(n),
count
(0),
total_size
(0)
41
{
42
index
=
IpplMessageCounter::getInstance
().
addRegion
(
this
);
43
}
44
45
void
IpplMessageCounterRegion::begin
()
46
{
47
IpplMessageCounter::getInstance
().
setActiveRegion
(
index
);
48
}
49
50
void
IpplMessageCounterRegion::end
()
51
{
52
IpplMessageCounter::getInstance
().
unsetActiveRegion
();
53
}
54
55
void
IpplMessageCounterRegion::registerMessage
(
int
size)
56
{
57
count
++;
58
total_size
+= size;
59
//std::cout << "node " << Ippl::myNode() << " sent message of size " << size << std::endl;
60
}
61
62
63
void
IpplMessageCounter::print
()
64
{
65
Inform
msg(
"MsgCounter"
);
66
msg <<
"Message Counts------------------------------------------------\n"
;
67
for
(
unsigned
int
i=0;i<
counterRegions
.size();++i)
68
{
69
counterRegions
[i]->print(msg);
70
}
71
msg <<
"--------------------------------------------------------------\n"
;
72
}
73
74
void
IpplMessageCounterRegion::print
(
Inform
&msg)
75
{
76
unsigned
total_count=0, total_total_size=0;
77
reduce
(
count
, total_count,
OpAddAssign
());
78
reduce
(
total_size
, total_total_size,
OpAddAssign
());
79
msg <<
name
<<
" count = "
<< total_count <<
" size = "
80
<< total_total_size/(1024.*1024.) <<
" Mb"
<<
endl
;
81
}
reduce
bool reduce(Communicate &, InputIterator, InputIterator, OutputIterator, const ReduceOp &, bool *IncludeVal=0)
Definition
GlobalComm.hpp:55
IpplExpressions.h
endl
Inform & endl(Inform &inf)
Definition
Inform.cpp:42
IpplMessageCounter.h
OpAddAssign
Definition
TypeComputations.h:558
Inform
Definition
Inform.h:42
IpplMessageCounterRegion
Definition
IpplMessageCounter.h:24
IpplMessageCounterRegion::index
int index
Definition
IpplMessageCounter.h:35
IpplMessageCounterRegion::begin
void begin()
Definition
IpplMessageCounter.cpp:45
IpplMessageCounterRegion::count
unsigned count
Definition
IpplMessageCounter.h:33
IpplMessageCounterRegion::end
void end()
Definition
IpplMessageCounter.cpp:50
IpplMessageCounterRegion::IpplMessageCounterRegion
IpplMessageCounterRegion(const std::string &)
Definition
IpplMessageCounter.cpp:39
IpplMessageCounterRegion::name
std::string name
Definition
IpplMessageCounter.h:32
IpplMessageCounterRegion::registerMessage
void registerMessage(int)
Definition
IpplMessageCounter.cpp:55
IpplMessageCounterRegion::total_size
unsigned total_size
Definition
IpplMessageCounter.h:34
IpplMessageCounterRegion::print
void print(Inform &)
Definition
IpplMessageCounter.cpp:74
IpplMessageCounter::setActiveRegion
void setActiveRegion(int)
Definition
IpplMessageCounter.cpp:18
IpplMessageCounter::ison
bool ison
Definition
IpplMessageCounter.h:67
IpplMessageCounter::activeRegion
int activeRegion
Definition
IpplMessageCounter.h:65
IpplMessageCounter::IpplMessageCounter
IpplMessageCounter()
Definition
IpplMessageCounter.cpp:5
IpplMessageCounter::getActiveRegion
IpplMessageCounterRegion * getActiveRegion()
Definition
IpplMessageCounter.cpp:10
IpplMessageCounter::counterRegions
std::vector< IpplMessageCounterRegion * > counterRegions
Definition
IpplMessageCounter.h:66
IpplMessageCounter::getInstance
static IpplMessageCounter & getInstance()
Definition
IpplMessageCounter.h:41
IpplMessageCounter::print
void print()
Definition
IpplMessageCounter.cpp:63
IpplMessageCounter::addRegion
int addRegion(IpplMessageCounterRegion *)
Definition
IpplMessageCounter.cpp:28
IpplMessageCounter::unsetActiveRegion
void unsetActiveRegion()
Definition
IpplMessageCounter.cpp:23
IpplMessageCounter::registerMessage
void registerMessage(int)
Definition
IpplMessageCounter.cpp:33