summaryrefslogtreecommitdiff
path: root/src/gpgpu-sim/gpu-sim.cc
diff options
context:
space:
mode:
authorJin Wang <[email protected]>2014-11-13 18:47:03 -0500
committerJin Wang <[email protected]>2016-07-06 02:17:14 -0400
commit69bb1082de9df29d1d7b40486301049767e607b0 (patch)
tree4af4d3d7f5f2a6c336d377da64d7142b038214a5 /src/gpgpu-sim/gpu-sim.cc
parent3321626d5e858df8e2154bf4e7a1bacda76658e7 (diff)
BUG: for concurrent kernels on same shader, should select kernel from the distributor directly
Diffstat (limited to 'src/gpgpu-sim/gpu-sim.cc')
-rw-r--r--src/gpgpu-sim/gpu-sim.cc4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/gpgpu-sim/gpu-sim.cc b/src/gpgpu-sim/gpu-sim.cc
index 8a5d581..10c4ccf 100644
--- a/src/gpgpu-sim/gpu-sim.cc
+++ b/src/gpgpu-sim/gpu-sim.cc
@@ -523,6 +523,10 @@ bool gpgpu_sim::get_more_cta_left() const
kernel_info_t *gpgpu_sim::select_kernel()
{
+ if(m_running_kernels[m_last_issued_kernel] &&
+ !m_running_kernels[m_last_issued_kernel]->no_more_ctas_to_run())
+ return m_running_kernels[m_last_issued_kernel];
+
for(unsigned n=0; n < m_running_kernels.size(); n++ ) {
unsigned idx = (n+m_last_issued_kernel+1)%m_config.max_concurrent_kernel;
if( kernel_more_cta_left(m_running_kernels[idx]) ){