[gem5-dev] Change in gem5/gem5[develop]: mem: Remove std::move from a return statement.

2020-08-31 Thread Gabe Black (Gerrit) via gem5-dev
Gabe Black has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/33895 )



Change subject: mem: Remove std::move from a return statement.
..

mem: Remove std::move from a return statement.

According to gcc:

error: moving a local object in a return statement prevents copy elision
[-Werror=pessimizing-move]

Change-Id: I6121f4d8f3dec7c7a9ddc8dfcf04d1def51a26cd
---
M src/mem/cache/compressors/base.cc
1 file changed, 1 insertion(+), 1 deletion(-)



diff --git a/src/mem/cache/compressors/base.cc  
b/src/mem/cache/compressors/base.cc

index e12e36e..1408d2d 100644
--- a/src/mem/cache/compressors/base.cc
+++ b/src/mem/cache/compressors/base.cc
@@ -165,7 +165,7 @@
 "Compression latency: %llu, decompression latency: %llu\n",
 blkSize*8, comp_size_bits, comp_lat, decomp_lat);

-return std::move(comp_data);
+return comp_data;
 }

 Cycles

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/33895
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I6121f4d8f3dec7c7a9ddc8dfcf04d1def51a26cd
Gerrit-Change-Number: 33895
Gerrit-PatchSet: 1
Gerrit-Owner: Gabe Black 
Gerrit-MessageType: newchange
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-dev] Change in gem5/gem5[develop]: test: Fix unittest cprintftime's build.

2020-08-31 Thread Gabe Black (Gerrit) via gem5-dev
Gabe Black has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/33897 )



Change subject: test: Fix unittest cprintftime's build.
..

test: Fix unittest cprintftime's build.

This test, which measures the performance of cprintf vs. sprintf, was
missing a couple of includes which were needed for the alarm() and
signal() functions, as well as the SIGALRM constant.

Also, it was using %#x to print the value of a pointer which gcc
complained about when compiling sprintf. This is fixed by changing that
format specifier to %p, the specifier to use when printing pointers.
Apparently either the implicit conversion to an integer value (which %#x
expects) or the size of the type it was converted to weren't good enough
for gcc any more.

Change-Id: I8eca3479bef2c2fa79f8ef4881bb3ff35d7c54ca
---
M src/unittest/cprintftime.cc
1 file changed, 5 insertions(+), 2 deletions(-)



diff --git a/src/unittest/cprintftime.cc b/src/unittest/cprintftime.cc
index 4ad347d..f8f1492 100644
--- a/src/unittest/cprintftime.cc
+++ b/src/unittest/cprintftime.cc
@@ -26,6 +26,9 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */

+#include 
+
+#include 
 #include 
 #include 
 #include 
@@ -62,7 +65,7 @@
 while (!stop) {
 stringstream result;
 ccprintf(result,
- "this is a %s of %d iterations %3.2f %#x\n",
+ "this is a %s of %d iterations %3.2f %p\n",
  "test", iterations, 51.934, );

 iterations += 1;
@@ -75,7 +78,7 @@
 while (!stop) {
 char result[1024];
 sprintf(result,
- "this is a %s of %d iterations %3.2f %#x\n",
+ "this is a %s of %d iterations %3.2f %p\n",
  "test", iterations, 51.934, );

 iterations += 1;

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/33897
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I8eca3479bef2c2fa79f8ef4881bb3ff35d7c54ca
Gerrit-Change-Number: 33897
Gerrit-PatchSet: 1
Gerrit-Owner: Gabe Black 
Gerrit-MessageType: newchange
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-dev] Change in gem5/gem5[develop]: test: Remove refcnttest from the unittest SConscript.

2020-08-31 Thread Gabe Black (Gerrit) via gem5-dev
Gabe Black has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/33896 )



Change subject: test: Remove refcnttest from the unittest SConscript.
..

test: Remove refcnttest from the unittest SConscript.

The test itself was removed, but it was left in the SConscript. If you
tell scons to build everything in that directory, it will try to build
that test and fail.

Change-Id: I1e3923b0de12e891f53dab6f4e6e3e2b6975dc45
---
M src/unittest/SConscript
1 file changed, 0 insertions(+), 1 deletion(-)



diff --git a/src/unittest/SConscript b/src/unittest/SConscript
index 3922e9e..19b2542 100644
--- a/src/unittest/SConscript
+++ b/src/unittest/SConscript
@@ -32,7 +32,6 @@

 UnitTest('cprintftime', 'cprintftime.cc')
 UnitTest('nmtest', 'nmtest.cc')
-UnitTest('refcnttest', 'refcnttest.cc')

 stattest_py = PySource('m5', 'stattestmain.py', tags='stattest')
 UnitTest('stattest', 'stattest.cc', with_tag('stattest'), main=True)

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/33896
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I1e3923b0de12e891f53dab6f4e6e3e2b6975dc45
Gerrit-Change-Number: 33896
Gerrit-PatchSet: 1
Gerrit-Owner: Gabe Black 
Gerrit-MessageType: newchange
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-dev] Pending gem5 20.1 "must haves"

2020-08-31 Thread Bobby Bruce via gem5-dev
Dear all,

We're in the final push of getting stuff into the develop branch to be
included in gem5 20.1. We've identified some outstanding items which have
yet to be incorporated, but consider them "must haves" which need included
before creating the staging branch. Outlined below are these work items and
links to their relevant Gerrit relation-chains.

If you have expertise in any of these domains, or simply have some spare
time on your hands, then it'd be appreciated if you could submit a review
to some of these patches. If you are the author of any of these patches,
then we'd appreciate it if you can swiftly address comments and update the
patchsets accordingly.

- Arm HTM and TME:
-https://gem5-review.googlesource.com/c/public/gem5/+/30329

- HeteroGarnet:
- https://gem5-review.googleand
feedback.source.com/c/public/gem5/+/32597


- DRAM/NVM Improvements:
   - https://gem5-review.googlesource.com/c/public/gem5/+/31654

- Master/Slave Terminology changes:
- https://gem5-review.googlesource.com/c/public/gem5/+/33515/

- Statistics Improvements
- https://gem5-review.googlesource.com/c/public/gem5/+/33403
- https://gem5-review.googlesource.com/c/public/gem5/+/33399

- https://gem5-review.googlesource.com/c/public/gem5/+/33796

- https://gem5-review.googlesource.com/c/public/gem5/+/33815
  
- https://gem5-review.googlesource.com/c/public/gem5/+/33875

- https://gem5-review.googlesource.com/c/public/gem5/+/33797


- New API taggings:
- https://gem5-review.googlesource.com/c/public/gem5/+/32955
- https://gem5-review.googlesource.com/c/public/gem5/+/33079
- https://gem5-review.googlesource.com/c/public/gem5/+/33080
- https://gem5-review.googlesource.com/c/public/gem5/+/33078
- https://gem5-review.googlesource.com/c/public/gem5/+/33117
- https://gem5-review.googlesource.com/c/public/gem5/+/33075
- https://gem5-review.googlesource.com/c/public/gem5/+/33094
- https://gem5-review.googlesource.com/c/public/gem5/+/33035
- https://gem5-review.googlesource.com/c/public/gem5/+/32974
- https://gem5-review.googlesource.com/c/public/gem5/+/32961
- https://gem5-review.googlesource.com/c/public/gem5/+/32962
- https://gem5-review.googlesource.com/c/public/gem5/+/32935

- Clean-up the `test` directory:
- https://gem5-review.googlesource.com/c/public/gem5/+/33145

- Compilation Issues (noted here:
https://www.mail-archive.com/gem5-dev@gem5.org/msg35657.html):

- https://gem5-review.googlesource.com/c/public/gem5/+/33777


- https://gem5-review.googlesource.com/c/public/gem5/+/33835


- https://gem5-review.googlesource.com/c/public/gem5/+/33816


- https://gem5-review.googlesource.com/c/public/gem5/+/33817


- https://gem5-review.googlesource.com/c/public/gem5/+/33818



- Fix Libelf (see here: https://gem5.atlassian.net/browse/GEM5-756).

   - Bobby is working on this. Patchset to come!


- Improve TestLib (record stdout and stderr for TestLib tests):

   - [Bit of a work in progress commit]
https://gem5-review.googlesource.com/c/public/gem5/+/33855/


Kind regards,
Bobby
--
Dr. Bobby R. Bruce
Room 2235,
Kemper Hall, UC Davis
Davis,
CA, 95616

web: https://www.bobbybruce.net
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-dev] Change in gem5/gem5[develop]: cpu: convert trace cpu to new style stats

2020-08-31 Thread Eden Avivi (Gerrit) via gem5-dev
Eden Avivi has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/33875 )



Change subject: cpu: convert trace cpu to new style stats
..

cpu: convert trace cpu to new style stats

Change-Id: I9f97d4006a0edbd717fc34d0033b9548011d1631
---
M src/cpu/trace/trace_cpu.cc
M src/cpu/trace/trace_cpu.hh
2 files changed, 105 insertions(+), 170 deletions(-)



diff --git a/src/cpu/trace/trace_cpu.cc b/src/cpu/trace/trace_cpu.cc
index dd91257..035a89b 100644
--- a/src/cpu/trace/trace_cpu.cc
+++ b/src/cpu/trace/trace_cpu.cc
@@ -60,7 +60,7 @@
 execCompleteEvent(nullptr),
 enableEarlyExit(params->enableEarlyExit),
 progressMsgInterval(params->progressMsgInterval),
-progressMsgThreshold(params->progressMsgInterval)
+progressMsgThreshold(params->progressMsgInterval), traceStats(this)
 {
 // Increment static counter for number of Trace CPUs.
 ++TraceCPU::numTraceCPUs;
@@ -91,8 +91,9 @@
 void
 TraceCPU::updateNumOps(uint64_t rob_num)
 {
-numOps = rob_num;
-if (progressMsgInterval != 0 && numOps.value() >=  
progressMsgThreshold) {

+traceStats.numOps = rob_num;
+if (progressMsgInterval != 0 &&
+ traceStats.numOps.value() >= progressMsgThreshold) {
 inform("%s: %i insts committed\n", name(), progressMsgThreshold);
 progressMsgThreshold += progressMsgInterval;
 }
@@ -161,7 +162,7 @@
 DPRINTF(TraceCPUInst, "Scheduling next icacheGen event "
 "at %d.\n", curTick() + icacheGen.tickDelta());
 schedule(icacheNextEvent, curTick() + icacheGen.tickDelta());
-++numSchedIcacheEvent;
+++traceStats.numSchedIcacheEvent;
 } else {
 // check if traceComplete. If not, do nothing because sending  
failed

 // and next event will be scheduled via RecvRetry()
@@ -208,93 +209,33 @@
 }
 }
 }
-
-void
-TraceCPU::regStats()
+ TraceCPU::TraceStats::TraceStats(TraceCPU *trace)
+: Stats::Group(trace),
+ADD_STAT(numSchedDcacheEvent,
+ "Number of events scheduled to trigger data request generator"),
+ADD_STAT(numSchedIcacheEvent,
+ "Number of events scheduled to trigger instruction request  
generator"),

+ADD_STAT(numOps, "Number of micro-ops simulated by the Trace CPU"),
+ADD_STAT(cpi, "Cycles per micro-op used as a proxy for CPI",
+ trace->numCycles / numOps)
+{
+cpi
+.precision(6);
+}
+TraceCPU::ElasticDataGen::
+ElasticDataGenStatGroup::ElasticDataGenStatGroup(Stats::Group *parent)
+: Stats::Group(parent),
+ADD_STAT(maxDependents, "Max number of dependents observed on a node"),
+ADD_STAT(maxReadyListSize, "Max size of the ready list observed"),
+ADD_STAT(numSendAttempted, "Number of first attempts to send a  
request"),

+ADD_STAT(numSendSucceeded, "Number of successful first attempts"),
+ADD_STAT(numSendFailed, "Number of failed first attempts"),
+ADD_STAT(numRetrySucceeded, "Number of successful retries"),
+ADD_STAT(numSplitReqs, "Number of split requests"),
+ADD_STAT(numSOLoads, "Number of strictly ordered loads"),
+ADD_STAT(numSOStores, "Number of strictly ordered stores"),
+ADD_STAT(dataLastTick, "Last tick simulated from the elastic data  
trace")

 {
-
-BaseCPU::regStats();
-
-numSchedDcacheEvent
-.name(name() + ".numSchedDcacheEvent")
-.desc("Number of events scheduled to trigger data request generator")
-;
-
-numSchedIcacheEvent
-.name(name() + ".numSchedIcacheEvent")
-.desc("Number of events scheduled to trigger instruction request  
generator")

-;
-
-numOps
-.name(name() + ".numOps")
-.desc("Number of micro-ops simulated by the Trace CPU")
-;
-
-cpi
-.name(name() + ".cpi")
-.desc("Cycles per micro-op used as a proxy for CPI")
-.precision(6)
-;
-cpi = numCycles/numOps;
-
-icacheGen.regStats();
-dcacheGen.regStats();
-}
-
-void
-TraceCPU::ElasticDataGen::regStats()
-{
-using namespace Stats;
-
-maxDependents
-.name(name() + ".maxDependents")
-.desc("Max number of dependents observed on a node")
-;
-
-maxReadyListSize
-.name(name() + ".maxReadyListSize")
-.desc("Max size of the ready list observed")
-;
-
-numSendAttempted
-.name(name() + ".numSendAttempted")
-.desc("Number of first attempts to send a request")
-;
-
-numSendSucceeded
-.name(name() + ".numSendSucceeded")
-.desc("Number of successful first attempts")
-;
-
-numSendFailed
-.name(name() + ".numSendFailed")
-.desc("Number of failed first attempts")
-;
-
-numRetrySucceeded
-.name(name() + ".numRetrySucceeded")
-.desc("Number of successful retries")
-;
-
-numSplitReqs
-.name(name() + ".numSplitReqs")
-.desc("Number of split requests")
-;
-
-numSOLoads
-.name(name() + ".numSOLoads")
-.desc("Number 

[gem5-dev] Change in gem5/gem5[develop]: python: Import reduce function in FileSystemConfig

2020-08-31 Thread Jason Lowe-Power (Gerrit) via gem5-dev
Jason Lowe-Power has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/32374 )


Change subject: python: Import reduce function in FileSystemConfig
..

python: Import reduce function in FileSystemConfig

Not sure if this is required due to python3 or something else, but I got
the error "NameError: name 'reduce' is not defined". This fixes that
error.

Change-Id: I2dd71674306abcad1a90311664b18b9eee29b9ac
Signed-off-by: Jason Lowe-Power 
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/32374
Reviewed-by: Gabe Black 
Maintainer: Jason Lowe-Power 
Tested-by: kokoro 
---
M configs/common/FileSystemConfig.py
1 file changed, 1 insertion(+), 0 deletions(-)

Approvals:
  Gabe Black: Looks good to me, approved
  Jason Lowe-Power: Looks good to me, approved
  kokoro: Regressions pass



diff --git a/configs/common/FileSystemConfig.py  
b/configs/common/FileSystemConfig.py

index ec27656..29041fd 100644
--- a/configs/common/FileSystemConfig.py
+++ b/configs/common/FileSystemConfig.py
@@ -42,6 +42,7 @@
 from m5.objects import *
 from m5.util.convert import *

+from functools import reduce
 import operator, os, platform, getpass
 from os import mkdir, makedirs, getpid, listdir, stat, access
 from pwd import getpwuid

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/32374
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I2dd71674306abcad1a90311664b18b9eee29b9ac
Gerrit-Change-Number: 32374
Gerrit-PatchSet: 2
Gerrit-Owner: Jason Lowe-Power 
Gerrit-Reviewer: Bradford Beckmann 
Gerrit-Reviewer: Brandon Potter 
Gerrit-Reviewer: Gabe Black 
Gerrit-Reviewer: Jason Lowe-Power 
Gerrit-Reviewer: Matthew Poremba 
Gerrit-Reviewer: kokoro 
Gerrit-MessageType: merged
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-dev] Re: Build failed in Jenkins: gem5_develop #163

2020-08-31 Thread Bobby Bruce via gem5-dev
Hey Mike,

Is there any reason these gem5_develop tests are still running? Is it safe
to turn them off? From my understanding they are simply running the
"main.py' script on the quick tests, which Kokoro does already (special
thanks to Gabe who upgraded Kokoro for us :) ). When there is a failure,
this can all get a bit spammy on the dev-mailing list. I'm not exactly sure
what the added-value of these test runs are at this moment in time.

YFI, these broken tests are fixed by:
https://gem5-review.googlesource.com/c/public/gem5/+/33835

Kind regards,
Bobby
--
Dr. Bobby R. Bruce
Room 2235,
Kemper Hall, UC Davis
Davis,
CA, 95616

web: https://www.bobbybruce.net


On Mon, Aug 31, 2020 at 3:57 PM jenkins-no-reply--- via gem5-dev <
gem5-dev@gem5.org> wrote:

> See <
> https://jenkins.gem5.org/job/gem5_develop/163/display/redirect?page=changes
> >
>
> Changes:
>
> [sampad.mohapatra] mem-ruby: Change request to response in
> MOESI_AMD_Base-dir.sm
>
>
> --
> Started by an SCM change
> Running as SYSTEM
> Building in workspace 
> The recommended git tool is: git
> No credentials specified
>  > git rev-parse --is-inside-work-tree # timeout=10
> Fetching changes from the remote Git repository
>  > git config remote.origin.url https://gem5.googlesource.com/public/gem5
> # timeout=10
> Fetching upstream changes from https://gem5.googlesource.com/public/gem5
>  > git --version # timeout=10
>  > git --version # 'git version 2.25.1'
>  > git fetch --tags --force --progress --
> https://gem5.googlesource.com/public/gem5
> +refs/heads/*:refs/remotes/origin/* # timeout=10
>  > git rev-parse refs/remotes/origin/develop^{commit} # timeout=10
>  > git rev-parse refs/remotes/origin/origin/develop^{commit} # timeout=10
> Checking out Revision 9d8229c0f1c223547ccf80a32537408103fd37e9
> (refs/remotes/origin/develop)
>  > git config core.sparsecheckout # timeout=10
>  > git checkout -f 9d8229c0f1c223547ccf80a32537408103fd37e9 # timeout=10
> Commit message: "mem-ruby: Change request to response in
> MOESI_AMD_Base-dir.sm"
>  > git rev-list --no-walk 08ab457f13f4f95cb8f03023509fb551125ac429 #
> timeout=10
> [gem5_develop] $ /bin/sh -xe /tmp/jenkins8041371189730628693.sh
> + cd tests
> + ./main.py run -j 4 -t 4
> build/RISCV/mem/cache/compressors/base.cc: In member function
> 'std::unique_ptr
> Compressor::Base::compress(const uint64_t*, Cycles&, Cycles&)':
> build/RISCV/mem/cache/compressors/base.cc:168:21: error: moving a local
> object in a return statement prevents copy elision
> [-Werror=pessimizing-move]
>   168 | return std::move(comp_data);
>   |~^~~
> build/RISCV/mem/cache/compressors/base.cc:168:21: note: remove 'std::move'
> call
> cc1plus: all warnings being treated as errors
> scons: *** [build/RISCV/mem/cache/compressors/base.o] Error 1
> Running the new gem5 testing script.
> For more information see TESTING.md.
> To see details as the testing scripts are running, use the option -v, -vv,
> or -vvv
>
> 
> Loading Tests
> Discovered 2544 tests and 2544 suites in <
> https://jenkins.gem5.org/job/gem5_develop/ws/tests/gem5/asmtest/tests.py>
> Discovered 264 tests and 132 suites in <
> https://jenkins.gem5.org/job/gem5_develop/ws/tests/gem5/cpu_tests/test.py>
> Discovered 24 tests and 12 suites in <
> https://jenkins.gem5.org/job/gem5_develop/ws/tests/gem5/dram-lowp/test_dram_lowp.py
> >
> Discovered 166 tests and 166 suites in <
> https://jenkins.gem5.org/job/gem5_develop/ws/tests/gem5/fs/linux/arm/test.py
> >
> Discovered 270 tests and 135 suites in <
> https://jenkins.gem5.org/job/gem5_develop/ws/tests/gem5/hello_se/test_hello_se.py
> >
> Discovered 0 tests and 0 suites in <
> https://jenkins.gem5.org/job/gem5_develop/ws/tests/gem5/insttest_se/test.py
> >
> Discovered 48 tests and 48 suites in <
> https://jenkins.gem5.org/job/gem5_develop/ws/tests/gem5/learning_gem5/part1_test.py
> >
> Discovered 48 tests and 24 suites in <
> https://jenkins.gem5.org/job/gem5_develop/ws/tests/gem5/learning_gem5/part2_test.py
> >
> Discovered 18 tests and 9 suites in <
> https://jenkins.gem5.org/job/gem5_develop/ws/tests/gem5/learning_gem5/part3_test.py
> >
> Discovered 12 tests and 6 suites in <
> https://jenkins.gem5.org/job/gem5_develop/ws/tests/gem5/m5_util/test_exit.py
> >
> Discovered 0 tests and 0 suites in <
> https://jenkins.gem5.org/job/gem5_develop/ws/tests/gem5/m5threads_test_atomic/test.py
> >
> Discovered 72 tests and 72 suites in <
> https://jenkins.gem5.org/job/gem5_develop/ws/tests/gem5/memory/test.py>
> Discovered 18 tests and 18 suites in <
> https://jenkins.gem5.org/job/gem5_develop/ws/tests/gem5/test_build/test_build.py
> >
> Discovered 18 tests and 18 suites in <
> https://jenkins.gem5.org/job/gem5_develop/ws/tests/gem5/x86-boot-tests/test_linux_boot.py
> >
>
> 

[gem5-dev] Build failed in Jenkins: gem5_develop #163

2020-08-31 Thread jenkins-no-reply--- via gem5-dev
See 


Changes:

[sampad.mohapatra] mem-ruby: Change request to response in MOESI_AMD_Base-dir.sm


--
Started by an SCM change
Running as SYSTEM
Building in workspace 
The recommended git tool is: git
No credentials specified
 > git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > git config remote.origin.url https://gem5.googlesource.com/public/gem5 # 
 > timeout=10
Fetching upstream changes from https://gem5.googlesource.com/public/gem5
 > git --version # timeout=10
 > git --version # 'git version 2.25.1'
 > git fetch --tags --force --progress -- 
 > https://gem5.googlesource.com/public/gem5 
 > +refs/heads/*:refs/remotes/origin/* # timeout=10
 > git rev-parse refs/remotes/origin/develop^{commit} # timeout=10
 > git rev-parse refs/remotes/origin/origin/develop^{commit} # timeout=10
Checking out Revision 9d8229c0f1c223547ccf80a32537408103fd37e9 
(refs/remotes/origin/develop)
 > git config core.sparsecheckout # timeout=10
 > git checkout -f 9d8229c0f1c223547ccf80a32537408103fd37e9 # timeout=10
Commit message: "mem-ruby: Change request to response in MOESI_AMD_Base-dir.sm"
 > git rev-list --no-walk 08ab457f13f4f95cb8f03023509fb551125ac429 # timeout=10
[gem5_develop] $ /bin/sh -xe /tmp/jenkins8041371189730628693.sh
+ cd tests
+ ./main.py run -j 4 -t 4
build/RISCV/mem/cache/compressors/base.cc: In member function 
'std::unique_ptr 
Compressor::Base::compress(const uint64_t*, Cycles&, Cycles&)':
build/RISCV/mem/cache/compressors/base.cc:168:21: error: moving a local object 
in a return statement prevents copy elision [-Werror=pessimizing-move]
  168 | return std::move(comp_data);
  |~^~~
build/RISCV/mem/cache/compressors/base.cc:168:21: note: remove 'std::move' call
cc1plus: all warnings being treated as errors
scons: *** [build/RISCV/mem/cache/compressors/base.o] Error 1
Running the new gem5 testing script.
For more information see TESTING.md.
To see details as the testing scripts are running, use the option -v, -vv, or 
-vvv

Loading Tests
Discovered 2544 tests and 2544 suites in 

Discovered 264 tests and 132 suites in 

Discovered 24 tests and 12 suites in 

Discovered 166 tests and 166 suites in 

Discovered 270 tests and 135 suites in 

Discovered 0 tests and 0 suites in 

Discovered 48 tests and 48 suites in 

Discovered 48 tests and 24 suites in 

Discovered 18 tests and 9 suites in 

Discovered 12 tests and 6 suites in 

Discovered 0 tests and 0 suites in 

Discovered 72 tests and 72 suites in 

Discovered 18 tests and 18 suites in 

Discovered 18 tests and 18 suites in 


Running Tests from 502 suites
Results will be stored in 


Building the following targets. This may take a while.

You may want to run with only a single ISA(--isa=), use --skip-build, or use 
'rerun'.
Traceback (most recent call last):
  File 
"
 line 199, in setup
fixture.setup(testitem)
  File " 
line 111, in setup
self._setup(testitem)
  File " 
line 156, in _setup
log_call(log.test_log, command, stderr=sys.stderr)
  File 

[gem5-dev] Change in gem5/gem5[develop]: mem-ruby: Change request to response in MOESI_AMD_Base-dir.sm

2020-08-31 Thread Sampad Mohapatra (Gerrit) via gem5-dev
Sampad Mohapatra has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/33755 )


Change subject: mem-ruby: Change request to response in  
MOESI_AMD_Base-dir.sm

..

mem-ruby: Change request to response in MOESI_AMD_Base-dir.sm

The responseToDMA MessageBuffer in MOESI_AMD_Base-dir.sm
transmits both data and acks, but it's vnet_type is currently
set as request. This should be changed to response.

Signed-off-by: Sampad Mohapatra 
Change-Id: I0eb9e8fc8e25111849605a710a5150ce5fc3b83b
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/33755
Reviewed-by: Jason Lowe-Power 
Reviewed-by: Srikant Bharadwaj 
Reviewed-by: Matt Sinclair 
Maintainer: Matt Sinclair 
Tested-by: kokoro 
---
M src/mem/ruby/protocol/MOESI_AMD_Base-dir.sm
1 file changed, 1 insertion(+), 1 deletion(-)

Approvals:
  Jason Lowe-Power: Looks good to me, approved
  Matt Sinclair: Looks good to me, but someone else must approve; Looks  
good to me, approved

  Srikant Bharadwaj: Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/mem/ruby/protocol/MOESI_AMD_Base-dir.sm  
b/src/mem/ruby/protocol/MOESI_AMD_Base-dir.sm

index f1bc637..3e84ba6 100644
--- a/src/mem/ruby/protocol/MOESI_AMD_Base-dir.sm
+++ b/src/mem/ruby/protocol/MOESI_AMD_Base-dir.sm
@@ -44,7 +44,7 @@

   // DMA
   MessageBuffer * requestFromDMA, network="From", virtual_network="1",  
vnet_type="request";
-  MessageBuffer * responseToDMA, network="To", virtual_network="3",  
vnet_type="request";
+  MessageBuffer * responseToDMA, network="To", virtual_network="3",  
vnet_type="response";


   // From the Cores
   MessageBuffer * requestFromCores, network="From", virtual_network="0",  
vnet_type="request";


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/33755
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I0eb9e8fc8e25111849605a710a5150ce5fc3b83b
Gerrit-Change-Number: 33755
Gerrit-PatchSet: 3
Gerrit-Owner: Sampad Mohapatra 
Gerrit-Reviewer: Anthony Gutierrez 
Gerrit-Reviewer: Jason Lowe-Power 
Gerrit-Reviewer: Matt Sinclair 
Gerrit-Reviewer: Sampad Mohapatra 
Gerrit-Reviewer: Srikant Bharadwaj 
Gerrit-Reviewer: kokoro 
Gerrit-CC: Bradford Beckmann 
Gerrit-CC: Matthew Poremba 
Gerrit-MessageType: merged
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-dev] Re: Build failed in Jenkins: Compiler-Checks #20

2020-08-31 Thread Bobby Bruce via gem5-dev
Dear all,

The compilation issues are fixed in the following commits:

https://gem5-review.googlesource.com/c/public/gem5/+/33777
https://gem5-review.googlesource.com/c/public/gem5/+/33835
https://gem5-review.googlesource.com/c/public/gem5/+/33816
https://gem5-review.googlesource.com/c/public/gem5/+/33817
https://gem5-review.googlesource.com/c/public/gem5/+/33818

Kind regards,
Bobby
--
Dr. Bobby R. Bruce
Room 2235,
Kemper Hall, UC Davis
Davis,
CA, 95616

web: https://www.bobbybruce.net


On Sat, Aug 29, 2020 at 11:28 PM jenkins-no-reply--- via gem5-dev <
gem5-dev@gem5.org> wrote:

> See <
> https://jenkins.gem5.org/job/Compiler-Checks/20/display/redirect?page=changes
> >
>
> Changes:
>
> [ciro.santilli] tests: ignore 32-bit arm dual linux boot tests
>
> [giacomo.travaglini] arch-arm: Refactor Address Translation (AT) code
>
> [giacomo.travaglini] arch-arm: Remove deadcode from AArch64 address
> translation
>
> [giacomo.travaglini] arch-arm: Rewrite addressTranslation to use BitUnions
>
> [Jason Lowe-Power] python: Add DeprecatedParam type
>
> [shparekh] mem: Deprecate SlavePort and MasterPort classes
>
> [shparekh] misc: Updated port classes & refs to remove slaveBind()/UnBind()
>
> [shparekh] learning-gem5: update port terminology
>
> [shparekh] arch: update port terminology
>
> [shparekh] cpu: update port terminology
>
> [shparekh] gpu-compute: update port terminology
>
> [shparekh] mem: Update port terminology
>
> [shparekh] dev: Update port terminology
>
> [shparekh] systemc,sim: Update port terminology
>
> [gabeblack] sim: Fix up the selectFunc syscall to work with g++ 10.2.
>
> [yuhsingw] systemc: Send response to TLM side if a packet does not need
> response
>
> [anthony.gutierrez] gpu-compute: Create CU's ports in the standard way
>
> [gabeblack] util: Explicitly decode/encode in utf-8.
>
> [kyleroarty1716] arch-gcn3: Update LmReqsInPipe in atomic flats when
> execMask=0
>
> [gabeblack] power: Tidy up isa_traits.hh and delete the VAddr class.
>
> [gabeblack] riscv: Remove unnecessary includes from
> arch/riscv/isa_traits.hh.
>
> [ianjiang.ict] arch-riscv: Fix disassembling of jalr
>
> [gabeblack] sparc: Minor cleanup in isa_traits.hh.
>
> [gabeblack] misc: Clean up usage of arch/isa_traits.hh.
>
> [gabeblack] cpu: Factor the page size out of the decode cache.
>
> [gabeblack] tests: Use a docker image to build gem5.
>
> [Andreas.Sandberg] python: Add support for introspecting scalar stats
>
> [giacomo.travaglini] arch-arm: Introduce HavePACExt helper
>
> [giacomo.travaglini] arch-arm: Check if PAC is implemented before
> executing insts
>
> [giacomo.travaglini] arch-arm: Fix coding style in addressTranslation
> methods
>
> [richard.cooper] configs: Update starter_fs.py for latest Arm FS binaries.
>
> [Bobby R. Bruce] util: Added GCN-GPU to cloudbuild_create_images
>
> [Bobby R. Bruce] util: Updated Dockfiles with the libelf-dev dep
>
>
> --
> Started by user Bobby R. Bruce
> Running as SYSTEM
> Building in workspace 
> The recommended git tool is: NONE
> No credentials specified
>  > git rev-parse --is-inside-work-tree # timeout=10
> Fetching changes from the remote Git repository
>  > git config remote.origin.url https://gem5.googlesource.com/public/gem5
> # timeout=10
> Fetching upstream changes from https://gem5.googlesource.com/public/gem5
>  > git --version # timeout=10
>  > git --version # 'git version 2.25.1'
>  > git fetch --tags --force --progress --
> https://gem5.googlesource.com/public/gem5
> +refs/heads/*:refs/remotes/origin/* # timeout=10
>  > git rev-parse refs/remotes/origin/develop^{commit} # timeout=10
>  > git rev-parse refs/remotes/origin/origin/develop^{commit} # timeout=10
> Checking out Revision 0cf67fb36281b17956d4dc10f05054bf711b4ba3
> (refs/remotes/origin/develop)
>  > git config core.sparsecheckout # timeout=10
>  > git checkout -f 0cf67fb36281b17956d4dc10f05054bf711b4ba3 # timeout=10
> Commit message: "util: Updated Dockfiles with the libelf-dev dep"
>  > git rev-list --no-walk 5d420afaa037e41dd0480218db28f08e65279d93 #
> timeout=10
> [Compiler-Checks] $ /bin/sh -xe /tmp/jenkins6609813153786127086.sh
> + ./util/compiler-tests.sh -j 4
> Starting build tests with 'gcc-version-10'...
> 'gcc-version-10' was found in the comprehensive tests. All ISAs will be
> built.
>   * Building target 'X86_MOESI_AMD_Base.opt' with 'gcc-version-10'...
> Done.
>   * Building target 'X86_MOESI_AMD_Base.fast' with 'gcc-version-10'...
> Done.
>   * Building target 'POWER.opt' with 'gcc-version-10'...
> Done.
>   * Building target 'POWER.fast' with 'gcc-version-10'...
> Done.
>   * Building target 'RISCV.opt' with 'gcc-version-10'...
> Done.
>   * Building target 'RISCV.fast' with 'gcc-version-10'...
> Done.
>   * Building target 'NULL_MOESI_CMP_token.opt' with 'gcc-version-10'...
> Done.
>   * Building target 'NULL_MOESI_CMP_token.fast' with 'gcc-version-10'...
> Done.
>   

[gem5-dev] Change in gem5/gem5[develop]: arch-gcn3: Added missing header to hsa_driver.cc

2020-08-31 Thread Bobby R. Bruce (Gerrit) via gem5-dev
Bobby R. Bruce has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/33816 )



Change subject: arch-gcn3: Added missing header to hsa_driver.cc
..

arch-gcn3: Added missing header to hsa_driver.cc

`TypedBufferArg`, used in `src/dev/hsa/hsa_driver.cc` is defined in
`src/sim/syscall_emul_buf.hh` yet was not included. This commit adds
this missing header.

Change-Id: I3239a097eb71b6ebdad045eab6525a888a970f08
---
M src/dev/hsa/hsa_driver.cc
1 file changed, 1 insertion(+), 0 deletions(-)



diff --git a/src/dev/hsa/hsa_driver.cc b/src/dev/hsa/hsa_driver.cc
index a1215c4..326458b 100644
--- a/src/dev/hsa/hsa_driver.cc
+++ b/src/dev/hsa/hsa_driver.cc
@@ -43,6 +43,7 @@
 #include "params/HSADriver.hh"
 #include "sim/process.hh"
 #include "sim/proxy_ptr.hh"
+#include "sim/syscall_emul_buf.hh"

 HSADriver::HSADriver(HSADriverParams *p)
 : EmulatedDriver(p), device(p->device), queueId(0)

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/33816
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I3239a097eb71b6ebdad045eab6525a888a970f08
Gerrit-Change-Number: 33816
Gerrit-PatchSet: 1
Gerrit-Owner: Bobby R. Bruce 
Gerrit-MessageType: newchange
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-dev] Change in gem5/gem5[develop]: arch: Removed unused "Addr pcbb" from threadinfo

2020-08-31 Thread Bobby R. Bruce (Gerrit) via gem5-dev
Bobby R. Bruce has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/33818 )



Change subject: arch: Removed unused "Addr pcbb" from threadinfo
..

arch: Removed unused "Addr pcbb" from threadinfo

"Addr pcbb" is unused. It has therefore been removed.

Change-Id: I7ce27a8661480b5b7f2396f1d85ecb063710a10a
---
M src/arch/generic/linux/threadinfo.hh
1 file changed, 2 insertions(+), 3 deletions(-)



diff --git a/src/arch/generic/linux/threadinfo.hh  
b/src/arch/generic/linux/threadinfo.hh

index 0127105..e5ba7e2 100644
--- a/src/arch/generic/linux/threadinfo.hh
+++ b/src/arch/generic/linux/threadinfo.hh
@@ -39,7 +39,6 @@
   private:
 ThreadContext *tc;
 System *sys;
-Addr pcbb;

 ByteOrder byteOrder;

@@ -62,8 +61,8 @@
 }

   public:
-ThreadInfo(ThreadContext *_tc, Addr _pcbb = 0)
-: tc(_tc), sys(tc->getSystemPtr()), pcbb(_pcbb),
+ThreadInfo(ThreadContext *_tc)
+: tc(_tc), sys(tc->getSystemPtr()),
 byteOrder(tc->getSystemPtr()->getGuestByteOrder())
 {


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/33818
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I7ce27a8661480b5b7f2396f1d85ecb063710a10a
Gerrit-Change-Number: 33818
Gerrit-PatchSet: 1
Gerrit-Owner: Bobby R. Bruce 
Gerrit-MessageType: newchange
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-dev] Change in gem5/gem5[develop]: cpu: convert bpred_unit to new style stats

2020-08-31 Thread Emily Brickey (Gerrit) via gem5-dev
Emily Brickey has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/33797 )



Change subject: cpu: convert bpred_unit to new style stats
..

cpu: convert bpred_unit to new style stats

Change-Id: Ife80b2df3cb900a73a4f0c1d6925d9ed2d625dd0
---
M src/cpu/pred/bpred_unit.cc
M src/cpu/pred/bpred_unit.hh
2 files changed, 57 insertions(+), 113 deletions(-)



diff --git a/src/cpu/pred/bpred_unit.cc b/src/cpu/pred/bpred_unit.cc
index 4b93e30..50dc2e9 100644
--- a/src/cpu/pred/bpred_unit.cc
+++ b/src/cpu/pred/bpred_unit.cc
@@ -61,84 +61,31 @@
   params->numThreads),
   RAS(numThreads),
   iPred(params->indirectBranchPred),
+  stats(this),
   instShiftAmt(params->instShiftAmt)
 {
 for (auto& r : RAS)
 r.init(params->RASSize);
 }

-void
-BPredUnit::regStats()
+BPredUnit::BPredUnitStats::BPredUnitStats(Stats::Group *parent)
+: Stats::Group(parent),
+  ADD_STAT(lookups, "Number of BP lookups"),
+  ADD_STAT(condPredicted, "Number of conditional branches predicted"),
+  ADD_STAT(condIncorrect, "Number of conditional branches incorrect"),
+  ADD_STAT(BTBLookups, "Number of BTB lookups"),
+  ADD_STAT(BTBHits, "Number of BTB hits"),
+  ADD_STAT(BTBHitPct, "BTB Hit Percentage",
+   BTBHitPct = (BTBHits / BTBLookups) * 100),
+  ADD_STAT(RASUsed, "Number of times the RAS was used to get a  
target."),

+  ADD_STAT(RASIncorrect, "Number of incorrect RAS predictions."),
+  ADD_STAT(indirectLookups, "Number of indirect predictor lookups."),
+  ADD_STAT(indirectHits, "Number of indirect target hits."),
+  ADD_STAT(indirectMisses, "Number of indirect misses."),
+  ADD_STAT(indirectMispredicted, "Number of mispredicted indirect"
+  " branches.")
 {
-SimObject::regStats();
-
-lookups
-.name(name() + ".lookups")
-.desc("Number of BP lookups")
-;
-
-condPredicted
-.name(name() + ".condPredicted")
-.desc("Number of conditional branches predicted")
-;
-
-condIncorrect
-.name(name() + ".condIncorrect")
-.desc("Number of conditional branches incorrect")
-;
-
-BTBLookups
-.name(name() + ".BTBLookups")
-.desc("Number of BTB lookups")
-;
-
-BTBHits
-.name(name() + ".BTBHits")
-.desc("Number of BTB hits")
-;
-
-BTBCorrect
-.name(name() + ".BTBCorrect")
-.desc("Number of correct BTB predictions (this stat may not "
-  "work properly.")
-;
-
-BTBHitPct
-.name(name() + ".BTBHitPct")
-.desc("BTB Hit Percentage")
-.precision(6);
-BTBHitPct = (BTBHits / BTBLookups) * 100;
-
-usedRAS
-.name(name() + ".usedRAS")
-.desc("Number of times the RAS was used to get a target.")
-;
-
-RASIncorrect
-.name(name() + ".RASInCorrect")
-.desc("Number of incorrect RAS predictions.")
-;
-
-indirectLookups
-.name(name() + ".indirectLookups")
-.desc("Number of indirect predictor lookups.")
-;
-
-indirectHits
-.name(name() + ".indirectHits")
-.desc("Number of indirect target hits.")
-;
-
-indirectMisses
-.name(name() + ".indirectMisses")
-.desc("Number of indirect misses.")
-;
-
-indirectMispredicted
-.name(name() + "indirectMispredicted")
-.desc("Number of mispredicted indirect branches.")
-;
-
+BTBHitPct.precision(6);
 }

 ProbePoints::PMUUPtr
@@ -178,7 +125,7 @@
 bool pred_taken = false;
 TheISA::PCState target = pc;

-++lookups;
+++stats.lookups;
 ppBranches->notify(1);

 void *bp_history = NULL;
@@ -192,7 +139,7 @@
 // Tell the BP there was an unconditional branch.
 uncondBranch(tid, pc.instAddr(), bp_history);
 } else {
-++condPredicted;
+++stats.condPredicted;
 pred_taken = lookup(tid, pc.instAddr(), bp_history);

 DPRINTF(Branch, "[tid:%i] [sn:%llu] "
@@ -215,7 +162,7 @@
 // Now lookup in the BTB or RAS.
 if (pred_taken) {
 if (inst->isReturn()) {
-++usedRAS;
+++stats.RASUsed;
 predict_record.wasReturn = true;
 // If it's a function return call, then look up the address
 // in the RAS.
@@ -249,10 +196,10 @@
 }

 if (inst->isDirectCtrl() || !iPred) {
-++BTBLookups;
+++stats.BTBLookups;
 // Check BTB on direct branches
 if (BTB.valid(pc.instAddr(), tid)) {
-++BTBHits;
+++stats.BTBHits;
 // If it's not a return, use the BTB to get target  
addr.

 target = BTB.lookup(pc.instAddr(), tid);
 DPRINTF(Branch,
@@ -281,18 +228,18 @@

[gem5-dev] Build failed in Jenkins: gem5_develop #162

2020-08-31 Thread jenkins-no-reply--- via gem5-dev
See 


Changes:

[gabeblack] scons: Remove the AddLocalOption workaround.


--
Started by an SCM change
Running as SYSTEM
Building in workspace 
The recommended git tool is: git
No credentials specified
 > git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > git config remote.origin.url https://gem5.googlesource.com/public/gem5 # 
 > timeout=10
Fetching upstream changes from https://gem5.googlesource.com/public/gem5
 > git --version # timeout=10
 > git --version # 'git version 2.25.1'
 > git fetch --tags --force --progress -- 
 > https://gem5.googlesource.com/public/gem5 
 > +refs/heads/*:refs/remotes/origin/* # timeout=10
 > git rev-parse refs/remotes/origin/develop^{commit} # timeout=10
 > git rev-parse refs/remotes/origin/origin/develop^{commit} # timeout=10
Checking out Revision 08ab457f13f4f95cb8f03023509fb551125ac429 
(refs/remotes/origin/develop)
 > git config core.sparsecheckout # timeout=10
 > git checkout -f 08ab457f13f4f95cb8f03023509fb551125ac429 # timeout=10
Commit message: "scons: Remove the AddLocalOption workaround."
 > git rev-list --no-walk c0d67b2263aab6a729368373d9cdef9883870241 # timeout=10
[gem5_develop] $ /bin/sh -xe /tmp/jenkins4492392075236442651.sh
+ cd tests
+ ./main.py run -j 4 -t 4
build/RISCV/mem/cache/compressors/base.cc: In member function 
'std::unique_ptr 
Compressor::Base::compress(const uint64_t*, Cycles&, Cycles&)':
build/RISCV/mem/cache/compressors/base.cc:168:21: error: moving a local object 
in a return statement prevents copy elision [-Werror=pessimizing-move]
  168 | return std::move(comp_data);
  |~^~~
build/RISCV/mem/cache/compressors/base.cc:168:21: note: remove 'std::move' call
cc1plus: all warnings being treated as errors
scons: *** [build/RISCV/mem/cache/compressors/base.o] Error 1
Running the new gem5 testing script.
For more information see TESTING.md.
To see details as the testing scripts are running, use the option -v, -vv, or 
-vvv

Loading Tests
Discovered 2544 tests and 2544 suites in 

Discovered 264 tests and 132 suites in 

Discovered 24 tests and 12 suites in 

Discovered 166 tests and 166 suites in 

Discovered 270 tests and 135 suites in 

Discovered 0 tests and 0 suites in 

Discovered 48 tests and 48 suites in 

Discovered 48 tests and 24 suites in 

Discovered 18 tests and 9 suites in 

Discovered 12 tests and 6 suites in 

Discovered 0 tests and 0 suites in 

Discovered 72 tests and 72 suites in 

Discovered 18 tests and 18 suites in 

Discovered 18 tests and 18 suites in 


Running Tests from 502 suites
Results will be stored in 


Building the following targets. This may take a while.

You may want to run with only a single ISA(--isa=), use --skip-build, or use 
'rerun'.
Traceback (most recent call last):
  File 
"
 line 199, in setup
fixture.setup(testitem)
  File " 
line 111, in setup
self._setup(testitem)
  File " 
line 156, in _setup
log_call(log.test_log, command, stderr=sys.stderr)
  File 
"
 line 102, 

[gem5-dev] Change in gem5/gem5[develop]: scons: Remove the AddLocalOption workaround.

2020-08-31 Thread Gabe Black (Gerrit) via gem5-dev
Gabe Black has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/32115 )


Change subject: scons: Remove the AddLocalOption workaround.
..

scons: Remove the AddLocalOption workaround.

The "append" option of the Help() scons method can be used to avoid
clobbering the built in and local option help.

This has the nice side effect of making it easier to add options in
other files since you now only need the built in AddOption provided by
scons itself, not the custom AddLocalOption version.

Change-Id: Ifa566087797d578df0c90f8f4fca70c8152fbf63
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/32115
Tested-by: kokoro 
Reviewed-by: Jason Lowe-Power 
Reviewed-by: Bobby R. Bruce 
Maintainer: Gabe Black 
---
M SConstruct
1 file changed, 37 insertions(+), 81 deletions(-)

Approvals:
  Jason Lowe-Power: Looks good to me, but someone else must approve
  Bobby R. Bruce: Looks good to me, approved
  Gabe Black: Looks good to me, approved
  kokoro: Regressions pass



diff --git a/SConstruct b/SConstruct
index bbfa37a..d229ab8 100755
--- a/SConstruct
+++ b/SConstruct
@@ -99,70 +99,34 @@

 from m5.util import compareVersions, readCommand, readCommandWithReturn

-help_texts = {
-"options" : "",
-"global_vars" : "",
-"local_vars" : ""
-}
-
-Export("help_texts")
-
-
-# There's a bug in scons in that (1) by default, the help texts from
-# AddOption() are supposed to be displayed when you type 'scons -h'
-# and (2) you can override the help displayed by 'scons -h' using the
-# Help() function, but these two features are incompatible: once
-# you've overridden the help text using Help(), there's no way to get
-# at the help texts from AddOptions.  See:
-# https://github.com/SCons/scons/issues/2356
-# https://github.com/SCons/scons/issues/2611
-# This hack lets us extract the help text from AddOptions and
-# re-inject it via Help().  Ideally someday this bug will be fixed and
-# we can just use AddOption directly.
-def AddLocalOption(*args, **kwargs):
-col_width = 30
-
-help = "  " + ", ".join(args)
-if "help" in kwargs:
-length = len(help)
-if length >= col_width:
-help += "\n" + " " * col_width
-else:
-help += " " * (col_width - length)
-help += kwargs["help"]
-help_texts["options"] += help + "\n"
-
-AddOption(*args, **kwargs)
-
-AddLocalOption('--colors', dest='use_colors', action='store_true',
-   help="Add color to abbreviated scons output")
-AddLocalOption('--no-colors', dest='use_colors', action='store_false',
-   help="Don't add color to abbreviated scons output")
-AddLocalOption('--with-cxx-config', action='store_true',
-   help="Build with support for C++-based configuration")
-AddLocalOption('--default',
-   help='Override which build_opts file to use for defaults')
-AddLocalOption('--ignore-style', action='store_true',
-   help='Disable style checking hooks')
-AddLocalOption('--gold-linker', action='store_true',
-   help='Use the gold linker')
-AddLocalOption('--no-lto', action='store_true',
-   help='Disable Link-Time Optimization for fast')
-AddLocalOption('--force-lto', action='store_true',
-   help='Use Link-Time Optimization instead of partial  
linking' +
-' when the compiler doesn\'t support using them  
together.')

-AddLocalOption('--verbose', action='store_true',
-   help='Print full tool command lines')
-AddLocalOption('--without-python', action='store_true',
-   help='Build without Python configuration support')
-AddLocalOption('--without-tcmalloc', action='store_true',
-   help='Disable linking against tcmalloc')
-AddLocalOption('--with-ubsan', action='store_true',
-   help='Build with Undefined Behavior Sanitizer if available')
-AddLocalOption('--with-asan', action='store_true',
-   help='Build with Address Sanitizer if available')
-AddLocalOption('--with-systemc-tests', action='store_true',
-   help='Build systemc tests')
+AddOption('--colors', dest='use_colors', action='store_true',
+  help="Add color to abbreviated scons output")
+AddOption('--no-colors', dest='use_colors', action='store_false',
+  help="Don't add color to abbreviated scons output")
+AddOption('--with-cxx-config', action='store_true',
+  help="Build with support for C++-based configuration")
+AddOption('--default',
+  help='Override which build_opts file to use for defaults')
+AddOption('--ignore-style', action='store_true',
+  help='Disable style checking hooks')
+AddOption('--gold-linker', action='store_true', help='Use the gold linker')
+AddOption('--no-lto', action='store_true',
+  help='Disable Link-Time Optimization for fast')
+AddOption('--force-lto', action='store_true',
+  

[gem5-dev] Change in gem5/gem5[develop]: cpu-kvm: convert kvm base to new style stats

2020-08-31 Thread Eden Avivi (Gerrit) via gem5-dev
Eden Avivi has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/33796 )



Change subject: cpu-kvm: convert kvm base to new style stats
..

cpu-kvm: convert kvm base to new style stats

Change-Id: Iab2e99720cf9ac58edfcbdcedc944264eb12b7e1
---
M src/cpu/kvm/base.cc
M src/cpu/kvm/base.hh
2 files changed, 40 insertions(+), 78 deletions(-)



diff --git a/src/cpu/kvm/base.cc b/src/cpu/kvm/base.cc
index 0afab1e..d39dc7b 100644
--- a/src/cpu/kvm/base.cc
+++ b/src/cpu/kvm/base.cc
@@ -75,7 +75,7 @@
 false, Event::CPU_Tick_Pri),
   activeInstPeriod(0),
   perfControlledByTimer(params->usePerfOverflow),
-  hostFactor(params->hostFactor),
+  hostFactor(params->hostFactor), stats(this),
   ctrInsts(0)
 {
 if (pageSize == -1)
@@ -258,62 +258,22 @@

 }

-void
-BaseKvmCPU::regStats()
+BaseKvmCPU::StatGroup::StatGroup(Stats::Group *parent)
+: Stats::Group(parent),
+ADD_STAT(numInsts, "Number of instructions committed"),
+ADD_STAT(numVMExits, "total number of KVM exits"),
+ADD_STAT(numVMHalfEntries,
+ "number of KVM entries to finalize pending operations"),
+ADD_STAT(numExitSignal, "exits due to signal delivery"),
+ADD_STAT(numMMIO, "number of VM exits due to memory mapped IO"),
+ADD_STAT(numCoalescedMMIO,
+ "number of coalesced memory mapped IO requests"),
+ADD_STAT(numIO, "number of VM exits due to legacy IO"),
+ADD_STAT(numHalt,
+ "number of VM exits due to wait for interrupt instructions"),
+ADD_STAT(numInterrupts, "number of interrupts delivered"),
+ADD_STAT(numHypercalls, "number of hypercalls")
 {
-using namespace Stats;
-
-BaseCPU::regStats();
-
-numInsts
-.name(name() + ".committedInsts")
-.desc("Number of instructions committed")
-;
-
-numVMExits
-.name(name() + ".numVMExits")
-.desc("total number of KVM exits")
-;
-
-numVMHalfEntries
-.name(name() + ".numVMHalfEntries")
-.desc("number of KVM entries to finalize pending operations")
-;
-
-numExitSignal
-.name(name() + ".numExitSignal")
-.desc("exits due to signal delivery")
-;
-
-numMMIO
-.name(name() + ".numMMIO")
-.desc("number of VM exits due to memory mapped IO")
-;
-
-numCoalescedMMIO
-.name(name() + ".numCoalescedMMIO")
-.desc("number of coalesced memory mapped IO requests")
-;
-
-numIO
-.name(name() + ".numIO")
-.desc("number of VM exits due to legacy IO")
-;
-
-numHalt
-.name(name() + ".numHalt")
-.desc("number of VM exits due to wait for interrupt instructions")
-;
-
-numInterrupts
-.name(name() + ".numInterrupts")
-.desc("number of interrupts delivered")
-;
-
-numHypercalls
-.name(name() + ".numHypercalls")
-.desc("number of hypercalls")
-;
 }

 void
@@ -672,7 +632,7 @@
   if (_kvmRun->exit_reason !=  KVM_EXIT_INTR) {
   _status = RunningService;
   } else {
-  ++numExitSignal;
+  ++stats.numExitSignal;
   _status = Running;
   }

@@ -735,7 +695,7 @@
 // then immediately exits.
 DPRINTF(KvmRun, "KVM: Delivering IO without full guest entry\n");

-++numVMHalfEntries;
+++stats.numVMHalfEntries;

 // Send a KVM_KICK_SIGNAL to the vCPU thread (i.e., this
 // thread). The KVM control signal is masked while executing
@@ -803,7 +763,7 @@

 /* Update statistics */
 numCycles += simCyclesExecuted;;
-numInsts += instsExecuted;
+stats.numInsts += instsExecuted;
 ctrInsts += instsExecuted;
 system->totalNumInsts += instsExecuted;

@@ -813,7 +773,7 @@
 instsExecuted, hostCyclesExecuted, ticksExecuted,  
simCyclesExecuted);

 }

-++numVMExits;
+++stats.numVMExits;

 return ticksExecuted + flushCoalescedMMIO();
 }
@@ -821,7 +781,7 @@
 void
 BaseKvmCPU::kvmNonMaskableInterrupt()
 {
-++numInterrupts;
+++stats.numInterrupts;
 if (ioctl(KVM_NMI) == -1)
 panic("KVM: Failed to deliver NMI to virtual CPU\n");
 }
@@ -829,7 +789,7 @@
 void
 BaseKvmCPU::kvmInterrupt(const struct kvm_interrupt )
 {
-++numInterrupts;
+++stats.numInterrupts;
 if (ioctl(KVM_INTERRUPT, (void *)) == -1)
 panic("KVM: Failed to deliver interrupt to virtual CPU\n");
 }
@@ -1000,20 +960,20 @@

   case KVM_EXIT_IO:
   {
-++numIO;
+++stats.numIO;
 Tick ticks = handleKvmExitIO();
 _status = dataPort.nextIOState();
 return ticks;
   }

   case KVM_EXIT_HYPERCALL:
-++numHypercalls;
+++stats.numHypercalls;
 return handleKvmExitHypercall();

   case KVM_EXIT_HLT:
 /* The guest has halted and is waiting 

[gem5-dev] Change in gem5/gem5[develop]: mem-cache: Fix copy ellision on base compressor

2020-08-31 Thread Daniel Carvalho (Gerrit) via gem5-dev
Daniel Carvalho has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/33835 )



Change subject: mem-cache: Fix copy ellision on base compressor
..

mem-cache: Fix copy ellision on base compressor

Newer compiler versions have a problem with this move as
it prevents copy elision.

Change-Id: I802703df12e171d6a377b673d0ad7e202456b516
Signed-off-by: Daniel R. Carvalho 
---
M src/mem/cache/compressors/base.cc
1 file changed, 1 insertion(+), 1 deletion(-)



diff --git a/src/mem/cache/compressors/base.cc  
b/src/mem/cache/compressors/base.cc

index e12e36e..1408d2d 100644
--- a/src/mem/cache/compressors/base.cc
+++ b/src/mem/cache/compressors/base.cc
@@ -165,7 +165,7 @@
 "Compression latency: %llu, decompression latency: %llu\n",
 blkSize*8, comp_size_bits, comp_lat, decomp_lat);

-return std::move(comp_data);
+return comp_data;
 }

 Cycles

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/33835
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I802703df12e171d6a377b673d0ad7e202456b516
Gerrit-Change-Number: 33835
Gerrit-PatchSet: 1
Gerrit-Owner: Daniel Carvalho 
Gerrit-MessageType: newchange
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-dev] Change in gem5/gem5[develop]: cpu-o3: convert fetch to new style stats

2020-08-31 Thread Eden Avivi (Gerrit) via gem5-dev
Eden Avivi has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/33815 )



Change subject: cpu-o3: convert fetch to new style stats
..

cpu-o3: convert fetch to new style stats

Change-Id: Ib50a303570ac1dd45ff11a32a823f47a6c4c02cd
---
M src/cpu/o3/cpu.cc
M src/cpu/o3/fetch.hh
M src/cpu/o3/fetch_impl.hh
3 files changed, 173 insertions(+), 200 deletions(-)



diff --git a/src/cpu/o3/cpu.cc b/src/cpu/o3/cpu.cc
index d911490..7a88c4e 100644
--- a/src/cpu/o3/cpu.cc
+++ b/src/cpu/o3/cpu.cc
@@ -441,7 +441,6 @@
 .precision(6);
 totalIpc =  sum(committedInsts) / numCycles;

-this->fetch.regStats();
 this->decode.regStats();
 this->rename.regStats();
 this->iew.regStats();
diff --git a/src/cpu/o3/fetch.hh b/src/cpu/o3/fetch.hh
index 77c6336..112bd87 100644
--- a/src/cpu/o3/fetch.hh
+++ b/src/cpu/o3/fetch.hh
@@ -222,8 +222,6 @@
 /** Returns the name of fetch. */
 std::string name() const;

-/** Registers statistics. */
-void regStats();

 /** Registers probes. */
 void regProbePoints();
@@ -330,7 +328,8 @@
  const DynInstPtr squashInst, ThreadID tid);

 /** Squashes a specific thread and resets the PC. Also tells the CPU to
- * remove any instructions between fetch and decode that should be  
sqaushed.

+ * remove any instructions between fetch and decode
+ *  that should be sqaushed.
  */
 void squashFromDecode(const TheISA::PCState ,
   const DynInstPtr squashInst,
@@ -545,58 +544,65 @@

 /** Event used to delay fault generation of translation faults */
 FinishTranslationEvent finishTranslationEvent;
-
-// @todo: Consider making these vectors and tracking on a per thread  
basis.

-/** Stat for total number of cycles stalled due to an icache miss. */
-Stats::Scalar icacheStallCycles;
-/** Stat for total number of fetched instructions. */
-Stats::Scalar fetchedInsts;
-/** Total number of fetched branches. */
-Stats::Scalar fetchedBranches;
-/** Stat for total number of predicted branches. */
-Stats::Scalar predictedBranches;
-/** Stat for total number of cycles spent fetching. */
-Stats::Scalar fetchCycles;
-/** Stat for total number of cycles spent squashing. */
-Stats::Scalar fetchSquashCycles;
-/** Stat for total number of cycles spent waiting for translation */
-Stats::Scalar fetchTlbCycles;
-/** Stat for total number of cycles spent blocked due to other stages  
in

- * the pipeline.
- */
-Stats::Scalar fetchIdleCycles;
-/** Total number of cycles spent blocked. */
-Stats::Scalar fetchBlockedCycles;
-/** Total number of cycles spent in any other state. */
-Stats::Scalar fetchMiscStallCycles;
-/** Total number of cycles spent in waiting for drains. */
-Stats::Scalar fetchPendingDrainCycles;
-/** Total number of stall cycles caused by no active threads to run. */
-Stats::Scalar fetchNoActiveThreadStallCycles;
-/** Total number of stall cycles caused by pending traps. */
-Stats::Scalar fetchPendingTrapStallCycles;
-/** Total number of stall cycles caused by pending quiesce  
instructions. */

-Stats::Scalar fetchPendingQuiesceStallCycles;
-/** Total number of stall cycles caused by I-cache wait retrys. */
-Stats::Scalar fetchIcacheWaitRetryStallCycles;
-/** Stat for total number of fetched cache lines. */
-Stats::Scalar fetchedCacheLines;
-/** Total number of outstanding icache accesses that were dropped
- * due to a squash.
- */
-Stats::Scalar fetchIcacheSquashes;
-/** Total number of outstanding tlb accesses that were dropped
- * due to a squash.
- */
-Stats::Scalar fetchTlbSquashes;
-/** Distribution of number of instructions fetched each cycle. */
-Stats::Distribution fetchNisnDist;
-/** Rate of how often fetch was idle. */
-Stats::Formula idleRate;
-/** Number of branch fetches per cycle. */
-Stats::Formula branchRate;
-/** Number of instruction fetched per cycle. */
-Stats::Formula fetchRate;
+protected:
+struct FetchStatGroup : public Stats::Group
+{
+FetchStatGroup(O3CPU *cpu, DefaultFetch *fetch);
+// @todo: Consider making these
+// vectors and tracking on a per thread basis.
+/** Stat for total number of cycles stalled due to an icache miss.  
*/

+Stats::Scalar icacheStallCycles;
+/** Stat for total number of fetched instructions. */
+Stats::Scalar fetchedInsts;
+/** Total number of fetched branches. */
+Stats::Scalar fetchedBranches;
+/** Stat for total number of predicted branches. */
+Stats::Scalar predictedBranches;
+/** Stat for total number of cycles spent fetching. */
+Stats::Scalar fetchCycles;
+/** Stat for total number of cycles 

[gem5-dev] Change in gem5/gem5[develop]: mem-ruby: WIP changes to run GPU tester

2020-08-31 Thread Bradford Beckmann (Gerrit) via gem5-dev
Bradford Beckmann has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/33795 )



Change subject: mem-ruby: WIP changes to run GPU tester
..

mem-ruby: WIP changes to run GPU tester

Change-Id: I172eb985e03eefb2dde11771b4ad2b85aefaaed1
---
M src/mem/ruby/system/GPUCoalescer.cc
M src/mem/ruby/system/GPUCoalescer.hh
M src/mem/ruby/system/VIPERCoalescer.cc
3 files changed, 6 insertions(+), 6 deletions(-)



diff --git a/src/mem/ruby/system/GPUCoalescer.cc  
b/src/mem/ruby/system/GPUCoalescer.cc

index 1a44e55..f198fbb 100644
--- a/src/mem/ruby/system/GPUCoalescer.cc
+++ b/src/mem/ruby/system/GPUCoalescer.cc
@@ -194,7 +194,7 @@
 {
 }

-Port &
+/*Port &
 GPUCoalescer::getPort(const std::string _name, PortID idx)
 {
 if (if_name == "gmTokenPort") {
@@ -203,7 +203,7 @@

 // delgate to RubyPort otherwise
 return RubyPort::getPort(if_name, idx);
-}
+}*/

 void
 GPUCoalescer::wakeup()
diff --git a/src/mem/ruby/system/GPUCoalescer.hh  
b/src/mem/ruby/system/GPUCoalescer.hh

index ca53c7f..f4a10f6 100644
--- a/src/mem/ruby/system/GPUCoalescer.hh
+++ b/src/mem/ruby/system/GPUCoalescer.hh
@@ -263,8 +263,8 @@
 GPUCoalescer(const Params *);
 ~GPUCoalescer();

-Port (const std::string _name,
-  PortID idx = InvalidPortID) override;
+/*Port (const std::string _name,
+  PortID idx = InvalidPortID) override;*/

 // Public Methods
 void wakeup(); // Used only for deadlock detection
diff --git a/src/mem/ruby/system/VIPERCoalescer.cc  
b/src/mem/ruby/system/VIPERCoalescer.cc

index 231c20a..d0433b1 100644
--- a/src/mem/ruby/system/VIPERCoalescer.cc
+++ b/src/mem/ruby/system/VIPERCoalescer.cc
@@ -202,7 +202,7 @@
 m_controller->mandatoryQueueLatency(crequest->getRubyType()));
 m_mandatory_q_ptr->enqueue(msg, clockEdge(), latency);
 }
-
+/*
 void
 VIPERCoalescer::makeWriteCompletePkts(CoalescedRequest* crequest)
 {
@@ -261,7 +261,7 @@
 if (m_writeCompletePktMap[key].empty())
 m_writeCompletePktMap.erase(key);
 }
-
+*/
 void
 VIPERCoalescer::invTCPCallback(Addr addr)
 {

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/33795
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I172eb985e03eefb2dde11771b4ad2b85aefaaed1
Gerrit-Change-Number: 33795
Gerrit-PatchSet: 1
Gerrit-Owner: Bradford Beckmann 
Gerrit-MessageType: newchange
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-dev] Build failed in Jenkins: gem5_develop #161

2020-08-31 Thread jenkins-no-reply--- via gem5-dev
See 


Changes:

[matthew.poremba] misc: Use VPtr in hsa_driver.cc

[odanrc] mem-cache: Fix integer promotion of mask

[odanrc] mem-cache: Fix RepeatedQwords compressor

[odanrc] mem-cache: Upgrade BaseDictionaryCompressor's stats

[odanrc] mem-cache: Upgrade Compressor::Multi's stats

[odanrc] mem-cache: Allow inheriting from DitionaryCompressor's comp data

[odanrc] mem-cache: Standardize data parsing in compressors

[odanrc] mem-cache: Add encoding bits to the data of multi compressors

[odanrc] mem-cache: Store BDI's encoding in tags

[odanrc] mem-cache: Add an extra decomp lat to multi compressor

[odanrc] mem-cache: Handle zero sizes on compression

[odanrc] mem-cache: Add stats for failed compressions

[odanrc] mem-cache: Make compression size threshold a percentage

[odanrc] mem-cache: Explicitly define threshold of BDI's sub-compressors

[odanrc] mem-cache: Use cache's max CR on perfect compressor


--
Started by an SCM change
Running as SYSTEM
Building in workspace 
The recommended git tool is: git
No credentials specified
 > git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > git config remote.origin.url https://gem5.googlesource.com/public/gem5 # 
 > timeout=10
Fetching upstream changes from https://gem5.googlesource.com/public/gem5
 > git --version # timeout=10
 > git --version # 'git version 2.25.1'
 > git fetch --tags --force --progress -- 
 > https://gem5.googlesource.com/public/gem5 
 > +refs/heads/*:refs/remotes/origin/* # timeout=10
 > git rev-parse refs/remotes/origin/develop^{commit} # timeout=10
 > git rev-parse refs/remotes/origin/origin/develop^{commit} # timeout=10
Checking out Revision c0d67b2263aab6a729368373d9cdef9883870241 
(refs/remotes/origin/develop)
 > git config core.sparsecheckout # timeout=10
 > git checkout -f c0d67b2263aab6a729368373d9cdef9883870241 # timeout=10
Commit message: "mem-cache: Use cache's max CR on perfect compressor"
 > git rev-list --no-walk 9547cd285c06c9a95192192ab31a34d77b11df4e # timeout=10
[gem5_develop] $ /bin/sh -xe /tmp/jenkins2396689978323792183.sh
+ cd tests
+ ./main.py run -j 4 -t 4
build/RISCV/mem/cache/compressors/base.cc: In member function 
'std::unique_ptr 
Compressor::Base::compress(const uint64_t*, Cycles&, Cycles&)':
build/RISCV/mem/cache/compressors/base.cc:168:21: error: moving a local object 
in a return statement prevents copy elision [-Werror=pessimizing-move]
  168 | return std::move(comp_data);
  |~^~~
build/RISCV/mem/cache/compressors/base.cc:168:21: note: remove 'std::move' call
cc1plus: all warnings being treated as errors
scons: *** [build/RISCV/mem/cache/compressors/base.o] Error 1
Running the new gem5 testing script.
For more information see TESTING.md.
To see details as the testing scripts are running, use the option -v, -vv, or 
-vvv

Loading Tests
Discovered 2544 tests and 2544 suites in 

Discovered 264 tests and 132 suites in 

Discovered 24 tests and 12 suites in 

Discovered 166 tests and 166 suites in 

Discovered 270 tests and 135 suites in 

Discovered 0 tests and 0 suites in 

Discovered 48 tests and 48 suites in 

Discovered 48 tests and 24 suites in 

Discovered 18 tests and 9 suites in 

Discovered 12 tests and 6 suites in 

Discovered 0 tests and 0 suites in 

Discovered 72 tests and 72 suites in 

Discovered 18 tests and 18 suites in 

Discovered 18 tests and 18 suites in 


Running Tests from 502 suites
Results will be stored in 

[gem5-dev] Change in gem5/gem5[develop]: mem-cache: Add stats for failed compressions

2020-08-31 Thread Daniel Carvalho (Gerrit) via gem5-dev
Daniel Carvalho has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/33384 )


Change subject: mem-cache: Add stats for failed compressions
..

mem-cache: Add stats for failed compressions

Add statistics to keep track of the number of times compression
has failed to provide blocks whose compressed size passes the
size threshold.

Also, update the compressed data's size if compression fails.

Change-Id: If3479572bf114f07911238c602ffef3a90b6a931
Signed-off-by: Daniel R. Carvalho 
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/33384
Reviewed-by: Nikos Nikoleris 
Maintainer: Nikos Nikoleris 
Tested-by: kokoro 
---
M src/mem/cache/compressors/base.cc
M src/mem/cache/compressors/base.hh
2 files changed, 6 insertions(+), 0 deletions(-)

Approvals:
  Nikos Nikoleris: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/mem/cache/compressors/base.cc  
b/src/mem/cache/compressors/base.cc

index 788a76f..5b96e97 100644
--- a/src/mem/cache/compressors/base.cc
+++ b/src/mem/cache/compressors/base.cc
@@ -148,6 +148,7 @@
 if (comp_size_bits > sizeThreshold * CHAR_BIT) {
 comp_size_bits = blkSize * CHAR_BIT;
 comp_data->setSizeBits(comp_size_bits);
+stats.failedCompressions++;
 }

 // Update stats
@@ -209,6 +210,8 @@
   : Stats::Group(&_compressor), compressor(_compressor),
 compressions(this, "compressions",
 "Total number of compressions"),
+failedCompressions(this, "failed_compressions",
+"Total number of failed compressions"),
 compressionSize(this, "compression_size",
 "Number of blocks that were compressed to this power of two size"),
 compressionSizeBits(this, "compression_size_bits",
diff --git a/src/mem/cache/compressors/base.hh  
b/src/mem/cache/compressors/base.hh

index 1008aae..2725f71 100644
--- a/src/mem/cache/compressors/base.hh
+++ b/src/mem/cache/compressors/base.hh
@@ -106,6 +106,9 @@
 /** Number of compressions performed. */
 Stats::Scalar compressions;

+/** Number of failed compressions. */
+Stats::Scalar failedCompressions;
+
 /** Number of blocks that were compressed to this power of two  
size. */

 Stats::Vector compressionSize;


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/33384
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: If3479572bf114f07911238c602ffef3a90b6a931
Gerrit-Change-Number: 33384
Gerrit-PatchSet: 3
Gerrit-Owner: Daniel Carvalho 
Gerrit-Reviewer: Daniel Carvalho 
Gerrit-Reviewer: Nikos Nikoleris 
Gerrit-Reviewer: kokoro 
Gerrit-MessageType: merged
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-dev] Change in gem5/gem5[develop]: mem-cache: Use cache's max CR on perfect compressor

2020-08-31 Thread Daniel Carvalho (Gerrit) via gem5-dev
Daniel Carvalho has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/33387 )


Change subject: mem-cache: Use cache's max CR on perfect compressor
..

mem-cache: Use cache's max CR on perfect compressor

Use cache's max_compression_ratio to setup the max_compression_ratio
of the PerfectCompressor.

Change-Id: Ib44aa61975fb2cc52f27f64a86c9df9c5531aa1a
Signed-off-by: Daniel R. Carvalho 
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/33387
Reviewed-by: Nikos Nikoleris 
Maintainer: Nikos Nikoleris 
Tested-by: kokoro 
---
M src/mem/cache/compressors/Compressors.py
1 file changed, 1 insertion(+), 1 deletion(-)

Approvals:
  Nikos Nikoleris: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/mem/cache/compressors/Compressors.py  
b/src/mem/cache/compressors/Compressors.py

index 2497e82..d7dfdab 100644
--- a/src/mem/cache/compressors/Compressors.py
+++ b/src/mem/cache/compressors/Compressors.py
@@ -125,7 +125,7 @@
 cxx_header = "mem/cache/compressors/perfect.hh"

 chunk_size_bits = 64
-max_compression_ratio = Param.Int(2,
+max_compression_ratio = Param.Int(Parent.max_compression_ratio,
 "Maximum compression ratio allowed")
 compression_latency = Param.Cycles(1,
 "Number of cycles to perform data compression")

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/33387
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: Ib44aa61975fb2cc52f27f64a86c9df9c5531aa1a
Gerrit-Change-Number: 33387
Gerrit-PatchSet: 3
Gerrit-Owner: Daniel Carvalho 
Gerrit-Reviewer: Daniel Carvalho 
Gerrit-Reviewer: Nikos Nikoleris 
Gerrit-Reviewer: kokoro 
Gerrit-MessageType: merged
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-dev] Change in gem5/gem5[develop]: mem-cache: Explicitly define threshold of BDI's sub-compressors

2020-08-31 Thread Daniel Carvalho (Gerrit) via gem5-dev
Daniel Carvalho has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/33386 )


Change subject: mem-cache: Explicitly define threshold of BDI's  
sub-compressors

..

mem-cache: Explicitly define threshold of BDI's sub-compressors

Allow all sub-compressors of BDI to be successful as long as
they are able to compress. Then, BDI's actual size threshold
acts as the cutting point.

This situation arises on any multi compressor; yet, generalizing
this assumption might be too bold.

Change-Id: Iec5057d16d4a7ba5fb573133a30ea10869bd67e0
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/33386
Reviewed-by: Nikos Nikoleris 
Maintainer: Nikos Nikoleris 
Tested-by: kokoro 
---
M src/mem/cache/compressors/Compressors.py
1 file changed, 10 insertions(+), 3 deletions(-)

Approvals:
  Nikos Nikoleris: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/mem/cache/compressors/Compressors.py  
b/src/mem/cache/compressors/Compressors.py

index 9fa06f2..2497e82 100644
--- a/src/mem/cache/compressors/Compressors.py
+++ b/src/mem/cache/compressors/Compressors.py
@@ -148,6 +148,13 @@

 class BDI(MultiCompressor):
 encoding_in_tags=True
-compressors = [ZeroCompressor(), RepeatedQwordsCompressor(),
-Base64Delta8(), Base64Delta16(), Base64Delta32(), Base32Delta8(),
-Base32Delta16(), Base16Delta8()]
+compressors = [
+ZeroCompressor(size_threshold_percentage=99),
+RepeatedQwordsCompressor(size_threshold_percentage=99),
+Base64Delta8(size_threshold_percentage=99),
+Base64Delta16(size_threshold_percentage=99),
+Base64Delta32(size_threshold_percentage=99),
+Base32Delta8(size_threshold_percentage=99),
+Base32Delta16(size_threshold_percentage=99),
+Base16Delta8(size_threshold_percentage=99),
+]

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/33386
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: Iec5057d16d4a7ba5fb573133a30ea10869bd67e0
Gerrit-Change-Number: 33386
Gerrit-PatchSet: 3
Gerrit-Owner: Daniel Carvalho 
Gerrit-Reviewer: Daniel Carvalho 
Gerrit-Reviewer: Nikos Nikoleris 
Gerrit-Reviewer: kokoro 
Gerrit-MessageType: merged
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-dev] Change in gem5/gem5[develop]: mem-cache: Make compression size threshold a percentage

2020-08-31 Thread Daniel Carvalho (Gerrit) via gem5-dev
Daniel Carvalho has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/33385 )


Change subject: mem-cache: Make compression size threshold a percentage
..

mem-cache: Make compression size threshold a percentage

By changing the parameter into a percentage, changing the block
size will automatically reconfigure the size threshold. Also,
change the default percentage to 50% to avoid storing blocks
unlikely to co-allocate in compressed format.

Change-Id: I1458f19db39becc2d40c00269132fea01770016f
Signed-off-by: Daniel R. Carvalho 
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/33385
Reviewed-by: Nikos Nikoleris 
Maintainer: Nikos Nikoleris 
Tested-by: kokoro 
---
M src/mem/cache/compressors/Compressors.py
M src/mem/cache/compressors/base.cc
2 files changed, 4 insertions(+), 4 deletions(-)

Approvals:
  Nikos Nikoleris: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/mem/cache/compressors/Compressors.py  
b/src/mem/cache/compressors/Compressors.py

index 01cb619..9fa06f2 100644
--- a/src/mem/cache/compressors/Compressors.py
+++ b/src/mem/cache/compressors/Compressors.py
@@ -37,9 +37,9 @@
 block_size = Param.Int(Parent.cache_line_size, "Block size in bytes")
 chunk_size_bits = Param.Unsigned(32,
 "Size of a parsing data chunk (in bits)")
-size_threshold = Param.Unsigned(Parent.cache_line_size, "Minimum  
size, "
-"in bytes, in which a block must be compressed to. Otherwise it  
is "

-"stored in its uncompressed state")
+size_threshold_percentage = Param.Percent(50,
+"Minimum percentage of the block size, a compressed block must "
+"achieve to be stored in compressed format")

 class BaseDictionaryCompressor(BaseCacheCompressor):
 type = 'BaseDictionaryCompressor'
diff --git a/src/mem/cache/compressors/base.cc  
b/src/mem/cache/compressors/base.cc

index 5b96e97..e12e36e 100644
--- a/src/mem/cache/compressors/base.cc
+++ b/src/mem/cache/compressors/base.cc
@@ -77,7 +77,7 @@

 Base::Base(const Params *p)
   : SimObject(p), blkSize(p->block_size),  
chunkSizeBits(p->chunk_size_bits),

-sizeThreshold(p->size_threshold),
+sizeThreshold((blkSize * p->size_threshold_percentage) / 100),
 stats(*this)
 {
 fatal_if(64 % chunkSizeBits,

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/33385
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I1458f19db39becc2d40c00269132fea01770016f
Gerrit-Change-Number: 33385
Gerrit-PatchSet: 3
Gerrit-Owner: Daniel Carvalho 
Gerrit-Reviewer: Daniel Carvalho 
Gerrit-Reviewer: Nikos Nikoleris 
Gerrit-Reviewer: kokoro 
Gerrit-MessageType: merged
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-dev] Change in gem5/gem5[develop]: mem-cache: Standardize data parsing in compressors

2020-08-31 Thread Daniel Carvalho (Gerrit) via gem5-dev
Daniel Carvalho has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/33379 )


Change subject: mem-cache: Standardize data parsing in compressors
..

mem-cache: Standardize data parsing in compressors

The compressors are not able to process a whole line at once,
so they must divide it into multiple same-sized chunks. This
patch makes the base compressor responsible for this division,
so that the derived classes are mostly agnostic to this
translation.

This change has been coupled with a change of the signature
of the public compress() to avoid introducing a temporary
function rename. Previously, this function did not return
the compressed data, under the assumption that everything
related to the compressed data would be handled by the
compressor. However, sometimes the units using the compressor
could need to know or store the compressed data.

For example, when sharing dictionaries the compressed data
must be checked to determine if two blocks can co-allocate
(DISH, Panda et al. 2016).

Change-Id: Id8dbf68936b1457ca8292cc0a852b0f0a2eeeb51
Signed-off-by: Daniel R. Carvalho 
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/33379
Reviewed-by: Nikos Nikoleris 
Maintainer: Nikos Nikoleris 
Tested-by: kokoro 
---
M src/mem/cache/base.cc
M src/mem/cache/compressors/Compressors.py
M src/mem/cache/compressors/base.cc
M src/mem/cache/compressors/base.hh
M src/mem/cache/compressors/base_delta.hh
M src/mem/cache/compressors/base_delta_impl.hh
M src/mem/cache/compressors/cpack.cc
M src/mem/cache/compressors/cpack.hh
M src/mem/cache/compressors/dictionary_compressor.hh
M src/mem/cache/compressors/dictionary_compressor_impl.hh
M src/mem/cache/compressors/fpcd.cc
M src/mem/cache/compressors/fpcd.hh
M src/mem/cache/compressors/multi.cc
M src/mem/cache/compressors/multi.hh
M src/mem/cache/compressors/perfect.cc
M src/mem/cache/compressors/perfect.hh
M src/mem/cache/compressors/repeated_qwords.cc
M src/mem/cache/compressors/repeated_qwords.hh
M src/mem/cache/compressors/zero.cc
M src/mem/cache/compressors/zero.hh
20 files changed, 179 insertions(+), 82 deletions(-)

Approvals:
  Nikos Nikoleris: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/mem/cache/base.cc b/src/mem/cache/base.cc
index 0187703..a1fd151 100644
--- a/src/mem/cache/base.cc
+++ b/src/mem/cache/base.cc
@@ -844,11 +844,11 @@

 // The compressor is called to compress the updated data, so that its
 // metadata can be updated.
-std::size_t compression_size = 0;
 Cycles compression_lat = Cycles(0);
 Cycles decompression_lat = Cycles(0);
-compressor->compress(data, compression_lat, decompression_lat,
- compression_size);
+const auto comp_data =
+compressor->compress(data, compression_lat, decompression_lat);
+std::size_t compression_size = comp_data->getSizeBits();

 // If block's compression factor increased, it may not be  
co-allocatable
 // anymore. If so, some blocks might need to be evicted to make room  
for

@@ -1421,8 +1421,9 @@
 // calculate the amount of extra cycles needed to read or write  
compressed

 // blocks.
 if (compressor && pkt->hasData()) {
-compressor->compress(pkt->getConstPtr(), compression_lat,
- decompression_lat, blk_size_bits);
+const auto comp_data = compressor->compress(
+pkt->getConstPtr(), compression_lat,  
decompression_lat);

+blk_size_bits = comp_data->getSizeBits();
 }

 // Find replacement victim
diff --git a/src/mem/cache/compressors/Compressors.py  
b/src/mem/cache/compressors/Compressors.py

index 46050f6..1c47ac1 100644
--- a/src/mem/cache/compressors/Compressors.py
+++ b/src/mem/cache/compressors/Compressors.py
@@ -35,6 +35,8 @@
 cxx_header = "mem/cache/compressors/base.hh"

 block_size = Param.Int(Parent.cache_line_size, "Block size in bytes")
+chunk_size_bits = Param.Unsigned(32,
+"Size of a parsing data chunk (in bits)")
 size_threshold = Param.Unsigned(Parent.cache_line_size, "Minimum  
size, "
 "in bytes, in which a block must be compressed to. Otherwise it  
is "

 "stored in its uncompressed state")
@@ -53,31 +55,43 @@
 cxx_class = 'Compressor::Base64Delta8'
 cxx_header = "mem/cache/compressors/base_delta.hh"

+chunk_size_bits = 64
+
 class Base64Delta16(BaseDictionaryCompressor):
 type = 'Base64Delta16'
 cxx_class = 'Compressor::Base64Delta16'
 cxx_header = "mem/cache/compressors/base_delta.hh"

+chunk_size_bits = 64
+
 class Base64Delta32(BaseDictionaryCompressor):
 type = 'Base64Delta32'
 cxx_class = 'Compressor::Base64Delta32'
 cxx_header = "mem/cache/compressors/base_delta.hh"

+chunk_size_bits = 64
+
 class Base32Delta8(BaseDictionaryCompressor):
 type = 'Base32Delta8'
 cxx_class = 

[gem5-dev] Change in gem5/gem5[develop]: mem-cache: Upgrade BaseDictionaryCompressor's stats

2020-08-31 Thread Daniel Carvalho (Gerrit) via gem5-dev
Daniel Carvalho has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/33376 )


Change subject: mem-cache: Upgrade BaseDictionaryCompressor's stats
..

mem-cache: Upgrade BaseDictionaryCompressor's stats

Upgrade this compressor's stats to match current stats API.

Change-Id: I1cb69230f8deca053bc860cedafc9e6e78446df7
Signed-off-by: Daniel R. Carvalho 
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/33376
Reviewed-by: Nikos Nikoleris 
Maintainer: Nikos Nikoleris 
Tested-by: kokoro 
---
M src/mem/cache/compressors/base_dictionary_compressor.cc
M src/mem/cache/compressors/dictionary_compressor.hh
M src/mem/cache/compressors/dictionary_compressor_impl.hh
3 files changed, 30 insertions(+), 25 deletions(-)

Approvals:
  Nikos Nikoleris: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/mem/cache/compressors/base_dictionary_compressor.cc  
b/src/mem/cache/compressors/base_dictionary_compressor.cc

index d6af8ee..ebbfc1c 100644
--- a/src/mem/cache/compressors/base_dictionary_compressor.cc
+++ b/src/mem/cache/compressors/base_dictionary_compressor.cc
@@ -37,26 +37,31 @@
 namespace Compressor {

 BaseDictionaryCompressor::BaseDictionaryCompressor(const Params *p)
-: Base(p), dictionarySize(p->dictionary_size), numEntries(0)
+  : Base(p), dictionarySize(p->dictionary_size),
+numEntries(0), dictionaryStats(stats, *this)
+{
+}
+
+BaseDictionaryCompressor::DictionaryStats::DictionaryStats(
+BaseStats& base_group, BaseDictionaryCompressor& _compressor)
+  : Stats::Group(_group), compressor(_compressor),
+patterns(this, "pattern",
+"Number of data entries that were compressed to this pattern")
 {
 }

 void
-BaseDictionaryCompressor::regStats()
+BaseDictionaryCompressor::DictionaryStats::regStats()
 {
-Base::regStats();
+Stats::Group::regStats();

 // We store the frequency of each pattern
-patternStats
-.init(getNumPatterns())
-.name(name() + ".pattern")
-.desc("Number of data entries that were compressed to this  
pattern.")

-;
-
-for (unsigned i = 0; i < getNumPatterns(); ++i) {
-patternStats.subname(i, getName(i));
-patternStats.subdesc(i, "Number of data entries that match  
pattern " +

-getName(i));
+patterns.init(compressor.getNumPatterns());
+for (unsigned i = 0; i < compressor.getNumPatterns(); ++i) {
+const std::string name = compressor.getName(i);
+patterns.subname(i, name);
+patterns.subdesc(i, "Number of data entries that match pattern " +
+name);
 }
 }

diff --git a/src/mem/cache/compressors/dictionary_compressor.hh  
b/src/mem/cache/compressors/dictionary_compressor.hh

index b9c68a1..b5e9e67 100644
--- a/src/mem/cache/compressors/dictionary_compressor.hh
+++ b/src/mem/cache/compressors/dictionary_compressor.hh
@@ -51,6 +51,7 @@
 #include 
 #include 

+#include "base/statistics.hh"
 #include "base/types.hh"
 #include "mem/cache/compressors/base.hh"

@@ -67,17 +68,18 @@
 /** Number of valid entries in the dictionary. */
 std::size_t numEntries;

-/**
- * @defgroup CompressionStats Compression specific statistics.
- * @{
- */
+struct DictionaryStats : public Stats::Group
+{
+const BaseDictionaryCompressor& compressor;

-/** Number of data entries that were compressed to each pattern. */
-Stats::Vector patternStats;
+DictionaryStats(BaseStats _group,
+BaseDictionaryCompressor& _compressor);

-/**
- * @}
- */
+void regStats() override;
+
+/** Number of data entries that were compressed to each pattern. */
+Stats::Vector patterns;
+} dictionaryStats;

 /**
  * Trick function to get the number of patterns.
@@ -98,8 +100,6 @@
 typedef BaseDictionaryCompressorParams Params;
 BaseDictionaryCompressor(const Params *p);
 ~BaseDictionaryCompressor() = default;
-
-void regStats() override;
 };

 /**
diff --git a/src/mem/cache/compressors/dictionary_compressor_impl.hh  
b/src/mem/cache/compressors/dictionary_compressor_impl.hh

index 0b486e3..6b6e5fb 100644
--- a/src/mem/cache/compressors/dictionary_compressor_impl.hh
+++ b/src/mem/cache/compressors/dictionary_compressor_impl.hh
@@ -104,7 +104,7 @@
 }

 // Update stats
-patternStats[pattern->getPatternNumber()]++;
+dictionaryStats.patterns[pattern->getPatternNumber()]++;

 // Push into dictionary
 if (pattern->shouldAllocate()) {

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/33376
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I1cb69230f8deca053bc860cedafc9e6e78446df7
Gerrit-Change-Number: 33376
Gerrit-PatchSet: 2
Gerrit-Owner: 

[gem5-dev] Change in gem5/gem5[develop]: mem-cache: Upgrade Compressor::Multi's stats

2020-08-31 Thread Daniel Carvalho (Gerrit) via gem5-dev
Daniel Carvalho has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/33377 )


Change subject: mem-cache: Upgrade Compressor::Multi's stats
..

mem-cache: Upgrade Compressor::Multi's stats

Use new style stats API for Compressor::Multi's stats.

Change-Id: Ia0313704cae4e7bd6bc675c71ea75b42a8e542f2
Signed-off-by: Daniel R. Carvalho 
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/33377
Reviewed-by: Nikos Nikoleris 
Maintainer: Nikos Nikoleris 
Tested-by: kokoro 
---
M src/mem/cache/compressors/multi.cc
M src/mem/cache/compressors/multi.hh
2 files changed, 32 insertions(+), 26 deletions(-)

Approvals:
  Nikos Nikoleris: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/mem/cache/compressors/multi.cc  
b/src/mem/cache/compressors/multi.cc

index f42602e..229c3b9 100644
--- a/src/mem/cache/compressors/multi.cc
+++ b/src/mem/cache/compressors/multi.cc
@@ -37,6 +37,7 @@
 #include 

 #include "base/bitfield.hh"
+#include "base/logging.hh"
 #include "base/trace.hh"
 #include "debug/CacheComp.hh"
 #include "params/MultiCompressor.hh"
@@ -57,7 +58,8 @@
 }

 Multi::Multi(const Params *p)
-: Base(p), compressors(p->compressors)
+  : Base(p), compressors(p->compressors),
+multiStats(stats, *this)
 {
 fatal_if(compressors.size() == 0, "There must be at least one  
compressor");

 }
@@ -137,7 +139,7 @@

 // Update compressor ranking stats
 for (int rank = 0; rank < compressors.size(); rank++) {
-rankStats[results.top()->index][rank]++;
+multiStats.ranks[results.top()->index][rank]++;
 results.pop();
 }

@@ -158,23 +160,26 @@
 casted_comp_data->compData.get(), cache_line);
 }

-void
-Multi::regStats()
+Multi::MultiStats::MultiStats(BaseStats& base_group, Multi& _compressor)
+  : Stats::Group(_group), compressor(_compressor),
+ranks(this, "ranks",
+"Number of times each compressor had the nth best compression")
 {
-Base::regStats();
+}

-rankStats
-.init(compressors.size(), compressors.size())
-.name(name() + ".rank")
-.desc("Number of times each compressor had the nth best  
compression.")

-;
+void
+Multi::MultiStats::regStats()
+{
+Stats::Group::regStats();

-for (int compressor = 0; compressor < compressors.size();  
compressor++) {

-rankStats.subname(compressor, std::to_string(compressor));
-rankStats.subdesc(compressor, "Number of times compressor " +
+const std::size_t num_compressors = compressor.compressors.size();
+ranks.init(num_compressors, num_compressors);
+for (unsigned compressor = 0; compressor < num_compressors;  
compressor++) {

+ranks.subname(compressor, std::to_string(compressor));
+ranks.subdesc(compressor, "Number of times compressor " +
 std::to_string(compressor) + " had the nth best compression.");
-for (unsigned rank = 0; rank < compressors.size(); rank++) {
-rankStats.ysubname(rank, std::to_string(rank));
+for (unsigned rank = 0; rank < num_compressors; rank++) {
+ranks.ysubname(rank, std::to_string(rank));
 }
 }
 }
diff --git a/src/mem/cache/compressors/multi.hh  
b/src/mem/cache/compressors/multi.hh

index db4f376..06af978 100644
--- a/src/mem/cache/compressors/multi.hh
+++ b/src/mem/cache/compressors/multi.hh
@@ -37,6 +37,7 @@
 #include 
 #include 

+#include "base/statistics.hh"
 #include "base/types.hh"
 #include "mem/cache/compressors/base.hh"

@@ -57,25 +58,25 @@
 /** List of sub-compressors. */
 std::vector compressors;

-/**
- * @defgroup CompressionStats Compression specific statistics.
- * @{
- */
+struct MultiStats : public Stats::Group
+{
+const Multi& compressor;

-/** Number of times each compressor provided the nth best compression.  
*/

-Stats::Vector2d rankStats;
+MultiStats(BaseStats _group, Multi& _compressor);

-/**
- * @}
- */
+void regStats() override;
+
+/**
+ * Number of times each compressor provided the nth best  
compression.

+ */
+Stats::Vector2d ranks;
+} multiStats;

   public:
 typedef MultiCompressorParams Params;
 Multi(const Params *p);
 ~Multi();

-void regStats() override;
-
 std::unique_ptr compress(
 const uint64_t* data, Cycles& comp_lat, Cycles& decomp_lat)  
override;



--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/33377
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: Ia0313704cae4e7bd6bc675c71ea75b42a8e542f2
Gerrit-Change-Number: 33377
Gerrit-PatchSet: 2
Gerrit-Owner: Daniel Carvalho 
Gerrit-Reviewer: Daniel Carvalho 
Gerrit-Reviewer: Nikos Nikoleris 
Gerrit-Reviewer: kokoro 

[gem5-dev] Change in gem5/gem5[develop]: mem-cache: Add an extra decomp lat to multi compressor

2020-08-31 Thread Daniel Carvalho (Gerrit) via gem5-dev
Daniel Carvalho has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/33382 )


Change subject: mem-cache: Add an extra decomp lat to multi compressor
..

mem-cache: Add an extra decomp lat to multi compressor

There is extra hardware required when dealing with multi
compressors. As such, add a parameter to allowing increasing
their decompression latency to account for any extra delay.

Change-Id: I153e4c5ab6927ac092e2ebd767fe88974597bb20
Signed-off-by: Daniel R. Carvalho 
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/33382
Reviewed-by: Nikos Nikoleris 
Maintainer: Nikos Nikoleris 
Tested-by: kokoro 
---
M src/mem/cache/compressors/Compressors.py
M src/mem/cache/compressors/multi.cc
M src/mem/cache/compressors/multi.hh
3 files changed, 11 insertions(+), 1 deletion(-)

Approvals:
  Nikos Nikoleris: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/mem/cache/compressors/Compressors.py  
b/src/mem/cache/compressors/Compressors.py

index 45effe9..01cb619 100644
--- a/src/mem/cache/compressors/Compressors.py
+++ b/src/mem/cache/compressors/Compressors.py
@@ -116,6 +116,8 @@
 encoding_in_tags = Param.Bool(False, "If set the bits to inform which "
 "sub-compressor compressed some data are added to its  
corresponding "

 "tag entry.")
+extra_decomp_lat = Param.Unsigned(0, "Extra latency to be added to  
the "

+"sub-compressor's decompression latency")

 class PerfectCompressor(BaseCacheCompressor):
 type = 'PerfectCompressor'
diff --git a/src/mem/cache/compressors/multi.cc  
b/src/mem/cache/compressors/multi.cc

index bb98dcd..b740a95 100644
--- a/src/mem/cache/compressors/multi.cc
+++ b/src/mem/cache/compressors/multi.cc
@@ -61,6 +61,7 @@
   : Base(p), compressors(p->compressors),
 numEncodingBits(p->encoding_in_tags ? 0 :
 std::log2(alignToPowerOfTwo(compressors.size(,
+extraDecompressionLatency(p->extra_decomp_lat),
 multiStats(stats, *this)
 {
 fatal_if(compressors.size() == 0, "There must be at least one  
compressor");

@@ -145,7 +146,7 @@
 DPRINTF(CacheComp, "Best compressor: %d\n", best_index);

 // Set decompression latency of the best compressor
-decomp_lat = results.top()->decompLat;
+decomp_lat = results.top()->decompLat + extraDecompressionLatency;

 // Update compressor ranking stats
 for (int rank = 0; rank < compressors.size(); rank++) {
diff --git a/src/mem/cache/compressors/multi.hh  
b/src/mem/cache/compressors/multi.hh

index 868682f..fe952d5 100644
--- a/src/mem/cache/compressors/multi.hh
+++ b/src/mem/cache/compressors/multi.hh
@@ -75,6 +75,13 @@
  */
 const std::size_t numEncodingBits;

+/**
+ * Extra decompression latency to be added to the sub-compressor's
+ * decompression latency. This can different from zero due to decoding,
+ * shifting, or packaging, for example.
+ */
+const Cycles extraDecompressionLatency;
+
 struct MultiStats : public Stats::Group
 {
 const Multi& compressor;

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/33382
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I153e4c5ab6927ac092e2ebd767fe88974597bb20
Gerrit-Change-Number: 33382
Gerrit-PatchSet: 2
Gerrit-Owner: Daniel Carvalho 
Gerrit-Reviewer: Daniel Carvalho 
Gerrit-Reviewer: Nikos Nikoleris 
Gerrit-Reviewer: kokoro 
Gerrit-MessageType: merged
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-dev] Change in gem5/gem5[develop]: mem-cache: Add encoding bits to the data of multi compressors

2020-08-31 Thread Daniel Carvalho (Gerrit) via gem5-dev
Daniel Carvalho has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/33380 )


Change subject: mem-cache: Add encoding bits to the data of multi  
compressors

..

mem-cache: Add encoding bits to the data of multi compressors

When compressing using a multi-compressor, one must be able to
identify which sub-compressor should be used to decompress data.
This can be achieved by either adding encoding bits to block's
tag or data entry.

It was previously assumed that these encoding bits would be added
to the tag, but now make it a parameter that defaults to the data
entry.

Change-Id: Id322425e7a6ad59cb2ec7a4167a43de4c55c482c
Signed-off-by: Daniel R. Carvalho 
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/33380
Reviewed-by: Nikos Nikoleris 
Maintainer: Nikos Nikoleris 
Tested-by: kokoro 
---
M src/mem/cache/compressors/Compressors.py
M src/mem/cache/compressors/multi.cc
M src/mem/cache/compressors/multi.hh
3 files changed, 24 insertions(+), 0 deletions(-)

Approvals:
  Nikos Nikoleris: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/mem/cache/compressors/Compressors.py  
b/src/mem/cache/compressors/Compressors.py

index 1c47ac1..f7e8a7d 100644
--- a/src/mem/cache/compressors/Compressors.py
+++ b/src/mem/cache/compressors/Compressors.py
@@ -113,6 +113,9 @@
 # since these compressors have many overlapping patterns
 compressors = VectorParam.BaseCacheCompressor([CPack(), FPCD()],
 "Array of compressors")
+encoding_in_tags = Param.Bool(False, "If set the bits to inform which "
+"sub-compressor compressed some data are added to its  
corresponding "

+"tag entry.")

 class PerfectCompressor(BaseCacheCompressor):
 type = 'PerfectCompressor'
diff --git a/src/mem/cache/compressors/multi.cc  
b/src/mem/cache/compressors/multi.cc

index 51dbc2b..bb98dcd 100644
--- a/src/mem/cache/compressors/multi.cc
+++ b/src/mem/cache/compressors/multi.cc
@@ -59,6 +59,8 @@

 Multi::Multi(const Params *p)
   : Base(p), compressors(p->compressors),
+numEncodingBits(p->encoding_in_tags ? 0 :
+std::log2(alignToPowerOfTwo(compressors.size(,
 multiStats(stats, *this)
 {
 fatal_if(compressors.size() == 0, "There must be at least one  
compressor");

@@ -128,6 +130,8 @@
 Cycles temp_decomp_lat;
 auto temp_comp_data =
 compressors[i]->compress(data, comp_lat, temp_decomp_lat);
+temp_comp_data->setSizeBits(temp_comp_data->getSizeBits() +
+numEncodingBits);
 results.push(std::make_shared(i,  
std::move(temp_comp_data),

 temp_decomp_lat, blkSize));
 max_comp_lat = std::max(max_comp_lat, comp_lat);
diff --git a/src/mem/cache/compressors/multi.hh  
b/src/mem/cache/compressors/multi.hh

index 095dd03..868682f 100644
--- a/src/mem/cache/compressors/multi.hh
+++ b/src/mem/cache/compressors/multi.hh
@@ -58,6 +58,23 @@
 /** List of sub-compressors. */
 std::vector compressors;

+/**
+ * An encoding is associated to each sub-compressor to inform which
+ * sub-compressor to use when decompressing data. This information can
+ * be added either to the tag entry, in which case no extra bits are
+ * added to the compressed data (numEncodingBits = 0), or to the
+ * compressed data itself.
+ *
+ * There is no encoding reserved for the uncompressed case; it is  
assumed
+ * that an "is compressed" bit is stored in the tags. Therefore, even  
if
+ * storing the encoding within the compressed data, these extra bits  
are

+ * not added when the data is uncompressible.
+ *
+ * These extra bits are taken into account when thresholding the
+ * compressed data's size.
+ */
+const std::size_t numEncodingBits;
+
 struct MultiStats : public Stats::Group
 {
 const Multi& compressor;

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/33380
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: Id322425e7a6ad59cb2ec7a4167a43de4c55c482c
Gerrit-Change-Number: 33380
Gerrit-PatchSet: 2
Gerrit-Owner: Daniel Carvalho 
Gerrit-Reviewer: Daniel Carvalho 
Gerrit-Reviewer: Nikos Nikoleris 
Gerrit-Reviewer: kokoro 
Gerrit-MessageType: merged
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-dev] Change in gem5/gem5[develop]: mem-cache: Handle zero sizes on compression

2020-08-31 Thread Daniel Carvalho (Gerrit) via gem5-dev
Daniel Carvalho has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/33383 )


Change subject: mem-cache: Handle zero sizes on compression
..

mem-cache: Handle zero sizes on compression

The size can be zero in special occasions, which would
generate divisions by zero. This patch expands the
stats to support them. It also fixes the compression
factor calculation in the Multi compressor.

As a side effect, now that zero sizes are handled, allow
the Zero compressor to generate it.

Change-Id: I9f7dee76576b09fdc9bef3e1f3f89be3726dcbd9
Signed-off-by: Daniel R. Carvalho 
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/33383
Reviewed-by: Nikos Nikoleris 
Maintainer: Nikos Nikoleris 
Tested-by: kokoro 
---
M src/mem/cache/compressors/base.cc
M src/mem/cache/compressors/multi.cc
M src/mem/cache/compressors/zero.hh
3 files changed, 23 insertions(+), 8 deletions(-)

Approvals:
  Nikos Nikoleris: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/mem/cache/compressors/base.cc  
b/src/mem/cache/compressors/base.cc

index de29c69..788a76f 100644
--- a/src/mem/cache/compressors/base.cc
+++ b/src/mem/cache/compressors/base.cc
@@ -153,7 +153,11 @@
 // Update stats
 stats.compressions++;
 stats.compressionSizeBits += comp_size_bits;
-stats.compressionSize[std::ceil(std::log2(comp_size_bits))]++;
+if (comp_size_bits != 0) {
+stats.compressionSize[1 + std::ceil(std::log2(comp_size_bits))]++;
+} else {
+stats.compressionSize[0]++;
+}

 // Print debug information
 DPRINTF(CacheComp, "Compressed cache line from %d to %d bits. " \
@@ -221,11 +225,15 @@
 {
 Stats::Group::regStats();

-compressionSize.init(std::log2(compressor.blkSize*8) + 1);
+// Values comprised are {0, 1, 2, 4, ..., blkSize}
+compressionSize.init(std::log2(compressor.blkSize*8) + 2);
+compressionSize.subname(0, "0");
+compressionSize.subdesc(0,
+"Number of blocks that compressed to fit in 0 bits");
 for (unsigned i = 0; i <= std::log2(compressor.blkSize*8); ++i) {
 std::string str_i = std::to_string(1 << i);
-compressionSize.subname(i, str_i);
-compressionSize.subdesc(i,
+compressionSize.subname(1+i, str_i);
+compressionSize.subdesc(1+i,
 "Number of blocks that compressed to fit in " + str_i + "  
bits");

 }

diff --git a/src/mem/cache/compressors/multi.cc  
b/src/mem/cache/compressors/multi.cc

index b740a95..76ec1db 100644
--- a/src/mem/cache/compressors/multi.cc
+++ b/src/mem/cache/compressors/multi.cc
@@ -94,9 +94,16 @@
 const std::size_t size = compData->getSize();
 // If the compressed size is worse than the uncompressed size,
 // we assume the size is the uncompressed size, and thus the
-// compression factor is 1
+// compression factor is 1.
+//
+// Some compressors (notably the zero compressor) may rely on
+// extra information being stored in the tags, or added in
+// another compression layer. Their size can be 0, so it is
+// assigned the highest possible compression factor (the  
original

+// block's size).
 compressionFactor = (size > blk_size) ? 1 :
-alignToPowerOfTwo(std::floor(blk_size / (double) size));
+((size == 0) ? blk_size :
+alignToPowerOfTwo(std::floor(blk_size / (double) size)));
 }
 };
 struct ResultsComparator
diff --git a/src/mem/cache/compressors/zero.hh  
b/src/mem/cache/compressors/zero.hh

index 57a2685..c839910 100644
--- a/src/mem/cache/compressors/zero.hh
+++ b/src/mem/cache/compressors/zero.hh
@@ -106,7 +106,7 @@
 {
   public:
 PatternX(const DictionaryEntry bytes, const int match_location)
-: DictionaryCompressor::UncompressedPattern(X, 0, 1,  
match_location,
+: DictionaryCompressor::UncompressedPattern(X, 0, 0,  
match_location,

   bytes)
 {
 }
@@ -118,7 +118,7 @@
   public:
 PatternZ(const DictionaryEntry bytes, const int match_location)
 : DictionaryCompressor::MaskedValuePattern<0, 0x>(
-  Z, 1, 1, match_location, bytes)
+  Z, 1, 0, match_location, bytes)
 {
 }
 };

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/33383
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I9f7dee76576b09fdc9bef3e1f3f89be3726dcbd9
Gerrit-Change-Number: 33383
Gerrit-PatchSet: 3
Gerrit-Owner: Daniel Carvalho 
Gerrit-Reviewer: Daniel Carvalho 
Gerrit-Reviewer: Nikos Nikoleris 
Gerrit-Reviewer: kokoro 
Gerrit-MessageType: merged
___
gem5-dev mailing list 

[gem5-dev] Change in gem5/gem5[develop]: mem-cache: Fix integer promotion of mask

2020-08-31 Thread Daniel Carvalho (Gerrit) via gem5-dev
Daniel Carvalho has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/33374 )


Change subject: mem-cache: Fix integer promotion of mask
..

mem-cache: Fix integer promotion of mask

When applying the bitwise not to a short integer the compiler
automatically promotes it to an integer. For example, if a 8-bit
mask=0xFF, and the compiler decides to promote the mask to 32-bit
to apply the bitwise not, ~mask=0xFF00, which will yield wrong
results for popcount(): expected=0, got=24.

Change-Id: I95efba5532c27ca004ff6947d4b51a8a14f09741
Signed-off-by: Daniel R. Carvalho 
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/33374
Reviewed-by: Nikos Nikoleris 
Maintainer: Nikos Nikoleris 
Tested-by: kokoro 
---
M src/mem/cache/compressors/dictionary_compressor.hh
1 file changed, 1 insertion(+), 1 deletion(-)

Approvals:
  Nikos Nikoleris: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/mem/cache/compressors/dictionary_compressor.hh  
b/src/mem/cache/compressors/dictionary_compressor.hh

index fce79d5..650edab 100644
--- a/src/mem/cache/compressors/dictionary_compressor.hh
+++ b/src/mem/cache/compressors/dictionary_compressor.hh
@@ -464,7 +464,7 @@
 const DictionaryEntry bytes,
 const bool allocate = true)
   : DictionaryCompressor::Pattern(number, code, metadata_length,
-popCount(~mask), match_location, allocate),
+popCount(static_cast(~mask)), match_location, allocate),
 bits(DictionaryCompressor::fromDictionaryEntry(bytes) & ~mask)
 {
 }

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/33374
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I95efba5532c27ca004ff6947d4b51a8a14f09741
Gerrit-Change-Number: 33374
Gerrit-PatchSet: 2
Gerrit-Owner: Daniel Carvalho 
Gerrit-Reviewer: Daniel Carvalho 
Gerrit-Reviewer: Nikos Nikoleris 
Gerrit-Reviewer: kokoro 
Gerrit-MessageType: merged
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-dev] Change in gem5/gem5[develop]: mem-cache: Fix RepeatedQwords compressor

2020-08-31 Thread Daniel Carvalho (Gerrit) via gem5-dev
Daniel Carvalho has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/33375 )


Change subject: mem-cache: Fix RepeatedQwords compressor
..

mem-cache: Fix RepeatedQwords compressor

This compressor does not allocate dictionary entries when there
is a match. This was causing the compressor to always fail.

Change-Id: I50eb56fa284854f3ee87f33af2c6e0a5c5248d7c
Signed-off-by: Daniel R. Carvalho 
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/33375
Reviewed-by: Nikos Nikoleris 
Maintainer: Nikos Nikoleris 
Tested-by: kokoro 
---
M src/mem/cache/compressors/dictionary_compressor.hh
M src/mem/cache/compressors/repeated_qwords.hh
2 files changed, 4 insertions(+), 3 deletions(-)

Approvals:
  Nikos Nikoleris: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/mem/cache/compressors/dictionary_compressor.hh  
b/src/mem/cache/compressors/dictionary_compressor.hh

index 650edab..b9c68a1 100644
--- a/src/mem/cache/compressors/dictionary_compressor.hh
+++ b/src/mem/cache/compressors/dictionary_compressor.hh
@@ -563,9 +563,10 @@
 const uint64_t code,
 const uint64_t metadata_length,
 const int match_location,
-const DictionaryEntry bytes)
+const DictionaryEntry bytes,
+const bool allocate = true)
   : MaskedPattern(number, code, metadata_length, match_location,
-bytes)
+bytes, allocate)
 {
 }

diff --git a/src/mem/cache/compressors/repeated_qwords.hh  
b/src/mem/cache/compressors/repeated_qwords.hh

index c361900..9a2df3c 100644
--- a/src/mem/cache/compressors/repeated_qwords.hh
+++ b/src/mem/cache/compressors/repeated_qwords.hh
@@ -116,7 +116,7 @@
   public:
 PatternM(const DictionaryEntry bytes, const int match_location)
 : LocatedMaskedPattern<0x, 0>(M, 1, 0,  
match_location,

-  bytes)
+  bytes, false)
 {
 }
 };

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/33375
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I50eb56fa284854f3ee87f33af2c6e0a5c5248d7c
Gerrit-Change-Number: 33375
Gerrit-PatchSet: 2
Gerrit-Owner: Daniel Carvalho 
Gerrit-Reviewer: Daniel Carvalho 
Gerrit-Reviewer: Nikos Nikoleris 
Gerrit-Reviewer: kokoro 
Gerrit-MessageType: merged
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-dev] Change in gem5/gem5[develop]: mem-cache: Store BDI's encoding in tags

2020-08-31 Thread Daniel Carvalho (Gerrit) via gem5-dev
Daniel Carvalho has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/33381 )


Change subject: mem-cache: Store BDI's encoding in tags
..

mem-cache: Store BDI's encoding in tags

According to the original paper the compressors' encodings are
stored in the tag-store (Storage cost analysis section).

Change-Id: I4c34f86022eea6d1ba0ae29dd74d5714bbad367a
Signed-off-by: Daniel R. Carvalho 
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/33381
Reviewed-by: Nikos Nikoleris 
Maintainer: Nikos Nikoleris 
Tested-by: kokoro 
---
M src/mem/cache/compressors/Compressors.py
1 file changed, 1 insertion(+), 0 deletions(-)

Approvals:
  Nikos Nikoleris: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/mem/cache/compressors/Compressors.py  
b/src/mem/cache/compressors/Compressors.py

index f7e8a7d..45effe9 100644
--- a/src/mem/cache/compressors/Compressors.py
+++ b/src/mem/cache/compressors/Compressors.py
@@ -145,6 +145,7 @@
 chunk_size_bits = 64

 class BDI(MultiCompressor):
+encoding_in_tags=True
 compressors = [ZeroCompressor(), RepeatedQwordsCompressor(),
 Base64Delta8(), Base64Delta16(), Base64Delta32(), Base32Delta8(),
 Base32Delta16(), Base16Delta8()]

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/33381
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I4c34f86022eea6d1ba0ae29dd74d5714bbad367a
Gerrit-Change-Number: 33381
Gerrit-PatchSet: 2
Gerrit-Owner: Daniel Carvalho 
Gerrit-Reviewer: Daniel Carvalho 
Gerrit-Reviewer: Nikos Nikoleris 
Gerrit-Reviewer: kokoro 
Gerrit-MessageType: merged
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-dev] Change in gem5/gem5[develop]: mem-cache: Allow inheriting from DitionaryCompressor's comp data

2020-08-31 Thread Daniel Carvalho (Gerrit) via gem5-dev
Daniel Carvalho has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/33378 )


Change subject: mem-cache: Allow inheriting from DitionaryCompressor's comp  
data

..

mem-cache: Allow inheriting from DitionaryCompressor's comp data

Previously either the compression data was the one declared within
DictionaryCompressor, or the derived class would have to override
the compress() to use a derived compression data.

With this change, the instantiation can be overridden, and thus
any derived class can choose the compression data pointer type
they need to use.

Change-Id: I387936265a3de6785a6096c7a6bd21774202b1c7
Signed-off-by: Daniel R. Carvalho 
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/33378
Reviewed-by: Nikos Nikoleris 
Maintainer: Nikos Nikoleris 
Tested-by: kokoro 
---
M src/mem/cache/compressors/dictionary_compressor.hh
M src/mem/cache/compressors/dictionary_compressor_impl.hh
2 files changed, 16 insertions(+), 1 deletion(-)

Approvals:
  Nikos Nikoleris: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/mem/cache/compressors/dictionary_compressor.hh  
b/src/mem/cache/compressors/dictionary_compressor.hh

index b5e9e67..a0bdf4d 100644
--- a/src/mem/cache/compressors/dictionary_compressor.hh
+++ b/src/mem/cache/compressors/dictionary_compressor.hh
@@ -222,6 +222,14 @@
 virtual void addToDictionary(const DictionaryEntry data) = 0;

 /**
+ * Instantiate a compression data of the sub-class compressor.
+ *
+ * @return The new compression data entry.
+ */
+virtual std::unique_ptr
+instantiateDictionaryCompData() const;
+
+/**
  * Apply compression.
  *
  * @param data The cache line to be compressed.
diff --git a/src/mem/cache/compressors/dictionary_compressor_impl.hh  
b/src/mem/cache/compressors/dictionary_compressor_impl.hh

index 6b6e5fb..b157216 100644
--- a/src/mem/cache/compressors/dictionary_compressor_impl.hh
+++ b/src/mem/cache/compressors/dictionary_compressor_impl.hh
@@ -80,6 +80,13 @@
 }

 template 
+std::unique_ptr::CompData>
+DictionaryCompressor::instantiateDictionaryCompData() const
+{
+return std::unique_ptr::CompData>(new  
CompData());

+}
+
+template 
 std::unique_ptr::Pattern>
 DictionaryCompressor::compressValue(const T data)
 {
@@ -119,7 +126,7 @@
 DictionaryCompressor::compress(const uint64_t* data)
 {
 std::unique_ptr comp_data =
-std::unique_ptr(new CompData());
+instantiateDictionaryCompData();

 // Reset dictionary
 resetDictionary();

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/33378
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I387936265a3de6785a6096c7a6bd21774202b1c7
Gerrit-Change-Number: 33378
Gerrit-PatchSet: 2
Gerrit-Owner: Daniel Carvalho 
Gerrit-Reviewer: Daniel Carvalho 
Gerrit-Reviewer: Nikos Nikoleris 
Gerrit-Reviewer: kokoro 
Gerrit-MessageType: merged
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-dev] Change in gem5/gem5[develop]: misc: Use VPtr in hsa_driver.cc

2020-08-31 Thread Matthew Poremba (Gerrit) via gem5-dev
Matthew Poremba has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/33655 )


Change subject: misc: Use VPtr in hsa_driver.cc
..

misc: Use VPtr in hsa_driver.cc

This change updates HSADriver::allocateQueue to take in a ThreadContext
pointer as opposed to a PortProxy ref. This allows the TypedBufferArg
to be replaced with VPtr.

This also fixes building GCN3_X86

Change-Id: I1fea26b10c7344daf54a0cb05337e961f834a5fd
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/33655
Reviewed-by: Matt Sinclair 
Reviewed-by: Gabe Black 
Reviewed-by: Matthew Poremba 
Maintainer: Matt Sinclair 
Tested-by: kokoro 
---
M src/dev/hsa/hsa_driver.cc
M src/dev/hsa/hsa_driver.hh
M src/gpu-compute/gpu_compute_driver.cc
3 files changed, 4 insertions(+), 6 deletions(-)

Approvals:
  Matthew Poremba: Looks good to me, approved
  Gabe Black: Looks good to me, but someone else must approve
  Matt Sinclair: Looks good to me, but someone else must approve; Looks  
good to me, approved

  kokoro: Regressions pass



diff --git a/src/dev/hsa/hsa_driver.cc b/src/dev/hsa/hsa_driver.cc
index a1215c4..3b27149 100644
--- a/src/dev/hsa/hsa_driver.cc
+++ b/src/dev/hsa/hsa_driver.cc
@@ -101,10 +101,9 @@
  * be mapped into that page.
  */
 void
-HSADriver::allocateQueue(PortProxy _proxy, Addr ioc_buf)
+HSADriver::allocateQueue(ThreadContext *tc, Addr ioc_buf)
 {
-TypedBufferArg args(ioc_buf);
-args.copyIn(mem_proxy);
+VPtr args(ioc_buf, tc);

 if (queueId >= 0x1000) {
 fatal("%s: Exceeded maximum number of HSA queues allowed\n",  
name());

@@ -115,5 +114,4 @@
 hsa_pp.setDeviceQueueDesc(args->read_pointer_address,
   args->ring_base_address, args->queue_id,
   args->ring_size);
-args.copyOut(mem_proxy);
 }
diff --git a/src/dev/hsa/hsa_driver.hh b/src/dev/hsa/hsa_driver.hh
index abf79ab..19982f7 100644
--- a/src/dev/hsa/hsa_driver.hh
+++ b/src/dev/hsa/hsa_driver.hh
@@ -74,7 +74,7 @@
 HSADevice *device;
 uint32_t queueId;

-void allocateQueue(PortProxy _proxy, Addr ioc_buf);
+void allocateQueue(ThreadContext *tc, Addr ioc_buf);
 };

 #endif // __DEV_HSA_HSA_DRIVER_HH__
diff --git a/src/gpu-compute/gpu_compute_driver.cc  
b/src/gpu-compute/gpu_compute_driver.cc

index 6bdb314..b4d65ce6 100644
--- a/src/gpu-compute/gpu_compute_driver.cc
+++ b/src/gpu-compute/gpu_compute_driver.cc
@@ -71,7 +71,7 @@
   {
 DPRINTF(GPUDriver, "ioctl: AMDKFD_IOC_CREATE_QUEUE\n");

-allocateQueue(virt_proxy, ioc_buf);
+allocateQueue(tc, ioc_buf);

 DPRINTF(GPUDriver, "Creating queue %d\n", queueId);
   }

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/33655
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I1fea26b10c7344daf54a0cb05337e961f834a5fd
Gerrit-Change-Number: 33655
Gerrit-PatchSet: 2
Gerrit-Owner: Kyle Roarty 
Gerrit-Reviewer: Alexandru Duțu 
Gerrit-Reviewer: Gabe Black 
Gerrit-Reviewer: Matt Sinclair 
Gerrit-Reviewer: Matthew Poremba 
Gerrit-Reviewer: kokoro 
Gerrit-CC: Anthony Gutierrez 
Gerrit-CC: Bradford Beckmann 
Gerrit-CC: Jason Lowe-Power 
Gerrit-MessageType: merged
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-dev] Change in gem5/gem5[develop]: mem: convert base prefetcher and queued to new style stats

2020-08-31 Thread Eden Avivi (Gerrit) via gem5-dev
Eden Avivi has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/33475 )


Change subject: mem: convert base prefetcher and queued to new style stats
..

mem: convert base prefetcher and queued to new style stats

Base and Queued inside src/mem/cache/prefetch converted

Change-Id: I3d5907b58efefc4d8522b89f073507f2548bff2f
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/33475
Reviewed-by: Daniel Carvalho 
Maintainer: Jason Lowe-Power 
Tested-by: kokoro 
---
M src/mem/cache/prefetch/base.cc
M src/mem/cache/prefetch/base.hh
M src/mem/cache/prefetch/queued.cc
M src/mem/cache/prefetch/queued.hh
4 files changed, 40 insertions(+), 58 deletions(-)

Approvals:
  Daniel Carvalho: Looks good to me, approved
  Jason Lowe-Power: Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/mem/cache/prefetch/base.cc b/src/mem/cache/prefetch/base.cc
index d4223aa..4e484e5 100644
--- a/src/mem/cache/prefetch/base.cc
+++ b/src/mem/cache/prefetch/base.cc
@@ -94,7 +94,8 @@
   onWrite(p->on_write), onData(p->on_data), onInst(p->on_inst),
   masterId(p->sys->getMasterId(this)),  
pageBytes(p->sys->getPageBytes()),

   prefetchOnAccess(p->prefetch_on_access),
-  useVirtualAddresses(p->use_virtual_addresses), issuedPrefetches(0),
+  useVirtualAddresses(p->use_virtual_addresses),
+  prefetchStats(this), issuedPrefetches(0),
   usefulPrefetches(0), tlb(nullptr)
 {
 }
@@ -109,19 +110,13 @@
 blkSize = cache->getBlockSize();
 lBlkSize = floorLog2(blkSize);
 }
-
-void
-Base::regStats()
+Base::StatGroup::StatGroup(Stats::Group *parent)
+: Stats::Group(parent),
+ADD_STAT(pfIssued, "number of hwpf issued")
 {
-ClockedObject::regStats();
-
-pfIssued
-.name(name() + ".num_hwpf_issued")
-.desc("number of hwpf issued")
-;
-
 }

+
 bool
 Base::observeAccess(const PacketPtr , bool miss) const
 {
diff --git a/src/mem/cache/prefetch/base.hh b/src/mem/cache/prefetch/base.hh
index 783fb01..5f7ad81 100644
--- a/src/mem/cache/prefetch/base.hh
+++ b/src/mem/cache/prefetch/base.hh
@@ -49,6 +49,7 @@
 #include 

 #include "arch/generic/tlb.hh"
+#include "arch/isa_traits.hh"
 #include "base/statistics.hh"
 #include "base/types.hh"
 #include "mem/packet.hh"
@@ -317,8 +318,11 @@
 Addr pageOffset(Addr a) const;
 /** Build the address of the i-th block inside the page */
 Addr pageIthBlockAddress(Addr page, uint32_t i) const;
-
-Stats::Scalar pfIssued;
+struct StatGroup : public Stats::Group
+{
+StatGroup(Stats::Group *parent);
+Stats::Scalar pfIssued;
+} prefetchStats;

 /** Total prefetches issued */
 uint64_t issuedPrefetches;
@@ -348,10 +352,6 @@

 virtual Tick nextPrefetchReadyTime() const = 0;

-/**
- * Register local statistics.
- */
-void regStats() override;

 /**
  * Register probe points for this object.
diff --git a/src/mem/cache/prefetch/queued.cc  
b/src/mem/cache/prefetch/queued.cc

index c2ae090..6b89c2b 100644
--- a/src/mem/cache/prefetch/queued.cc
+++ b/src/mem/cache/prefetch/queued.cc
@@ -97,7 +97,7 @@
   latency(p->latency), queueSquash(p->queue_squash),
   queueFilter(p->queue_filter), cacheSnoop(p->cache_snoop),
   tagPrefetch(p->tag_prefetch),
-  throttleControlPct(p->throttle_control_percentage)
+  throttleControlPct(p->throttle_control_percentage), statsQueued(this)
 {
 }

@@ -174,13 +174,13 @@
 addr_prio.first = blockAddress(addr_prio.first);

 if (!samePage(addr_prio.first, pfi.getAddr())) {
-pfSpanPage += 1;
+statsQueued.pfSpanPage += 1;
 }

 bool can_cross_page = (tlb != nullptr);
 if (can_cross_page || samePage(addr_prio.first, pfi.getAddr())) {
 PrefetchInfo new_pfi(pfi,addr_prio.first);
-pfIdentified++;
+statsQueued.pfIdentified++;
 DPRINTF(HWPrefetch, "Found a pf candidate addr: %#x, "
 "inserting into prefetch queue.\n", new_pfi.getAddr());
 // Create and insert the request
@@ -214,7 +214,7 @@
 PacketPtr pkt = pfq.front().pkt;
 pfq.pop_front();

-pfIssued++;
+prefetchStats.pfIssued++;
 issuedPrefetches += 1;
 assert(pkt != nullptr);
 DPRINTF(HWPrefetch, "Generating prefetch for %#x.\n", pkt->getAddr());
@@ -222,31 +222,17 @@
 processMissingTranslations(queueSize - pfq.size());
 return pkt;
 }
-
-void
-Queued::regStats()
+Queued::QueuedStats::QueuedStats(Stats::Group *parent)
+: Stats::Group(parent),
+ADD_STAT(pfIdentified, "number of prefetch candidates identified"),
+ADD_STAT(pfBufferHit,
+ "number of redundant prefetches already in prefetch queue"),
+ADD_STAT(pfInCache,
+ "number of redundant prefetches already in cache/mshr dropped"),
+ADD_STAT(pfRemovedFull,
+ "number of prefetches dropped due to prefetch queue 

[gem5-dev] Change in gem5/gem5[develop]: sim: Add missing overrides in the *Fault classes

2020-08-31 Thread Nikos Nikoleris (Gerrit) via gem5-dev
Nikos Nikoleris has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/33777 )



Change subject: sim: Add missing overrides in the *Fault classes
..

sim: Add missing overrides in the *Fault classes

Change-Id: I7a74df78f0f85ccf7fd896f98b301c1f998c1497
Signed-off-by: Nikos Nikoleris 
---
M src/sim/faults.hh
1 file changed, 9 insertions(+), 5 deletions(-)



diff --git a/src/sim/faults.hh b/src/sim/faults.hh
index e9a57c6..4b5c1a5 100644
--- a/src/sim/faults.hh
+++ b/src/sim/faults.hh
@@ -55,7 +55,11 @@
   public:
 UnimpFault(std::string _str) : panicStr(_str) {}

-FaultName name() const { return "Unimplemented simulator feature"; }
+FaultName
+name() const override
+{
+return "Unimplemented simulator feature";
+}
 void invoke(ThreadContext *tc, const StaticInstPtr  =
 StaticInst::nullStaticInstPtr) override;
 };
@@ -63,7 +67,7 @@
 class ReExec : public FaultBase
 {
   public:
-virtual FaultName name() const { return "Re-execution fault"; }
+virtual FaultName name() const override { return "Re-execution fault";  
}

 void invoke(ThreadContext *tc, const StaticInstPtr =
 StaticInst::nullStaticInstPtr) override;
 };
@@ -78,7 +82,7 @@
 class SyscallRetryFault : public FaultBase
 {
   public:
-virtual FaultName name() const { return "System call retry fault"; }
+FaultName name() const override { return "System call retry fault"; }
 SyscallRetryFault() {}
 void invoke(ThreadContext *tc, const StaticInstPtr =
 StaticInst::nullStaticInstPtr) override;
@@ -89,7 +93,7 @@
   private:
 Addr vaddr;
   public:
-FaultName name() const { return "Generic page table fault"; }
+FaultName name() const override { return "Generic page table fault"; }
 GenericPageTableFault(Addr va) : vaddr(va) {}
 void invoke(ThreadContext *tc, const StaticInstPtr =
 StaticInst::nullStaticInstPtr) override;
@@ -101,7 +105,7 @@
   private:
 Addr vaddr;
   public:
-FaultName name() const { return "Generic alignment fault"; }
+FaultName name() const override { return "Generic alignment fault"; }
 GenericAlignmentFault(Addr va) : vaddr(va) {}
 void invoke(ThreadContext *tc, const StaticInstPtr =
 StaticInst::nullStaticInstPtr) override;

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/33777
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I7a74df78f0f85ccf7fd896f98b301c1f998c1497
Gerrit-Change-Number: 33777
Gerrit-PatchSet: 1
Gerrit-Owner: Nikos Nikoleris 
Gerrit-MessageType: newchange
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-dev] Change in gem5/gem5[develop]: scons: Avoid the unsupported option -Wno-c99-designator in MacOS

2020-08-31 Thread Nikos Nikoleris (Gerrit) via gem5-dev
Nikos Nikoleris has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/33775 )



Change subject: scons: Avoid the unsupported option -Wno-c99-designator in  
MacOS

..

scons: Avoid the unsupported option -Wno-c99-designator in MacOS

Change-Id: I4d95c75915b17531bdd6d9161eb266bb91cd7bef
Signed-off-by: Nikos Nikoleris 
---
M SConstruct
1 file changed, 2 insertions(+), 1 deletion(-)



diff --git a/SConstruct b/SConstruct
index bbfa37a..efd2a9d 100755
--- a/SConstruct
+++ b/SConstruct
@@ -473,7 +473,8 @@
  # interchangeably.
  '-Wno-mismatched-tags',
  ])
-if compareVersions(clang_version, "10.0") >= 0:
+if sys.platform != "darwin" and \
+   compareVersions(clang_version, "10.0") >= 0:
 main.Append(CCFLAGS=['-Wno-c99-designator'])

 if compareVersions(clang_version, "8.0") >= 0:

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/33775
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I4d95c75915b17531bdd6d9161eb266bb91cd7bef
Gerrit-Change-Number: 33775
Gerrit-PatchSet: 1
Gerrit-Owner: Nikos Nikoleris 
Gerrit-MessageType: newchange
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-dev] Change in gem5/gem5[develop]: arch: Remove unused variable pcbb from ThreadInfo

2020-08-31 Thread Nikos Nikoleris (Gerrit) via gem5-dev
Nikos Nikoleris has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/33776 )



Change subject: arch: Remove unused variable pcbb from ThreadInfo
..

arch: Remove unused variable pcbb from ThreadInfo

Change-Id: Ib9e46934f1613c98758662cba26a46fcc2a76146
Signed-off-by: Nikos Nikoleris 
---
M src/arch/generic/linux/threadinfo.hh
1 file changed, 2 insertions(+), 3 deletions(-)



diff --git a/src/arch/generic/linux/threadinfo.hh  
b/src/arch/generic/linux/threadinfo.hh

index 0127105..e5ba7e2 100644
--- a/src/arch/generic/linux/threadinfo.hh
+++ b/src/arch/generic/linux/threadinfo.hh
@@ -39,7 +39,6 @@
   private:
 ThreadContext *tc;
 System *sys;
-Addr pcbb;

 ByteOrder byteOrder;

@@ -62,8 +61,8 @@
 }

   public:
-ThreadInfo(ThreadContext *_tc, Addr _pcbb = 0)
-: tc(_tc), sys(tc->getSystemPtr()), pcbb(_pcbb),
+ThreadInfo(ThreadContext *_tc)
+: tc(_tc), sys(tc->getSystemPtr()),
 byteOrder(tc->getSystemPtr()->getGuestByteOrder())
 {


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/33776
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: Ib9e46934f1613c98758662cba26a46fcc2a76146
Gerrit-Change-Number: 33776
Gerrit-PatchSet: 1
Gerrit-Owner: Nikos Nikoleris 
Gerrit-MessageType: newchange
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-dev] Change in gem5/gem5[develop]: base: avoid recreating socket at each call to listen()

2020-08-31 Thread Nathanael Premillieu (Gerrit) via gem5-dev
Nathanael Premillieu has submitted this change. (  
https://gem5-review.googlesource.com/c/public/gem5/+/32994 )


Change subject: base: avoid recreating socket at each call to listen()
..

base: avoid recreating socket at each call to listen()

A new socket was created each time listen() is called,
which is problematic when the bind or listen operation
on it are not successful (mostly because the associated port is
already in use). It can lead gem5 to open too many files and crash
for multicores configurations, a socket being created
for remote GDB for each core. The other way to deal with
this problem would be to close the socket in the case the
function return false. But I find the proposed solution
simpler.

Change-Id: I848955a10c89e1da033bf773c83556a5dc5ef9a2
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/32994
Reviewed-by: Gabe Black 
Maintainer: Gabe Black 
Tested-by: kokoro 
---
M src/base/socket.cc
1 file changed, 6 insertions(+), 3 deletions(-)

Approvals:
  Gabe Black: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/base/socket.cc b/src/base/socket.cc
index adf8315..fce54aa 100644
--- a/src/base/socket.cc
+++ b/src/base/socket.cc
@@ -101,9 +101,12 @@
 if (listening)
 panic("Socket already listening!");

-fd = ::socket(PF_INET, SOCK_STREAM, 0);
-if (fd < 0)
-panic("Can't create socket:%s !", strerror(errno));
+// only create socket if not already created by a previous call
+if (fd == -1) {
+fd = ::socket(PF_INET, SOCK_STREAM, 0);
+if (fd < 0)
+panic("Can't create socket:%s !", strerror(errno));
+}

 if (reuse) {
 int i = 1;

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/32994
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I848955a10c89e1da033bf773c83556a5dc5ef9a2
Gerrit-Change-Number: 32994
Gerrit-PatchSet: 2
Gerrit-Owner: Nathanael Premillieu 
Gerrit-Reviewer: Gabe Black 
Gerrit-Reviewer: Nathanael Premillieu 
Gerrit-Reviewer: kokoro 
Gerrit-CC: Jason Lowe-Power 
Gerrit-MessageType: merged
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

[gem5-dev] Change in gem5/gem5[develop]: gpu-compute:Change request to response in MOESI_AMD_Base-dir.sm

2020-08-31 Thread Sampad Mohapatra (Gerrit) via gem5-dev
Sampad Mohapatra has uploaded this change for review. (  
https://gem5-review.googlesource.com/c/public/gem5/+/33755 )



Change subject: gpu-compute:Change request to response in  
MOESI_AMD_Base-dir.sm

..

gpu-compute:Change request to response in MOESI_AMD_Base-dir.sm

The responseToDMA MessageBuffer in MOESI_AMD_Base-dir.sm
transmits both data and acks, but it's vnet_type is currently
set as request. This should be changed to response.

Signed-off-by: Sampad Mohapatra 
Change-Id: I0eb9e8fc8e25111849605a710a5150ce5fc3b83b
---
M src/mem/ruby/protocol/MOESI_AMD_Base-dir.sm
1 file changed, 1 insertion(+), 1 deletion(-)



diff --git a/src/mem/ruby/protocol/MOESI_AMD_Base-dir.sm  
b/src/mem/ruby/protocol/MOESI_AMD_Base-dir.sm

index f1bc637..3e84ba6 100644
--- a/src/mem/ruby/protocol/MOESI_AMD_Base-dir.sm
+++ b/src/mem/ruby/protocol/MOESI_AMD_Base-dir.sm
@@ -44,7 +44,7 @@

   // DMA
   MessageBuffer * requestFromDMA, network="From", virtual_network="1",  
vnet_type="request";
-  MessageBuffer * responseToDMA, network="To", virtual_network="3",  
vnet_type="request";
+  MessageBuffer * responseToDMA, network="To", virtual_network="3",  
vnet_type="response";


   // From the Cores
   MessageBuffer * requestFromCores, network="From", virtual_network="0",  
vnet_type="request";


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/33755
To unsubscribe, or for help writing mail filters, visit  
https://gem5-review.googlesource.com/settings


Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I0eb9e8fc8e25111849605a710a5150ce5fc3b83b
Gerrit-Change-Number: 33755
Gerrit-PatchSet: 1
Gerrit-Owner: Sampad Mohapatra 
Gerrit-MessageType: newchange
___
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s