summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/gpgpu-sim/shader.cc10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/gpgpu-sim/shader.cc b/src/gpgpu-sim/shader.cc
index a86393c..7b208e8 100644
--- a/src/gpgpu-sim/shader.cc
+++ b/src/gpgpu-sim/shader.cc
@@ -2237,6 +2237,16 @@ void scheduler_unit::try_intra_warp_coissue(
m_scoreboard->clearSecondary(primary_warp_id);
break;
}
+
+ // At most one intra coissue per primary per cycle. Mirror the
+ // dup_with_warp invariant enforced in try_utilization_max_coissue
+ // (see commentary at the intra scan of that function): issuing two
+ // AWARE updates against the same warp in one cycle is unsafe — the
+ // first co_issue_warp call mutates the splits-table, and the second
+ // candidate's cached split_id can refer to a stale split by then,
+ // leading to instructions whose scoreboard reservations are never
+ // released (deadlock observed under bfs-wlw with priority=1/2).
+ break;
}
}