gem5  v19.0.0.0
stats.cc
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2017-2019 ARM Limited
3  * All rights reserved
4  *
5  * The license below extends only to copyright in the software and shall
6  * not be construed as granting a license to any other intellectual
7  * property including but not limited to intellectual property relating
8  * to a hardware implementation of the functionality of the software
9  * licensed hereunder. You may use the software subject to the license
10  * terms below provided that you ensure that this notice is replicated
11  * unmodified and in its entirety in all distributions of the software,
12  * modified or unmodified, in source code or in binary form.
13  *
14  * Copyright (c) 2006 The Regents of The University of Michigan
15  * All rights reserved.
16  *
17  * Redistribution and use in source and binary forms, with or without
18  * modification, are permitted provided that the following conditions are
19  * met: redistributions of source code must retain the above copyright
20  * notice, this list of conditions and the following disclaimer;
21  * redistributions in binary form must reproduce the above copyright
22  * notice, this list of conditions and the following disclaimer in the
23  * documentation and/or other materials provided with the distribution;
24  * neither the name of the copyright holders nor the names of its
25  * contributors may be used to endorse or promote products derived from
26  * this software without specific prior written permission.
27  *
28  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
29  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
30  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
31  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
32  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
33  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
34  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
35  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
36  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
37  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
38  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39  *
40  * Authors: Nathan Binkert
41  * Andreas Sandberg
42  */
43 
44 #include "config/use_hdf5.hh"
45 
46 #include "pybind11/pybind11.h"
47 #include "pybind11/stl.h"
48 
49 #include "base/statistics.hh"
50 #include "base/stats/text.hh"
51 #if USE_HDF5
52 #include "base/stats/hdf5.hh"
53 #endif
54 #include "sim/stat_control.hh"
55 #include "sim/stat_register.hh"
56 
57 
58 namespace py = pybind11;
59 
60 namespace Stats {
61 
62 void
64 {
65  py::module m = py::module::import("m5.stats");
66  m.attr("dump")();
67 }
68 
69 void
71 {
72  py::module m = py::module::import("m5.stats");
73  m.attr("reset")();
74 }
75 
76 }
77 
78 void
79 pybind_init_stats(py::module &m_native)
80 {
81  py::module m = m_native.def_submodule("stats");
82 
83  m
84  .def("initSimStats", &Stats::initSimStats)
85  .def("initText", &Stats::initText, py::return_value_policy::reference)
86 #if USE_HDF5
87  .def("initHDF5", &Stats::initHDF5)
88 #endif
89  .def("registerPythonStatsHandlers",
91  .def("schedStatEvent", &Stats::schedStatEvent)
92  .def("periodicStatDump", &Stats::periodicStatDump)
93  .def("updateEvents", &Stats::updateEvents)
94  .def("processResetQueue", &Stats::processResetQueue)
95  .def("processDumpQueue", &Stats::processDumpQueue)
96  .def("enable", &Stats::enable)
97  .def("enabled", &Stats::enabled)
98  .def("statsList", &Stats::statsList)
99  ;
100 
101  py::class_<Stats::Output>(m, "Output")
102  .def("begin", &Stats::Output::begin)
103  .def("end", &Stats::Output::end)
104  .def("valid", &Stats::Output::valid)
105  .def("beginGroup", &Stats::Output::beginGroup)
106  .def("endGroup", &Stats::Output::endGroup)
107  ;
108 
109  py::class_<Stats::Info, std::unique_ptr<Stats::Info, py::nodelete>>(
110  m, "Info")
111  .def_readwrite("name", &Stats::Info::name)
112  .def_readonly("desc", &Stats::Info::desc)
113  .def_readonly("id", &Stats::Info::id)
114  .def_property_readonly("flags", [](const Stats::Info &info) {
115  return (Stats::FlagsType)info.flags;
116  })
117  .def("check", &Stats::Info::check)
118  .def("baseCheck", &Stats::Info::baseCheck)
119  .def("enable", &Stats::Info::enable)
120  .def("prepare", &Stats::Info::prepare)
121  .def("reset", &Stats::Info::reset)
122  .def("zero", &Stats::Info::zero)
123  .def("visit", &Stats::Info::visit)
124  ;
125 
126  py::class_<Stats::Group, std::unique_ptr<Stats::Group, py::nodelete>>(
127  m, "Group")
128  .def("regStats", &Stats::Group::regStats)
129  .def("resetStats", &Stats::Group::resetStats)
130  .def("preDumpStats", &Stats::Group::preDumpStats)
131  .def("getStats", &Stats::Group::getStats)
132  .def("getStatGroups", &Stats::Group::getStatGroups)
133  .def("addStatGroup", &Stats::Group::addStatGroup)
134  ;
135 }
std::string name
The name of the stat.
Definition: info.hh:75
virtual void end()=0
void processDumpQueue()
Process all the callbacks in the dump callbacks queue.
Definition: statistics.cc:532
bool baseCheck() const
Definition: statistics.cc:257
int id
Definition: info.hh:91
const std::map< std::string, Group * > & getStatGroups() const
Get all child groups associated with this object.
Definition: group.cc:129
Bitfield< 0 > m
void pythonDump()
Definition: stats.cc:63
virtual bool zero() const =0
virtual void endGroup()=0
virtual void enable()
Enable the stat for use.
Definition: statistics.cc:279
virtual void beginGroup(const char *name)=0
virtual void regStats()
Callback to set stat parameters.
Definition: group.cc:66
const std::vector< Info * > & getStats() const
Get all stats associated with this object.
Definition: group.cc:135
list< Info * > & statsList()
Definition: statistics.cc:68
void initSimStats()
virtual void prepare()=0
Prepare the stat for dumping.
Declaration of Statistics objects.
void registerPythonStatsHandlers()
Register py_...
virtual void reset()=0
Reset the stat to the default state.
void enable()
Definition: statistics.cc:552
void pythonReset()
Definition: stats.cc:70
Flags flags
The formatting flags.
Definition: info.hh:81
virtual void preDumpStats()
Callback before stats are dumped.
Definition: group.cc:97
virtual void resetStats()
Callback to reset stats.
Definition: group.cc:84
void periodicStatDump(Tick period)
Schedule periodic statistics dumping.
bool enabled()
Definition: statistics.cc:546
uint16_t FlagsType
Definition: info.hh:39
virtual bool check() const =0
Check that this stat has been set up properly and is ready for use.
void processResetQueue()
Process all the callbacks in the reset callbacks queue.
Definition: statistics.cc:526
void updateEvents()
Update the events after resuming from a checkpoint.
virtual void begin()=0
void schedStatEvent(bool dump, bool reset, Tick when, Tick repeat)
Schedule statistics dumping.
Output * initText(const string &filename, bool desc)
Definition: text.cc:779
std::unique_ptr< Output > initHDF5(const std::string &filename, unsigned chunking, bool desc, bool formulas)
Definition: hdf5.cc:318
virtual bool valid() const =0
void addStatGroup(const char *name, Group *block)
Add a stat block as a child of this block.
Definition: group.cc:115
void pybind_init_stats(py::module &m_native)
Definition: stats.cc:79
virtual void visit(Output &visitor)=0
Visitor entry for outputing statistics data.
std::string desc
The description of the stat.
Definition: info.hh:79

Generated on Fri Feb 28 2020 16:26:59 for gem5 by doxygen 1.8.13