Re: [gem5-dev] Review Request 3740: commit 8606171b2c2e65d0b9931ccb4bd2ebc533c55d60

2016-11-29 Thread Rahul Thakur

---
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 Thakur 
Date:   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

2016-11-29 Thread Jason Lowe-Power
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

2016-11-29 Thread Gutierrez, Anthony
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 ...

2016-11-29 Thread Michael LeBeane
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 Dozsa 

diffstat:

 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

2016-11-29 Thread Cron Daemon
* 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.
*