summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/gpgpu-sim/shader.cc8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/gpgpu-sim/shader.cc b/src/gpgpu-sim/shader.cc
index 926453a..19f8e72 100644
--- a/src/gpgpu-sim/shader.cc
+++ b/src/gpgpu-sim/shader.cc
@@ -3470,6 +3470,14 @@ bool shader_core_ctx::warp_waiting_at_mem_barrier( unsigned warp_id )
return false;
if( !m_scoreboard->pendingWrites(warp_id) ) {
m_warp[warp_id].clear_membar();
+ if (m_gpu->get_config().gpgpu_flush_l1_cache) {
+ //invalidate L1 cache
+ //Based on Nvidia Doc, at MEM barrier, we have to
+ //(1) wait for all pending writes till they are acked
+ //(2) invalidate L1 cache to ensure coherence and avoid reading stall data
+ cache_invalidate();
+ //TO DO: you need to stall the SM for 5k cycles.
+ }
return false;
}
return true;