summaryrefslogtreecommitdiff
path: root/src/gpgpu-sim/shader.cc
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.cc
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.cc')
-rw-r--r--src/gpgpu-sim/shader.cc9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/gpgpu-sim/shader.cc b/src/gpgpu-sim/shader.cc
index 928e108..c1bc495 100644
--- a/src/gpgpu-sim/shader.cc
+++ b/src/gpgpu-sim/shader.cc
@@ -3961,8 +3961,11 @@ void opndcoll_rfu_t::dispatch_ready_cu() {
m_shader->get_config()->warp_size); // cu->get_active_count());
}
}
- unsigned cusPerSched = du.get_num_collectors() / m_num_warp_scheds;
- unsigned reg_id = cu->get_id() / cusPerSched;
+ unsigned reg_id;
+ if (sub_core_model) {
+ unsigned cusPerSched = du.get_num_collectors() / m_num_warp_scheds;
+ reg_id = cu->get_id() / cusPerSched;
+ }
cu->dispatch(sub_core_model, reg_id);
}
}
@@ -3983,7 +3986,7 @@ void opndcoll_rfu_t::allocate_cu(unsigned port_num) {
// Sub core model only allocates on the subset of CUs assigned to the scheduler that issued
unsigned reg_id = (*inp.m_in[i]).get_ready_reg_id();
schd_id = (*inp.m_in[i]).get_schd_id(reg_id);
- assert(cu_set.size() % m_num_warp_scheds == 0);
+ assert(cu_set.size() % m_num_warp_scheds == 0 && cu_set.size() >= m_num_warp_scheds);
unsigned cusPerSched = cu_set.size() / m_num_warp_scheds;
cuLowerBound = schd_id * cusPerSched;
cuUpperBound = cuLowerBound + cusPerSched;