summaryrefslogtreecommitdiff
path: root/src/gpgpu-sim/shader.h
diff options
context:
space:
mode:
authorAaron Barnes <[email protected]>2021-05-10 21:38:04 -0400
committerAaron Barnes <[email protected]>2021-05-10 21:38:04 -0400
commit52a890cff520ea48d6bfa46ff7b85b5d5e06d1be (patch)
tree5b0e22ac69f0c9240fb43b98dec75654dd20864c /src/gpgpu-sim/shader.h
parent92192368f2545cd6fc1004047af8b57762637dbf (diff)
need at least 1 cu per sched for sub_core model, fix find_ready() reg_id
Diffstat (limited to 'src/gpgpu-sim/shader.h')
-rw-r--r--src/gpgpu-sim/shader.h7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/gpgpu-sim/shader.h b/src/gpgpu-sim/shader.h
index 9b14bfd..0b96ec0 100644
--- a/src/gpgpu-sim/shader.h
+++ b/src/gpgpu-sim/shader.h
@@ -920,7 +920,12 @@ class opndcoll_rfu_t { // operand collector based register file unit
collector_unit_t *find_ready(bool sub_core_model) {
for (unsigned n = 0; n < m_num_collectors; n++) {
unsigned c = (m_last_cu + n + 1) % m_num_collectors;
- unsigned reg_id = c / m_num_collectors;
+ unsigned reg_id;
+ if (sub_core_model) {
+ assert (m_num_collectors >= m_num_warp_scheds);
+ unsigned cusPerSched = m_num_collectors / m_num_warp_scheds;
+ reg_id = c / cusPerSched;
+ }
if ((*m_collector_units)[c].ready(sub_core_model, reg_id)) {
m_last_cu = c;
return &((*m_collector_units)[c]);