aboutsummaryrefslogtreecommitdiff
path: root/src/gpgpu-sim/shader.cc
diff options
context:
space:
mode:
authorJin Wang <[email protected]>2014-11-14 22:11:52 -0500
committerJin Wang <[email protected]>2016-07-06 02:17:16 -0400
commit9c0384c1626205b4a9ed97f998b3d4d8e7758198 (patch)
tree287a79f0abd3f2a36f920549126095c0974e2715 /src/gpgpu-sim/shader.cc
parentbbcb492c0f6d887c4034bd15adf57420dd735c5e (diff)
BUG: concurrent kernels on same SM may occupy warps from running CTAs
Diffstat (limited to 'src/gpgpu-sim/shader.cc')
-rw-r--r--src/gpgpu-sim/shader.cc7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/gpgpu-sim/shader.cc b/src/gpgpu-sim/shader.cc
index 8ce2146..b9caf18 100644
--- a/src/gpgpu-sim/shader.cc
+++ b/src/gpgpu-sim/shader.cc
@@ -302,6 +302,8 @@ shader_core_ctx::shader_core_ctx( class gpgpu_sim *gpu,
m_occupied_shmem = 0;
m_occupied_regs = 0;
m_occupied_ctas = 0;
+ m_occupied_hwtid.reset();
+ m_occupied_cta_to_hwtid.clear();
}
void shader_core_ctx::reinit(unsigned start_thread, unsigned end_thread, bool reset_not_completed )
@@ -315,6 +317,8 @@ void shader_core_ctx::reinit(unsigned start_thread, unsigned end_thread, bool re
m_occupied_shmem = 0;
m_occupied_regs = 0;
m_occupied_ctas = 0;
+ m_occupied_hwtid.reset();
+ m_occupied_cta_to_hwtid.clear();
}
for (unsigned i = start_thread; i<end_thread; i++) {
@@ -893,7 +897,6 @@ void scheduler_unit::cycle()
else //cudaLaunchDeviceV2 and cudaGetParameterBufferV2
warp(warp_id).m_cdp_latency = cdp_latency[pI->m_is_cdp - 1]
+ cdp_latency[pI->m_is_cdp] * active_mask.count();
- printf("set latency %d\n", warp(warp_id).m_cdp_latency);
warp(warp_id).m_cdp_dummy = true;
break;
}
@@ -1980,7 +1983,7 @@ void shader_core_ctx::register_cta_thread_exit( unsigned cta_num, kernel_info_t
}
//Jin: for concurrent kernels on sm
- release_shader_resource_1block(*kernel);
+ release_shader_resource_1block(cta_num, *kernel);
kernel->dec_running();
if( !m_gpu->kernel_more_cta_left(kernel) ) {
if( !kernel->running() ) {