diff --git a/src/unittest/SConscript b/src/unittest/SConscript deleted file mode 100644 index 43eb16ad9b..0000000000 --- a/src/unittest/SConscript +++ /dev/null @@ -1,32 +0,0 @@ -# -*- mode:python -*- - -# Copyright (c) 2004-2005 The Regents of The University of Michigan -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer; -# redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution; -# neither the name of the copyright holders nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -Import('*') - -stattest_py = PySource('m5', 'stattestmain.py', tags='stattest') -UnitTest('stattest', 'stattest.cc', with_tag('stattest'), main=True) diff --git a/src/unittest/stattest.cc b/src/unittest/stattest.cc deleted file mode 100644 index 7e80669b87..0000000000 --- a/src/unittest/stattest.cc +++ /dev/null @@ -1,692 +0,0 @@ -/* - * Copyright (c) 2003-2005 The Regents of The University of Michigan - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer; - * redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution; - * neither the name of the copyright holders nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "pybind11/pybind11.h" - -#include -#include -#include - -#include "base/cprintf.hh" -#include "base/logging.hh" -#include "base/statistics.hh" -#include "base/types.hh" -#include "sim/core.hh" -#include "sim/eventq.hh" -#include "sim/init.hh" -#include "sim/stat_control.hh" - -namespace py = pybind11; - -// override the default main() code for this unittest -const char *m5MainCommands[] = { - "import m5.stattestmain", - "m5.stattestmain.main()", - 0 // sentinel is required -}; - -using namespace Stats; - -double testfunc(); -struct StatTest; -StatTest & __stattest(); - - -double -testfunc() -{ - return 9.8; -} - -class TestClass -{ - public: - double operator()() { return 9.7; } -}; - -struct StatTest -{ - Scalar s1; - Scalar s2; - Average s3; - Scalar s4; - Vector s5; - Distribution s6; - Vector s7; - AverageVector s8; - StandardDeviation s9; - AverageDeviation s10; - Scalar s11; - Distribution s12; - VectorDistribution s13; - VectorStandardDeviation s14; - VectorAverageDeviation s15; - Vector2d s16; - Value s17; - Value s18; - Value s19; - Histogram h01; - Histogram h02; - Histogram h03; - Histogram h04; - Histogram h05; - Histogram h06; - Histogram h07; - Histogram h08; - Histogram h09; - Histogram h10; - Histogram h11; - Histogram h12; - SparseHistogram sh1; - - Vector s20; - Vector s21; - - Formula f1; - Formula f2; - Formula f3; - Formula f4; - Formula f5; - Formula f6; - - void run(); - void init(); -}; - -StatTest & -__stattest() -{ - static StatTest st; - return st; -} - -void -StatTest::init() -{ - EventQueue *q = getEventQueue(0); - curEventQueue(q); - - cprintf("sizeof(Scalar) = %d\n", sizeof(Scalar)); - cprintf("sizeof(Vector) = %d\n", sizeof(Vector)); - cprintf("sizeof(Distribution) = %d\n", sizeof(Distribution)); - - s1 - .name("Stat01") - .desc("this is statistic 1") - ; - - s2 - .name("Stat02") - .desc("this is statistic 2") - .prereq(s11) - ; - - s3 - .name("Stat03") - .desc("this is statistic 3") - .prereq(f5) - ; - - s4 - .name("Stat04") - .desc("this is statistic 4") - .prereq(s11) - ; - - s5 - .init(5) - .name("Stat05") - .desc("this is statistic 5") - .prereq(s11) - .subname(0, "foo1") - .subname(1, "foo2") - .subname(2, "foo3") - .subname(3, "foo4") - .subname(4, "foo5") - ; - - s6 - .init(1, 100, 13) - .name("Stat06") - .desc("this is statistic 6") - .prereq(s11) - ; - - s7 - .init(7) - .name("Stat07") - .desc("this is statistic 7") - .precision(1) - .flags(pdf | total) - .prereq(s11) - ; - - s8 - .init(10) - .name("Stat08") - .desc("this is statistic 8") - .precision(2) - .prereq(s11) - .subname(4, "blarg") - ; - - s9 - .name("Stat09") - .desc("this is statistic 9") - .precision(4) - .prereq(s11) - ; - - s10 - .name("Stat10") - .desc("this is statistic 10") - .prereq(s11) - ; - - s12 - .init(1, 100, 13) - .name("Stat12") - .desc("this is statistic 12") - ; - - s13 - .init(4, 0, 99, 10) - .name("Stat13") - .desc("this is statistic 13") - ; - - s14 - .init(9) - .name("Stat14") - .desc("this is statistic 14") - ; - - s15 - .init(10) - .name("Stat15") - .desc("this is statistic 15") - ; - - s16 - .init(2, 9) - .name("Stat16") - .desc("this is statistic 16") - .flags(total) - .subname(0, "sub0") - .subname(1, "sub1") - .ysubname(0, "y0") - .ysubname(1, "y1") - ; - - s17 - .functor(testfunc) - .name("Stat17") - .desc("this is stat 17") - ; - - TestClass testclass; - s18 - .functor(testclass) - .name("Stat18") - .desc("this is stat 18") - ; - - s19 - .functor([]() { return 0; }) - .name("Stat19") - .desc("this is stat 19") - ; - - h01 - .init(11) - .name("Histogram01") - .desc("this is histogram 1") - ; - - h02 - .init(10) - .name("Histogram02") - .desc("this is histogram 2") - ; - - h03 - .init(11) - .name("Histogram03") - .desc("this is histogram 3") - ; - - h04 - .init(10) - .name("Histogram04") - .desc("this is histogram 4") - ; - - h05 - .init(11) - .name("Histogram05") - .desc("this is histogram 5") - ; - - h06 - .init(10) - .name("Histogram06") - .desc("this is histogram 6") - ; - - h07 - .init(11) - .name("Histogram07") - .desc("this is histogram 7") - ; - - h08 - .init(10) - .name("Histogram08") - .desc("this is histogram 8") - ; - - h09 - .init(11) - .name("Histogram09") - .desc("this is histogram 9") - ; - - h10 - .init(10) - .name("Histogram10") - .desc("this is histogram 10") - ; - - h11 - .init(11) - .name("Histogram11") - .desc("this is histogram 11") - ; - - h12 - .init(10) - .name("Histogram12") - .desc("this is histogram 12") - ; - - sh1 - .init(0) - .name("SparseHistogram1") - .desc("this is sparse histogram 1") - ; - - f1 - .name("Formula1") - .desc("this is formula 1") - .prereq(s11) - ; - - f2 - .name("Formula2") - .desc("this is formula 2") - .prereq(s11) - .precision(1) - ; - - f3 - .name("Formula3") - .desc("this is formula 3") - .prereq(s11) - .subname(0, "bar1") - .subname(1, "bar2") - .subname(2, "bar3") - .subname(3, "bar4") - .subname(4, "bar5") - ; - - f4 - .name("Formula4") - .desc("this is formula 4") - ; - - s20 - .init(2) - .name("Stat20") - .desc("this is statistic 20 for vector op testing") - .flags(total | nozero | nonan) - ; - s21 - .init(2) - .name("Stat21") - .desc("this is statistic 21 for vector op testing") - .flags(total | nozero | nonan) - ; - - f6 - .name("vector_op_test_formula") - .desc("The total stat should equal 1") - .flags(total |nozero |nonan) - ; - - f1 = s1 + s2; - f2 = (-s1) / (-s2) * (-s3 + 100ULL + s4); - f3 = sum(s5) * s7; - f4 += constant(10.0); - f4 += s5[3]; - f5 = constant(1); - f6 = s20/s21; -} - -void -StatTest::run() -{ - s16[1][0] = 1; - s16[0][1] = 3; - s16[0][0] = 2; - s16[1][1] = 9; - s16[1][1] += 9; - s16[1][8] += 8; - s16[1][7] += 7; - s16[1][6] += 6; - s16[1][5] += 5; - s16[1][4] += 4; - - s11 = 1; - s3 = 9; - s8[3] = 9; - s15[0].sample(1234); - s15[1].sample(1234); - s15[2].sample(1234); - s15[3].sample(1234); - s15[4].sample(1234); - s15[5].sample(1234); - s15[6].sample(1234); - s15[7].sample(1234); - s15[8].sample(1234); - s15[9].sample(1234); - - s10.sample(1000000000); - curEventQueue()->setCurTick(curTick() + 1000000ULL); - s10.sample(100000); - s10.sample(100000); - s10.sample(100000); - s10.sample(100000); - s10.sample(100000); - s10.sample(100000); - s10.sample(100000); - s10.sample(100000); - s10.sample(100000); - s10.sample(100000); - s10.sample(100000); - s10.sample(100000); - s10.sample(100000); - s13[0].sample(12); - s13[1].sample(29); - s13[2].sample(12); - s13[3].sample(29); - s13[0].sample(42); - s13[1].sample(29); - s13[2].sample(42); - s13[3].sample(32); - s13[0].sample(52); - s13[1].sample(49); - s13[2].sample(42); - s13[3].sample(25); - s13[0].sample(32); - s13[1].sample(49); - s13[2].sample(22); - s13[3].sample(49); - s13[0].sample(62); - s13[1].sample(99); - s13[2].sample(72); - s13[3].sample(23); - s13[0].sample(52); - s13[1].sample(78); - s13[2].sample(69); - s13[3].sample(49); - - s14[0].sample(1234); - s14[1].sample(4134); - s14[4].sample(1213); - s14[3].sample(1124); - s14[2].sample(1243); - s14[7].sample(1244); - s14[4].sample(7234); - s14[2].sample(9234); - s14[3].sample(1764); - s14[7].sample(1564); - s14[3].sample(3234); - s14[1].sample(2234); - s14[5].sample(1234); - s14[2].sample(4334); - s14[2].sample(1234); - s14[4].sample(4334); - s14[6].sample(1234); - s14[8].sample(8734); - s14[1].sample(5234); - s14[3].sample(8234); - s14[7].sample(5234); - s14[4].sample(4434); - s14[3].sample(7234); - s14[2].sample(1934); - s14[1].sample(9234); - s14[5].sample(5634); - s14[3].sample(1264); - s14[7].sample(5223); - s14[0].sample(1234); - s14[0].sample(5434); - s14[3].sample(8634); - s14[1].sample(1234); - - - s15[0].sample(1234); - s15[1].sample(4134); - curEventQueue()->setCurTick(curTick() + 1000000ULL); - s15[4].sample(1213); - curEventQueue()->setCurTick(curTick() + 1000000ULL); - s15[3].sample(1124); - curEventQueue()->setCurTick(curTick() + 1000000ULL); - s15[2].sample(1243); - curEventQueue()->setCurTick(curTick() + 1000000ULL); - s15[7].sample(1244); - curEventQueue()->setCurTick(curTick() + 1000000ULL); - s15[4].sample(7234); - s15[2].sample(9234); - s15[3].sample(1764); - s15[7].sample(1564); - s15[3].sample(3234); - s15[1].sample(2234); - curEventQueue()->setCurTick(curTick() + 1000000ULL); - s15[5].sample(1234); - curEventQueue()->setCurTick(curTick() + 1000000ULL); - s15[9].sample(4334); - curEventQueue()->setCurTick(curTick() + 1000000ULL); - s15[2].sample(1234); - curEventQueue()->setCurTick(curTick() + 1000000ULL); - s15[4].sample(4334); - s15[6].sample(1234); - curEventQueue()->setCurTick(curTick() + 1000000ULL); - s15[8].sample(8734); - curEventQueue()->setCurTick(curTick() + 1000000ULL); - s15[1].sample(5234); - curEventQueue()->setCurTick(curTick() + 1000000ULL); - s15[3].sample(8234); - curEventQueue()->setCurTick(curTick() + 1000000ULL); - s15[7].sample(5234); - s15[4].sample(4434); - s15[3].sample(7234); - s15[2].sample(1934); - s15[1].sample(9234); - curEventQueue()->setCurTick(curTick() + 1000000ULL); - s15[5].sample(5634); - s15[3].sample(1264); - s15[7].sample(5223); - s15[0].sample(1234); - s15[0].sample(5434); - s15[3].sample(8634); - curEventQueue()->setCurTick(curTick() + 1000000ULL); - s15[1].sample(1234); - - s4 = curTick(); - - s8[3] = 99999; - - s3 = 12; - s3++; - curEventQueue()->setCurTick(curTick() + 9); - - s1 = 9; - s1 += 9; - s1 -= 11; - s1++; - ++s1; - s1--; - --s1; - - s2 = 9; - - s5[0] += 1; - s5[1] += 2; - s5[2] += 3; - s5[3] += 4; - s5[4] += 5; - - s7[0] = 10; - s7[1] = 20; - s7[2] = 30; - s7[3] = 40; - s7[4] = 50; - s7[5] = 60; - s7[6] = 70; - - s6.sample(0); - s6.sample(1); - s6.sample(2); - s6.sample(3); - s6.sample(4); - s6.sample(5); - s6.sample(6); - s6.sample(7); - s6.sample(8); - s6.sample(9); - - s6.sample(10); - s6.sample(10); - s6.sample(10); - s6.sample(10); - s6.sample(10); - s6.sample(10); - s6.sample(10); - s6.sample(10); - s6.sample(11); - s6.sample(19); - s6.sample(20); - s6.sample(20); - s6.sample(21); - s6.sample(21); - s6.sample(31); - s6.sample(98); - s6.sample(99); - s6.sample(99); - s6.sample(99); - - s7[0] = 700; - s7[1] = 600; - s7[2] = 500; - s7[3] = 400; - s7[4] = 300; - s7[5] = 200; - s7[6] = 100; - - s9.sample(100); - s9.sample(100); - s9.sample(100); - s9.sample(100); - s9.sample(10); - s9.sample(10); - s9.sample(10); - s9.sample(10); - s9.sample(10); - - curEventQueue()->setCurTick(curTick() + 9); - s4 = curTick(); - s6.sample(100); - s6.sample(100); - s6.sample(100); - s6.sample(101); - s6.sample(102); - - s12.sample(100); - for (int i = 0; i < 100; i++) { - h01.sample(i); - h02.sample(i); - } - - for (int i = -100; i < 100; i++) { - h03.sample(i); - h04.sample(i); - } - - for (int i = -100; i < 1000; i++) { - h05.sample(i); - h06.sample(i); - } - - for (int i = 100; i >= -1000; i--) { - h07.sample(i); - h08.sample(i); - } - - for (int i = 0; i <= 1023; i++) { - h09.sample(i); - h10.sample(i); - } - - for (int i = -1024; i <= 1023; i++) { - h11.sample(i); - h12.sample(i); - } - - for (int i = 0; i < 1000; i++) { - sh1.sample(random() % 10000); - } - - s20[0] = 1; - s20[1] = 100000; - s21[0] = 100000; - s21[1] = 1; - -} - -static void -stattest_init_pybind(py::module_ &m_internal) -{ - py::module_ m = m_internal.def_submodule("stattest"); - - m - .def("stattest_init", []() { __stattest().init(); }) - .def("stattest_run", []() { __stattest().run(); }) - ; -} - -static EmbeddedPyBind embed_("stattest", stattest_init_pybind); diff --git a/src/unittest/stattestmain.py b/src/unittest/stattestmain.py deleted file mode 100644 index 60b041cd36..0000000000 --- a/src/unittest/stattestmain.py +++ /dev/null @@ -1,19 +0,0 @@ -def main(): - from _m5.stattest import stattest_init, stattest_run - import m5.stats - - stattest_init() - - # Initialize the global statistics - m5.stats.initSimStats() - m5.stats.addStatVisitor("cout") - - # We're done registering statistics. Enable the stats package now. - m5.stats.enable() - - # Reset to put the stats in a consistent state. - m5.stats.reset() - - stattest_run() - - m5.stats.dump()