gpu-compute: Fix Python/C++ object hierarchy discrepancies

The GPUCoalescer and the Shader classes have different base classes in
C++ and Python. This causes subtle bugs in SWIG and compilation errors
for PyBind.

Change-Id: I1ddd2a8ea43f083470538ddfea891347b21d14d8
Reviewed-by: Andreas Hansson <andreas.hansson@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/2228
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Tony Gutierrez <anthony.gutierrez@amd.com>
Reviewed-by: Pierre-Yves Péneau <pierre-yves.peneau@lirmm.fr>
Reviewed-by: Bradford Beckmann <brad.beckmann@amd.com>
This commit is contained in:
Andreas Sandberg
2017-02-27 13:17:51 +00:00
parent c07a2d68f3
commit b043dcf58a
4 changed files with 17 additions and 8 deletions

View File

@@ -49,7 +49,7 @@
#include "mem/request.hh"
#include "mem/ruby/common/Address.hh"
#include "mem/ruby/common/Consumer.hh"
#include "mem/ruby/system/RubyPort.hh"
#include "mem/ruby/system/Sequencer.hh"
class DataBlock;
class CacheMsg;
@@ -255,10 +255,6 @@ class GPUCoalescer : public RubyPort
bool handleLlsc(Addr address, GPUCoalescerRequest* request);
// Private copy constructor and assignment operator
GPUCoalescer(const GPUCoalescer& obj);
GPUCoalescer& operator=(const GPUCoalescer& obj);
class IssueEvent : public Event
{
private:
@@ -370,6 +366,11 @@ class GPUCoalescer : public RubyPort
std::vector<Stats::Histogram *> m_InitialToForwardDelayHist;
std::vector<Stats::Histogram *> m_ForwardToFirstResponseDelayHist;
std::vector<Stats::Histogram *> m_FirstResponseToCompletionDelayHist;
private:
// Private copy constructor and assignment operator
GPUCoalescer(const GPUCoalescer& obj);
GPUCoalescer& operator=(const GPUCoalescer& obj);
};
inline std::ostream&

View File

@@ -36,7 +36,7 @@ from m5.params import *
from m5.proxy import *
from Sequencer import *
class RubyGPUCoalescer(RubySequencer):
class RubyGPUCoalescer(RubyPort):
type = 'RubyGPUCoalescer'
cxx_class = 'GPUCoalescer'
cxx_header = "mem/ruby/system/GPUCoalescer.hh"
@@ -46,3 +46,11 @@ class RubyGPUCoalescer(RubySequencer):
"max requests (incl. prefetches) outstanding")
assume_rfo = Param.Bool(True, "assume protocol implementes Read for "
"Ownership coherence");
icache = Param.RubyCache("")
dcache = Param.RubyCache("")
deadlock_threshold = Param.Cycles(500000,
"max outstanding cycles for a request before " \
"deadlock/livelock declared")
garnet_standalone = Param.Bool(False, "")
dcache_hit_latency = Param.Cycles(1, "Data cache hit latency")