From 782fb42992076dfd88ffb7d0c4e689d1bb1220d8 Mon Sep 17 00:00:00 2001 From: Steve Reinhardt Date: Fri, 2 Apr 2004 22:57:08 -0800 Subject: Basic cleanup pass to get rid of a few things that made the Python configuration unnecessarily awkward. Biggest changes are: - External and internal object names now match in all cases. The macros still allow them to be different; the only reason I didn't get rid of that is that the macros themselves should be going away soon. In the few conflicting cases, I sometimes renamed the C++ object and sometimes renamed the config object. The latter sets of substitions are: s/BaseBus/Bus/; s/MemoryObject/FunctionalMemory/; s/MemoryControl/MemoryController/; s/FUPool/FuncUnitPool/; - SamplingCPU is temporarily broken... we need to change the model of how this works in the .ini file. Having it as a CPU proxy is really awkward. arch/alpha/alpha_memory.cc: arch/alpha/alpha_memory.hh: cpu/simple_cpu/simple_cpu.cc: sim/process.cc: Rename objects to match config name. cpu/base_cpu.cc: Uncomment SimObject define since SamplingCPU no longer does this for us. dev/ethertap.cc: Use unsigned instead of uint16_t for params. kern/tru64/tru64_system.cc: Use unsigned instead of uint64_t for init_param param. test/paramtest.cc: Fix old SimObjectParam. --HG-- extra : convert_revision : 378ebbc6a71ad0694501d09979a44d111a59e8dc --- test/paramtest.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'test') diff --git a/test/paramtest.cc b/test/paramtest.cc index d63a3aad4..ad0481a96 100644 --- a/test/paramtest.cc +++ b/test/paramtest.cc @@ -57,8 +57,8 @@ BEGIN_DECLARE_SIM_OBJECT_PARAMS(ParamTest) VectorParam vecstring; Param boolparam; VectorParam vecbool; - SimObjectParam memobj; - SimObjectVectorParam vecmemobj; + SimObjectParam memobj; + SimObjectVectorParam vecmemobj; SimpleEnumParam enum1; MappedEnumParam enum2; SimpleEnumVectorParam vecenum1; -- cgit v1.2.3 From d4069233eb8cc875aa443cb7c6a16b748e3acc42 Mon Sep 17 00:00:00 2001 From: Steve Reinhardt Date: Tue, 6 Apr 2004 10:02:00 -0700 Subject: Beta version of Python configuration tool. Generates .ini files from Python script description. arch/alpha/alpha_memory.cc: dev/io_device.cc: Add DEFINE_SIM_OBJECT_CLASS_NAME for intermediate SimObjects. test/paramtest.cc: Fix stupid spelling. --HG-- extra : convert_revision : dc020208cb6507c1afb1ed771a7218daba678e09 --- test/paramtest.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'test') diff --git a/test/paramtest.cc b/test/paramtest.cc index ad0481a96..2efe23c83 100644 --- a/test/paramtest.cc +++ b/test/paramtest.cc @@ -76,7 +76,7 @@ const EnumParamMap enum2_map[] = { "ten", 10 }, { "twenty", 20 }, { "thirty", 30 }, - { "fourty", 40 } + { "forty", 40 } }; BEGIN_INIT_SIM_OBJECT_PARAMS(ParamTest) -- cgit v1.2.3 From 25a358983a31167e048b19dd21bc1ec872890a74 Mon Sep 17 00:00:00 2001 From: Nathan Binkert Date: Tue, 4 May 2004 17:01:00 -0400 Subject: Major stats package cleanup Add support for generic visitors for stats and use them to implement independent output functions. Support for mysql output and some initial code for hacking on mysql output with python arch/alpha/pseudo_inst.cc: base/hybrid_pred.cc: base/hybrid_pred.hh: base/sat_counter.cc: base/sat_counter.hh: cpu/simple_cpu/simple_cpu.cc: kern/tru64/tru64_events.cc: sim/main.cc: sim/process.cc: sim/process.hh: sim/sim_events.cc: sim/sim_object.cc: sim/system.hh: update for changes in stats package base/statistics.cc: move the python output code to base/stats/puthon.(cc|hh) and reimplement it as a visitor. move the text output code to base/stats/text.(cc|hh) and reimplement it as a visitor. move the database stuff into base/stats/statdb.(cc|hh) and get rid of the class. Put everything as globals in the Statistics::Database namespace. allocate unique ids for all stats. directly implement the check routine and get rid of the various dumping routines since they're now in separate files. make sure that no two stats have the same name clean up some loops base/statistics.hh: major changes to the statistics package again lots of code was factored out of statistics.hh into several separate files in base/stats/ (this will continue) There are now two Stat package types Result and Counter that are specified to allow the user to keep the counted type separate from the result type. They are currently both doubles but that's an experiment. There is no more per stat ability to set the type. Statistics::Counter is not the same as Counter! Implement a visitor for statistics output so that new output types can be implemented independently from the stats package itself. Add a unique id to each stat so that it can be used to keep track of stats more simply. This number can also be used in debugging problems with stats. Tweak the bucket size stuff a bit to make it work better. fixed VectorDist size bug cpu/memtest/memtest.cc: Fix up for changes in stats package Don't use value() since it doesn't work with binning. If you want a number as a stat, and to use it in the program itself, you really want two separate variables, one that's a stat, and one that's not. cpu/memtest/memtest.hh: Fix up for changes in stats package test/Makefile: Try to build stuff now that directories matter test/stattest.cc: test all new output types choose which one with command line options --HG-- extra : convert_revision : e3a3f5f0828c67c0e2de415d936ad240adaddc89 --- test/Makefile | 94 ++++++++++++++++++++++---------------------------------- test/stattest.cc | 81 +++++++++++++++++++++++++++++++++++++++--------- 2 files changed, 104 insertions(+), 71 deletions(-) (limited to 'test') diff --git a/test/Makefile b/test/Makefile index d62dba64a..bf4200ba3 100644 --- a/test/Makefile +++ b/test/Makefile @@ -5,81 +5,61 @@ CXX?= g++ CURDIR?= $(shell /bin/pwd) SRCDIR?= .. -TARGET?= alpha - -TEST_SRCDIR?= $(SRCDIR)/test -ARCH_SRCDIR?= $(SRCDIR)/arch/$(TARGET) -BASE_SRCDIR?= $(SRCDIR)/base -SIM_SRCDIR?= $(SRCDIR)/sim -CACHE_SRCDIR?= $(SRCDIR)/sim/cache -OLD_SRCDIR= $(SRCDIR)/old - -vpath % $(TEST_SRCDIR) -vpath % $(BASE_SRCDIR) -vpath % $(SIM_SRCDIR) -vpath % $(CACHE_SRCDIR) -vpath % $(OLD_SRCDIR) CCFLAGS= -g -O0 -MMD -I. -I$(SRCDIR) -I- -DTRACING_ON=0 +MYSQL= -I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient + +VPATH=$(SRCDIR) default: @echo "You must specify a target" -targetarch: - ln -s ../arch/$(TARGET) targetarch - -bitvectest: bitvectest.o - $(CXX) $(LFLAGS) -o $@ $^ +bitvectest: test/bitvectest.cc + $(CXX) $(CCFLAGS) -o $@ $^ -circletest: circletest.o circlebuf.o - $(CXX) $(LFLAGS) -o $@ $^ +circletest: test/circletest.cc base/circlebuf.cc + $(CXX) $(CCFLAGS) -o $@ $^ -cprintftest: cprintftest.o cprintf.o - $(CXX) $(LFLAGS) -o $@ $^ +cprintftest: test/cprintftest.cc base/cprintf.cc + $(CXX) $(CCFLAGS) -o $@ $^ -initest: initest.o str.o inifile.o cprintf.o - $(CXX) $(LFLAGS) -o $@ $^ +initest: test/initest.cc base/str.cc base/inifile.cc base/cprintf.cc + $(CXX) $(CCFLAGS) -o $@ $^ -lrutest: lru_test.o - $(CXX) $(LFLAGS) -o $@ $^ +lrutest: test/lru_test.cc + $(CXX) $(CCFLAGS) -o $@ $^ -nmtest: nmtest.o object_file.o symtab.o misc.o str.o - $(CXX) $(LFLAGS) -o $@ $^ +nmtest: test/nmtest.cc base/object_file.cc base/symtab.cc base/misc.cc base/str.cc + $(CXX) $(CCFLAGS) -o $@ $^ -offtest: offtest.o - $(CXX) $(LFLAGS) -o $@ $^ +offtest: test/offtest.cc + $(CXX) $(CCFLAGS) -o $@ $^ -rangetest: rangetest.o range.o str.o - $(CXX) $(LFLAGS) -o $@ $^ +rangetest: test/rangetest.cc base/range.cc base/str.cc + $(CXX) $(CCFLAGS) -o $@ $^ -stattest: cprintf.o hostinfo.o misc.o python.o statistics.o stattest.o \ - str.o time.o - $(CXX) $(LFLAGS) -o $@ $^ +STATTEST+= base/cprintf.cc base/hostinfo.cc base/misc.cc base/mysql.cc +STATTEST+= base/python.cc base/str.cc base/time.cc +STATTEST+= base/statistics.cc base/stats/mysql.cc base/stats/python.cc +STATTEST+= base/stats/statdb.cc base/stats/text.cc base/stats/visit.cc +STATTEST+= test/stattest.cc +stattest: $(STATTEST) + $(CXX) $(CCFLAGS) $(MYSQL) -o $@ $^ -strnumtest: strnumtest.o str.o - $(CXX) $(LFLAGS) -o $@ $^ +strnumtest: test/strnumtest.cc base/str.cc + $(CXX) $(CCFLAGS) -o $@ $^ -symtest: misc.o symtest.o symtab.o str.o - $(CXX) $(LFLAGS) -o $@ $^ +symtest: test/symtest.cc base/misc.cc base/symtab.cc base/str.cc + $(CXX) $(CCFLAGS) -o $@ $^ -tokentest: tokentest.o str.o - $(CXX) $(LFLAGS) -o $@ $^ +tokentest: test/tokentest.cc base/str.cc + $(CXX) $(CCFLAGS) -o $@ $^ -tracetest: tracetest.o trace.o trace_flags.o cprintf.o str.o misc.o - $(CXX) $(LFLAGS) -o $@ $^ +TRACE+=test/tracetest.cc base/trace.cc base/trace_flags.cc base/cprintf.cc +TRACE+=base/str.cc base/misc.cc +tracetest: $(TRACE) + $(CXX) $(CCFLAGS) -o $@ $^ clean: - @rm -f *.o *.d *test *~ .#* *.core core + @rm -f *test *~ .#* *.core core .PHONY: clean - -# C++ Compilation -%.o: %.cc - @echo '$(CXX) $(CCFLAGS) -c $(notdir $<) -o $@' - @$(CXX) $(CCFLAGS) -c $< -o $@ - -# C Compilation -%.o: %.c - @echo '$(CC) $(CCFLAGS) -c $(notdir $<) -o $@' - @$(CC) $(CCFLAGS) -c $< -o $@ - --include *.d diff --git a/test/stattest.cc b/test/stattest.cc index 8dd8eeb8e..7bf355c0e 100644 --- a/test/stattest.cc +++ b/test/stattest.cc @@ -35,6 +35,9 @@ #include "base/cprintf.hh" #include "base/misc.hh" #include "base/statistics.hh" +#include "base/stats/text.hh" +#include "base/stats/python.hh" +#include "base/stats/mysql.hh" #include "sim/host.hh" using namespace std; @@ -46,14 +49,14 @@ Tick ticksPerSecond = ULL(2000000000); Scalar<> s1; Scalar<> s2; Average<> s3; -Scalar s4; -Vector s5; -Distribution s6; -Vector s7; +Scalar s4; +Vector s5; +Distribution s6; +Vector s7; AverageVector<> s8; StandardDeviation<> s9; AverageDeviation<> s10; -Scalar s11; +Scalar<> s11; Distribution<> s12; VectorDistribution<> s13; VectorStandardDeviation<> s14; @@ -71,6 +74,8 @@ Formula f7; MainBin bin1("bin1"); MainBin bin2("bin2"); +ostream *outputStream = &cout; + double testfunc() { @@ -89,26 +94,57 @@ usage() { panic("incorrect usage.\n" "usage:\n" - "\t%s [-v]\n", progname); + "\t%s [-p ] [-t [-c] [-d]]\n", progname); } int main(int argc, char *argv[]) { + bool descriptions = false; + bool compat = false; + bool text = false; + string pyfile; + string mysql_name; + string mysql_host; + string mysql_user = "binkertn"; + string mysql_passwd; + char c; progname = argv[0]; - PrintDescriptions = false; - while ((c = getopt(argc, argv, "v")) != -1) { - cprintf("c == %c\n", c); + while ((c = getopt(argc, argv, "cdh:P:p:s:tu:")) != -1) { switch (c) { - case 'v': - PrintDescriptions = true; + case 'c': + compat = true; + break; + case 'd': + descriptions = true; + break; + case 'h': + mysql_host = optarg; + break; + case 'P': + mysql_passwd = optarg; + break; + case 'p': + pyfile = optarg; + break; + case 's': + mysql_name = optarg; + break; + case 't': + text = true; + break; + case 'u': + mysql_user = optarg; break; default: usage(); } } + if (!text && (compat || descriptions)) + usage(); + s5.init(5); s6.init(1, 100, 13); s7.init(7); @@ -214,6 +250,8 @@ main(int argc, char *argv[]) .flags(total) .subname(0, "sub0") .subname(1, "sub1") + .ysubname(0, "y0") + .ysubname(1, "y1") ; f1 @@ -509,9 +547,24 @@ main(int argc, char *argv[]) s12.sample(100); -// dump(cout, mode_simplescalar); - python_start("/tmp/stats.py"); - python_dump("stattest", "all"); + if (text) { + Text out(cout); + out.descriptions = descriptions; + out.compat = compat; + out(); + } + + if (!pyfile.empty()) { + Python out(pyfile); + out(); + } + + if (!mysql_name.empty()) { + MySql out; + out.connect(mysql_host, mysql_user, mysql_passwd, "m5stats", + mysql_name, "test"); + out(); + } return 0; } -- cgit v1.2.3