Re: [gem5-dev] Review Request 3740: commit 8606171b2c2e65d0b9931ccb4bd2ebc533c55d60
--- This is an automatically generated e-mail. To reply, visit: http://reviews.gem5.org/r/3740/ --- (Updated Nov. 29, 2016, 11:54 p.m.) Review request for Default. Repository: gem5 Description (updated) --- Changeset 11708:02ce0fdd4929 --- commit 8606171b2c2e65d0b9931ccb4bd2ebc533c55d60 Author: Rahul ThakurDate: Thu Oct 27 20:36:16 2016 -0700 mem: Refactor CommMonitor stats, add basic atomic mode stats Change-Id: I978f1155873b3882e16d9cd74e86400efd9c5e3b Diffs (updated) - src/mem/comm_monitor.hh 1d085f66c4ca src/mem/comm_monitor.cc 1d085f66c4ca Diff: http://reviews.gem5.org/r/3740/diff/ Testing --- Thanks, Rahul Thakur ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev
[gem5-dev] Learning gem5 Tutorial in conjunction with HPCA 2017
Hello, We will be holding a Learning gem5 Tutorial and a gem5 coding sprint at HPCA 2017 on February 5th in Austin, TX. The morning will consist of a "Learning gem5" half-day course. In the afternoon, we invite all gem5 developers senior, junior, and new developers to a "coding sprint." More information can be found on the website: http://learning.gem5.org/tutorial/. Morning: Learning gem5 tutorial is a half-day course on getting started with gem5. The goal is to leave the course with a solid foundation so you can be more productive using gem5 to explore your research aims. The main audience is first or second year computer architecture students who are interested in using gem5 for their graduate studies. Anyone who wants to learn basic gem5 best-practices are encouraged to attend. Afternoon: During the gem5 coding sprint we will have a number of small projects that can be completed in an afternoon for developers to tackle. These are perfect opportunities to get started giving back to the gem5 community. We will pair senior developers with new contributors so you can get a feel for how the development community functions. Everyone is invited to participate. More information can be found on the website for Learning gem5 ( http://learning.gem5.org). Feel free to email me any questions ( ja...@lowepower.com). Hope to see you in Austin! Cheers, Jason -- Jason Lowe-Power PhD Student University of Wisconsin-Madison, Department of Computer Sciences http://cs.wisc.edu/~powerjg/ ja...@lowepower.com ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev
Re: [gem5-dev] Status of RISC-V patches
Hi Andreas, I agree with this sentiment overall as I think our collection of regressions currently are pretty ad-hoc; they are basically just the benchmarks that people want to ensure run for their in gem5, i.e, SPEC etc. I think smaller LLVM unit tests would provide more directed testing, similar or better coverage, less maintenance, and a suitable license. Just to clarify when you say 'LLVM-specific' tests, are you referring to the unit/regression tests: http://llvm.org/docs/TestingGuide.html#regression-tests ? We are also thinking of using similar HCC tests (AMD's LLVM-based compiler for heterogeneous accelerators): https://github.com/RadeonOpenCompute/hcc/tree/clang_tot_upgrade/tests/Unit for our GPU model in gem5. For testing, I'm assuming we're going to want something like Jenkins going forward. The question is where will such a server live, and will it be accessible to the public? -Tony -Original Message- From: gem5-dev [mailto:gem5-dev-boun...@gem5.org] On Behalf Of Andreas Hansson Sent: Monday, November 14, 2016 2:40 PM To: gem5 Developer List; Jason Lowe-Power Subject: Re: [gem5-dev] Status of RISC-V patches Hi all, Merely a thought when it comes to adding tests: I would suggest we ditch all proprietary/closed-source tests and move in the direction of something that is open and maintained. My proposal would be to adopt a few of the tests from the llvm test suite. There are both very short LLVM-specific tests that are BSD licensed, and a bunch of smaller “apps” that maintain their original license. It would be great if we could identify a few relevant tests from the tests suite and start going in that direction. The source for the tests along with build scripts etc should probably be in a repo on their own. What do you think? Andreas On 28/10/2016, 22:12, "gem5-dev on behalf of Alec Roelke" wrote: >I think I get it. Thanks for your help! > >It looks like I won't be able to make use of any tests other than >00.hello, because either they're multithreaded or pieces of them are >missing. I'm going to try to put my instruction tests into >02.insttest. > >On Fri, Oct 28, 2016 at 11:01 AM, Jason Lowe-Power > >wrote: > >> Hi Alec, >> >> Our regression testing infrastructure is confusing, to say the least. >> Honestly, it would take me at least a few hours to figure out how to >>add new regressions again. But here's a little information that >>hopefully will help you save some time. >> >> You need to put reference outputs in tests/quick/se/> NAME>/ref/riscv/linux/. >> >> The config files are in tests/configs. One of these files (without >>the >> .py) is what goes in above. The can be >>anything. Using some of the same tests that are there make sense, but >>you may want to add other RISC-V specific tests as well. >> >> You *may* be able to use the config files in tests/configs without >>changes, but maybe not. I'm not sure. You'll probably be able to use >>some but not others. >> >> Getting scons to run your regressions is totally black magic to me. >>Here's >> a couple of things I've learned, though. >> 1) You should delete the build directory (e.g., build/RISCV/tests/ >> debug/quick/se/00.hello/riscv/) every time you want to re-run the >>regression. >> 2) The regression won't even try to run if you don't have dummy files >>in tests/quick/se//ref/riscv/linux/. >> >> For the missing stats/changed stats, since this is first time you're >>running the RISC-V stats, I would totally ignore all of that >>information. I would just look at the output (simout/simerr) and make >>sure it seems reasonable (e.g., no errors). If you have an idea of a >>stat that you expect to see (e.g., floating point ops > 0) then you >>could look at the stats file too to make sure it's what you expect. >> >> There's no specific configuration you should be using. For the most >>part, all of the tests are just functional tests. The configurations >>for the system are specified in the tests/configs (>NAME>) Python files. >> >> Hopefully this will help you get started. Let us know if you have >> more questions. Maybe someone with more regression tester experience >> will be able to help more. >> >> Jason >> >> On Thu, Oct 27, 2016 at 8:23 PM Alec Roelke wrote: >> >>> I'll start with converting as many from "quick" as I can. If/when I >>>end up creating my own, is there a convention for what they should >>>be named and where they should go? >>> >>> Also, I'm having a bit of a problem with just 00.hello. I compiled >>>the source in tests/test-progs/hello/src into >>>tests/test-progs/hello/bin/riscv/linux >>> (for some reason mine disappeared), and then created >>>tests/quick/se/00.hello/ref/riscv/linux/simple-atomic. Then I >>>compiled and ran build/RISCV/gem5.fast, configuring for the atomic >>>CPU and
[gem5-dev] changeset in gem5: dev: Fix buffer length when unserializing an ...
changeset e832056deaed in /z/repo/gem5 details: http://repo.gem5.org/gem5?cmd=changeset;node=e832056deaed description: dev: Fix buffer length when unserializing an eth pkt Changeset 11701 only serialized the useful portion of of an ethernet packets' payload. However, the device models expect each ethernet packet to contain a 16KB buffer, even if there is no data in it. This patch adds a 'bufLength' field to EthPacketData so the original size of the packet buffer can always be unserialized. Reported-by: Gabor Dozsadiffstat: src/dev/net/etherpkt.cc | 21 + src/dev/net/etherpkt.hh | 9 +++-- src/dev/net/i8254xGBe.cc | 2 +- src/dev/net/ns_gige.cc | 2 +- src/dev/net/sinic.cc | 2 +- 5 files changed, 27 insertions(+), 9 deletions(-) diffs (104 lines): diff -r 09f8fda798bc -r e832056deaed src/dev/net/etherpkt.cc --- a/src/dev/net/etherpkt.cc Mon Nov 28 12:44:54 2016 -0500 +++ b/src/dev/net/etherpkt.cc Tue Nov 29 13:04:45 2016 -0500 @@ -42,6 +42,7 @@ EthPacketData::serialize(const string , CheckpointOut ) const { paramOut(cp, base + ".simLength", simLength); +paramOut(cp, base + ".bufLength", bufLength); paramOut(cp, base + ".length", length); arrayParamOut(cp, base + ".data", data, length); } @@ -50,11 +51,23 @@ EthPacketData::unserialize(const string , CheckpointIn ) { paramIn(cp, base + ".length", length); -if (length) { -assert(data == nullptr); -data = new uint8_t[length]; -arrayParamIn(cp, base + ".data", data, length); +unsigned chkpt_buf_length; +if (optParamIn(cp, base + ".bufLength", chkpt_buf_length)) { +// If bufLength is in the checkpoint, make sure that the current buffer +// is unallocated or that the checkpoint requested size is smaller than +// the current buffer. +assert(!data || chkpt_buf_length <= bufLength); +bufLength = chkpt_buf_length; +} else { +// If bufLength is not in the checkpoint, try to use the existing +// buffer or use length to size the buffer +if (!data) +bufLength = length; } +assert(length <= bufLength); +if (!data) +data = new uint8_t[bufLength]; +arrayParamIn(cp, base + ".data", data, length); if (!optParamIn(cp, base + ".simLength", simLength)) simLength = length; } diff -r 09f8fda798bc -r e832056deaed src/dev/net/etherpkt.hh --- a/src/dev/net/etherpkt.hh Mon Nov 28 12:44:54 2016 -0500 +++ b/src/dev/net/etherpkt.hh Tue Nov 29 13:04:45 2016 -0500 @@ -55,6 +55,11 @@ uint8_t *data; /** + * Total size of the allocated data buffer. + */ +unsigned bufLength; + +/** * Amount of space occupied by the payload in the data buffer */ unsigned length; @@ -69,11 +74,11 @@ unsigned simLength; EthPacketData() -: data(nullptr), length(0), simLength(0) +: data(nullptr), bufLength(0), length(0), simLength(0) { } explicit EthPacketData(unsigned size) -: data(new uint8_t[size]), length(0), simLength(0) +: data(new uint8_t[size]), bufLength(size), length(0), simLength(0) { } ~EthPacketData() { if (data) delete [] data; } diff -r 09f8fda798bc -r e832056deaed src/dev/net/i8254xGBe.cc --- a/src/dev/net/i8254xGBe.cc Mon Nov 28 12:44:54 2016 -0500 +++ b/src/dev/net/i8254xGBe.cc Tue Nov 29 13:04:45 2016 -0500 @@ -2522,7 +2522,7 @@ bool txPktExists; UNSERIALIZE_SCALAR(txPktExists); if (txPktExists) { -txPacket = std::make_shared(); +txPacket = std::make_shared(16384); txPacket->unserialize("txpacket", cp); } diff -r 09f8fda798bc -r e832056deaed src/dev/net/ns_gige.cc --- a/src/dev/net/ns_gige.ccMon Nov 28 12:44:54 2016 -0500 +++ b/src/dev/net/ns_gige.ccTue Nov 29 13:04:45 2016 -0500 @@ -2352,7 +2352,7 @@ bool txPacketExists; UNSERIALIZE_SCALAR(txPacketExists); if (txPacketExists) { -txPacket = make_shared(); +txPacket = make_shared(16384); txPacket->unserialize("txPacket", cp); uint32_t txPktBufPtr; UNSERIALIZE_SCALAR(txPktBufPtr); diff -r 09f8fda798bc -r e832056deaed src/dev/net/sinic.cc --- a/src/dev/net/sinic.cc Mon Nov 28 12:44:54 2016 -0500 +++ b/src/dev/net/sinic.cc Tue Nov 29 13:04:45 2016 -0500 @@ -1496,7 +1496,7 @@ UNSERIALIZE_SCALAR(txPacketExists); txPacket = 0; if (txPacketExists) { -txPacket = make_shared(); +txPacket = make_shared(16384); txPacket->unserialize("txPacket", cp); UNSERIALIZE_SCALAR(txPacketOffset); UNSERIALIZE_SCALAR(txPacketBytes); ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev
[gem5-dev] Cron <m5test@zizzer> /z/m5/regression/do-regression quick
* build/HSAIL_X86/tests/opt/quick/se/04.gpu/x86/linux/gpu-ruby-GPU_RfO: CHANGED! * build/ALPHA/tests/opt/quick/se/00.hello/alpha/linux/minor-timing: passed.* build/ALPHA/tests/opt/quick/se/01.hello-2T-smt/alpha/linux/o3-timing-mt: passed. * build/ALPHA/tests/opt/quick/se/00.hello/alpha/linux/o3-timing: passed. * build/ALPHA/tests/opt/quick/se/00.hello/alpha/linux/simple-timing-ruby: passed. * build/ALPHA/tests/opt/quick/se/00.hello/alpha/linux/simple-atomic: passed. * build/ALPHA/tests/opt/quick/se/00.hello/alpha/linux/simple-timing: passed. * build/ALPHA/tests/opt/quick/se/03.learning-gem5/alpha/linux/learning-gem5-p1-simple: passed. * build/ALPHA/tests/opt/quick/se/50.memtest/alpha/linux/memtest-ruby: passed. * build/ALPHA/tests/opt/quick/se/03.learning-gem5/alpha/linux/learning-gem5-p1-two-level: passed. * build/ALPHA/tests/opt/quick/fs/10.linux-boot/alpha/linux/tsunami-simple-atomic: passed. * build/ALPHA/tests/opt/quick/fs/10.linux-boot/alpha/linux/tsunami-simple-atomic-dual: passed. * build/ALPHA/tests/opt/quick/fs/10.linux-boot/alpha/linux/tsunami-simple-timing: passed. * build/ALPHA/tests/opt/quick/fs/10.linux-boot/alpha/linux/tsunami-simple-timing-dual: passed. * build/ALPHA/tests/opt/quick/fs/80.netperf-stream/alpha/linux/twosys-tsunami-simple-atomic: passed. * build/MIPS/tests/opt/quick/se/00.hello/mips/linux/simple-timing-ruby: passed. * build/MIPS/tests/opt/quick/se/00.hello/mips/linux/o3-timing: passed. * build/MIPS/tests/opt/quick/se/00.hello/mips/linux/simple-atomic: passed. * build/MIPS/tests/opt/quick/se/03.learning-gem5/mips/linux/learning-gem5-p1-two-level: passed. * build/MIPS/tests/opt/quick/se/03.learning-gem5/mips/linux/learning-gem5-p1-simple: passed. * build/MIPS/tests/opt/quick/se/00.hello/mips/linux/simple-timing: passed. * build/NULL/tests/opt/quick/se/50.memtest/null/none/memtest-filter: passed.* build/NULL/tests/opt/quick/se/51.memcheck/null/none/memcheck: passed. * build/NULL/tests/opt/quick/se/50.memtest/null/none/memtest: passed. * build/NULL/tests/opt/quick/se/70.tgen/null/none/tgen-dram-ctrl: passed.* build/NULL/tests/opt/quick/se/60.rubytest/null/none/rubytest-ruby: passed. * build/NULL/tests/opt/quick/se/70.tgen/null/none/tgen-simple-mem: passed. * build/NULL_MOESI_hammer/tests/opt/quick/se/60.rubytest/null/none/rubytest-ruby-MOESI_hammer: passed. * build/NULL_MESI_Two_Level/tests/opt/quick/se/60.rubytest/null/none/rubytest-ruby-MESI_Two_Level: passed. * build/NULL_MOESI_CMP_directory/tests/opt/quick/se/60.rubytest/null/none/rubytest-ruby-MOESI_CMP_directory: passed. * build/NULL_MOESI_CMP_token/tests/opt/quick/se/60.rubytest/null/none/rubytest-ruby-MOESI_CMP_token: passed. * build/POWER/tests/opt/quick/se/00.hello/power/linux/o3-timing: passed. * build/POWER/tests/opt/quick/se/00.hello/power/linux/simple-atomic: passed. * build/SPARC/tests/opt/quick/se/02.insttest/sparc/linux/simple-atomic: passed.* build/SPARC/tests/opt/quick/se/00.hello/sparc/linux/simple-timing-ruby: passed. * build/SPARC/tests/opt/quick/se/00.hello/sparc/linux/simple-atomic: passed. * build/SPARC/tests/opt/quick/se/02.insttest/sparc/linux/o3-timing: passed. * build/SPARC/tests/opt/quick/se/00.hello/sparc/linux/simple-timing: passed. * build/SPARC/tests/opt/quick/se/03.learning-gem5/sparc/linux/learning-gem5-p1-two-level: passed. * build/SPARC/tests/opt/quick/se/10.mcf/sparc/linux/simple-atomic: passed. * build/SPARC/tests/opt/quick/se/03.learning-gem5/sparc/linux/learning-gem5-p1-simple: passed. * build/SPARC/tests/opt/quick/se/02.insttest/sparc/linux/simple-timing: passed. * build/SPARC/tests/opt/quick/se/40.m5threads-test-atomic/sparc/linux/simple-atomic-mp: passed. * build/SPARC/tests/opt/quick/se/40.m5threads-test-atomic/sparc/linux/simple-timing-mp: passed. * build/SPARC/tests/opt/quick/se/50.vortex/sparc/linux/simple-atomic: passed. * build/SPARC/tests/opt/quick/se/50.vortex/sparc/linux/simple-timing: passed. * build/SPARC/tests/opt/quick/se/40.m5threads-test-atomic/sparc/linux/o3-timing-mp: passed. * build/SPARC/tests/opt/quick/se/70.twolf/sparc/linux/simple-atomic: passed. * build/SPARC/tests/opt/quick/se/70.twolf/sparc/linux/simple-timing: passed. * build/X86/tests/opt/quick/se/03.learning-gem5/x86/linux/learning-gem5-p1-simple: passed. * build/X86/tests/opt/quick/se/00.hello/x86/linux/simple-timing: passed. * build/X86/tests/opt/quick/se/00.hello/x86/linux/o3-timing: passed. * build/X86/tests/opt/quick/se/00.hello/x86/linux/simple-atomic: passed. * build/X86/tests/opt/quick/se/00.hello/x86/linux/simple-timing-ruby: passed. * build/X86/tests/opt/quick/se/10.mcf/x86/linux/simple-atomic: passed. * build/X86/tests/opt/quick/se/03.learning-gem5/x86/linux/learning-gem5-p1-two-level: passed. *