From 987a23f84f8705c0566a47aeda2132fa33a82618 Mon Sep 17 00:00:00 2001 From: JRPan <25518778+JRPan@users.noreply.github.com> Date: Wed, 3 Sep 2025 16:01:54 -0400 Subject: 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 --- src/gpgpu-sim/local_interconnect.cc | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'src/gpgpu-sim/local_interconnect.cc') 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 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 -- cgit v1.3