summaryrefslogtreecommitdiff
path: root/src/gpgpu-sim/local_interconnect.cc
diff options
context:
space:
mode:
authorJRPan <[email protected]>2025-09-03 16:01:54 -0400
committerGitHub <[email protected]>2025-09-03 13:01:54 -0700
commit987a23f84f8705c0566a47aeda2132fa33a82618 (patch)
tree67cc731de018ab6573a1dd1926cc005b3e5980db /src/gpgpu-sim/local_interconnect.cc
parent21b18be3832b80b00d4890f041818bac431866e7 (diff)
Fix correlation on A100 CUTLASS GEMM Kernels (#127)
* 1. Add a queue to promote fairness CTA scheduling 2. Add a Perfect xbar interconnect option * remove merge queue * Should not change this * rename pending cta to allocated_ctas * run formatter
Diffstat (limited to 'src/gpgpu-sim/local_interconnect.cc')
-rw-r--r--src/gpgpu-sim/local_interconnect.cc16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/gpgpu-sim/local_interconnect.cc b/src/gpgpu-sim/local_interconnect.cc
index ce4415c..93689c7 100644
--- a/src/gpgpu-sim/local_interconnect.cc
+++ b/src/gpgpu-sim/local_interconnect.cc
@@ -116,10 +116,24 @@ void xbar_router::Advance() {
RR_Advance();
else if (arbit_type == iSLIP)
iSLIP_Advance();
+ else if (arbit_type == PERFECT)
+ Perfect_Advance();
else
assert(0);
}
+void xbar_router::Perfect_Advance() {
+ for (unsigned node_id = 0; node_id < total_nodes; node_id++) {
+ if (!in_buffers[node_id].empty()) {
+ Packet _packet = in_buffers[node_id].front();
+ if (Has_Buffer_Out(_packet.output_deviceID, 1)) {
+ out_buffers[_packet.output_deviceID].push(_packet);
+ in_buffers[node_id].pop();
+ }
+ }
+ }
+};
+
void xbar_router::RR_Advance() {
bool active = false;
vector<bool> issued(total_nodes, false);
@@ -433,4 +447,4 @@ unsigned LocalInterconnect::GetFlitSize() const { return LOCAL_INCT_FLIT_SIZE; }
void LocalInterconnect::DisplayState(FILE* fp) const {
fprintf(fp, "GPGPU-Sim uArch: ICNT:Display State: Under implementation\n");
-}
+} \ No newline at end of file