Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions VX_config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -254,6 +254,8 @@ VX_CFG_TCU_NVFP4_ENABLE = false
VX_CFG_TCU_SPARSE_ENABLE = false
VX_CFG_TCU_DSM_ENABLE = false
VX_CFG_TCU_WGMMA_ENABLE = false
VX_CFG_TCU_FEDP2K = false
VX_CFG_TCU_FEDP_DELAY = 4
VX_CFG_TCU_SPARSE_ENABLED = "expr: 1 if $VX_CFG_TCU_SPARSE_ENABLE else 0"
VX_CFG_TCU_META_ENABLE = "expr: $VX_CFG_TCU_MX_ENABLE or $VX_CFG_TCU_SPARSE_ENABLE"
VX_CFG_TCU_WGMMA_ENABLED = "expr: 1 if $VX_CFG_TCU_WGMMA_ENABLE else 0"
Expand Down
35 changes: 8 additions & 27 deletions ci/testcases/tensor_mx.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -96,28 +96,28 @@ tests:
drivers:
- simx
app: sgemm_tcu_mx
configs: -DVX_CFG_NUM_THREADS=4 -DVX_CFG_EXT_TCU_ENABLE -DVX_CFG_TCU_MX_ENABLE -DITYPE=nvfp4 -DOTYPE=fp32
configs: -DVX_CFG_NUM_THREADS=4 -DVX_CFG_EXT_TCU_ENABLE -DVX_CFG_TCU_MX_ENABLE -DITYPE=nvfp4 -DOTYPE=fp32 -DTCU_MX_TLS
args: "-k32"
- id: sgemm_tcu_mx-simx-nvfp4-nt8
via: blackbox
drivers:
- simx
app: sgemm_tcu_mx
configs: -DVX_CFG_NUM_THREADS=8 -DVX_CFG_EXT_TCU_ENABLE -DVX_CFG_TCU_MX_ENABLE -DITYPE=nvfp4 -DOTYPE=fp32
configs: -DVX_CFG_NUM_THREADS=8 -DVX_CFG_EXT_TCU_ENABLE -DVX_CFG_TCU_MX_ENABLE -DITYPE=nvfp4 -DOTYPE=fp32 -DTCU_MX_TLS
args: "-k64"
- id: sgemm_tcu_mx-simx-nvfp4-nt16
via: blackbox
drivers:
- simx
app: sgemm_tcu_mx
configs: -DVX_CFG_NUM_THREADS=16 -DVX_CFG_EXT_TCU_ENABLE -DVX_CFG_TCU_MX_ENABLE -DITYPE=nvfp4 -DOTYPE=fp32
configs: -DVX_CFG_NUM_THREADS=16 -DVX_CFG_EXT_TCU_ENABLE -DVX_CFG_TCU_MX_ENABLE -DITYPE=nvfp4 -DOTYPE=fp32 -DTCU_MX_TLS
args: "-k64"
- id: sgemm_tcu_mx-simx-nvfp4-nt32
via: blackbox
drivers:
- simx
app: sgemm_tcu_mx
configs: -DVX_CFG_NUM_THREADS=32 -DVX_CFG_EXT_TCU_ENABLE -DVX_CFG_TCU_MX_ENABLE -DITYPE=nvfp4 -DOTYPE=fp32
configs: -DVX_CFG_NUM_THREADS=32 -DVX_CFG_EXT_TCU_ENABLE -DVX_CFG_TCU_MX_ENABLE -DITYPE=nvfp4 -DOTYPE=fp32 -DTCU_MX_TLS
args: "-k128"
- id: sgemm_tcu_mx-simx-mxint8-nt4
via: blackbox
Expand All @@ -140,7 +140,6 @@ tests:
app: sgemm_tcu_mx
configs: -DVX_CFG_NUM_THREADS=16 -DVX_CFG_EXT_TCU_ENABLE -DVX_CFG_TCU_MX_ENABLE -DITYPE=mxint8 -DOTYPE=int32
args: "-k32"
known_issue: "mxint8 NT16 simx numerical mismatch (NT8/NT32 pass) — pending MX fix"
- id: sgemm_tcu_mx-simx-mxint8-nt32
via: blackbox
drivers:
Expand All @@ -155,31 +154,27 @@ tests:
app: sgemm_tcu_mx
configs: -DVX_CFG_NUM_THREADS=4 -DVX_CFG_EXT_TCU_ENABLE -DVX_CFG_TCU_MX_ENABLE -DITYPE=mxfp8 -DOTYPE=fp32 -DVX_CFG_TCU_TYPE_DPI
args: "-k32"
known_issue: "mxfp8 rtlsim DPI-path numerical mismatch (simx passes) — pending MX fix"
- id: sgemm_tcu_mx-rtlsim-mxfp8-nt8
via: blackbox
drivers:
- rtlsim
app: sgemm_tcu_mx
configs: -DVX_CFG_NUM_THREADS=8 -DVX_CFG_EXT_TCU_ENABLE -DVX_CFG_TCU_MX_ENABLE -DITYPE=mxfp8 -DOTYPE=fp32 -DVX_CFG_TCU_TYPE_DPI
args: "-k32"
known_issue: "mxfp8 rtlsim DPI-path numerical mismatch (simx passes) — pending MX fix"
- id: sgemm_tcu_mx-rtlsim-mxfp8-nt16
via: blackbox
drivers:
- rtlsim
app: sgemm_tcu_mx
configs: -DVX_CFG_NUM_THREADS=16 -DVX_CFG_EXT_TCU_ENABLE -DVX_CFG_TCU_MX_ENABLE -DITYPE=mxfp8 -DOTYPE=fp32 -DVX_CFG_TCU_TYPE_DPI
args: "-k32"
known_issue: "mxfp8 rtlsim DPI-path numerical mismatch (simx passes) — pending MX fix"
- id: sgemm_tcu_mx-rtlsim-mxfp8-nt32
via: blackbox
drivers:
- rtlsim
app: sgemm_tcu_mx
configs: -DVX_CFG_NUM_THREADS=32 -DVX_CFG_EXT_TCU_ENABLE -DVX_CFG_TCU_MX_ENABLE -DITYPE=mxfp8 -DOTYPE=fp32 -DVX_CFG_TCU_TYPE_DPI
args: "-k64"
known_issue: "mxfp8 rtlsim DPI-path numerical mismatch (simx passes) — pending MX fix"
- id: sgemm_tcu_mx-rtlsim-mxbf8-nt4
via: blackbox
drivers:
Expand Down Expand Up @@ -241,28 +236,28 @@ tests:
drivers:
- rtlsim
app: sgemm_tcu_mx
configs: -DVX_CFG_NUM_THREADS=4 -DVX_CFG_EXT_TCU_ENABLE -DVX_CFG_TCU_MX_ENABLE -DVX_CFG_TCU_FP4_ENABLE -DVX_CFG_TCU_NVFP4_ENABLE -DITYPE=nvfp4 -DOTYPE=fp32 -DVX_CFG_TCU_TYPE_DPI
configs: -DVX_CFG_NUM_THREADS=4 -DVX_CFG_EXT_TCU_ENABLE -DVX_CFG_TCU_MX_ENABLE -DVX_CFG_TCU_FP4_ENABLE -DVX_CFG_TCU_NVFP4_ENABLE -DITYPE=nvfp4 -DOTYPE=fp32 -DVX_CFG_TCU_TYPE_DPI -DTCU_MX_TLS
args: "-k32"
- id: sgemm_tcu_mx-rtlsim-nvfp4-nt8
via: blackbox
drivers:
- rtlsim
app: sgemm_tcu_mx
configs: -DVX_CFG_NUM_THREADS=8 -DVX_CFG_EXT_TCU_ENABLE -DVX_CFG_TCU_MX_ENABLE -DVX_CFG_TCU_FP4_ENABLE -DVX_CFG_TCU_NVFP4_ENABLE -DITYPE=nvfp4 -DOTYPE=fp32 -DVX_CFG_TCU_TYPE_DPI
configs: -DVX_CFG_NUM_THREADS=8 -DVX_CFG_EXT_TCU_ENABLE -DVX_CFG_TCU_MX_ENABLE -DVX_CFG_TCU_FP4_ENABLE -DVX_CFG_TCU_NVFP4_ENABLE -DITYPE=nvfp4 -DOTYPE=fp32 -DVX_CFG_TCU_TYPE_DPI -DTCU_MX_TLS
args: "-k64"
- id: sgemm_tcu_mx-rtlsim-nvfp4-nt16
via: blackbox
drivers:
- rtlsim
app: sgemm_tcu_mx
configs: -DVX_CFG_NUM_THREADS=16 -DVX_CFG_EXT_TCU_ENABLE -DVX_CFG_TCU_MX_ENABLE -DVX_CFG_TCU_FP4_ENABLE -DVX_CFG_TCU_NVFP4_ENABLE -DITYPE=nvfp4 -DOTYPE=fp32 -DVX_CFG_TCU_TYPE_DPI
configs: -DVX_CFG_NUM_THREADS=16 -DVX_CFG_EXT_TCU_ENABLE -DVX_CFG_TCU_MX_ENABLE -DVX_CFG_TCU_FP4_ENABLE -DVX_CFG_TCU_NVFP4_ENABLE -DITYPE=nvfp4 -DOTYPE=fp32 -DVX_CFG_TCU_TYPE_DPI -DTCU_MX_TLS
args: "-k64"
- id: sgemm_tcu_mx-rtlsim-nvfp4-nt32
via: blackbox
drivers:
- rtlsim
app: sgemm_tcu_mx
configs: -DVX_CFG_NUM_THREADS=32 -DVX_CFG_EXT_TCU_ENABLE -DVX_CFG_TCU_MX_ENABLE -DVX_CFG_TCU_FP4_ENABLE -DVX_CFG_TCU_NVFP4_ENABLE -DITYPE=nvfp4 -DOTYPE=fp32 -DVX_CFG_TCU_TYPE_DPI
configs: -DVX_CFG_NUM_THREADS=32 -DVX_CFG_EXT_TCU_ENABLE -DVX_CFG_TCU_MX_ENABLE -DVX_CFG_TCU_FP4_ENABLE -DVX_CFG_TCU_NVFP4_ENABLE -DITYPE=nvfp4 -DOTYPE=fp32 -DVX_CFG_TCU_TYPE_DPI -DTCU_MX_TLS
args: "-k128"
- id: sgemm_tcu_mx-rtlsim-mxint8-nt4
via: blackbox
Expand Down Expand Up @@ -292,17 +287,3 @@ tests:
app: sgemm_tcu_mx
configs: -DVX_CFG_NUM_THREADS=32 -DVX_CFG_EXT_TCU_ENABLE -DVX_CFG_TCU_MX_ENABLE -DITYPE=mxint8 -DOTYPE=int32 -DVX_CFG_TCU_TYPE_DPI
args: "-k64"
- id: sgemm_tcu_mx-simx-nvfp4-nt4-tls
via: blackbox
drivers:
- simx
app: sgemm_tcu_mx
configs: -DVX_CFG_NUM_THREADS=4 -DVX_CFG_EXT_TCU_ENABLE -DVX_CFG_TCU_MX_ENABLE -DITYPE=nvfp4 -DOTYPE=fp32 -DTCU_MX_TLS
args: "-k32"
- id: sgemm_tcu_mx-rtlsim-nvfp4-nt4-tls
via: blackbox
drivers:
- rtlsim
app: sgemm_tcu_mx
configs: -DVX_CFG_NUM_THREADS=4 -DVX_CFG_EXT_TCU_ENABLE -DVX_CFG_TCU_MX_ENABLE -DVX_CFG_TCU_FP4_ENABLE -DVX_CFG_TCU_NVFP4_ENABLE -DITYPE=nvfp4 -DOTYPE=fp32 -DVX_CFG_TCU_TYPE_DPI -DTCU_MX_TLS
args: "-k32"
4 changes: 0 additions & 4 deletions ci/testcases/tensor_sp_mx.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,6 @@ defaults:
- 32
- 64
tier: fast
# Seed coverage only — the sparse-MX path has no validated reference yet, so
# every case currently mismatches. Tracked xfail until the sparse-MX result is
# validated; drop this once the cases pass.
known_issue: "sparse-MX (sgemm_tcu_sp_mx) lacks a validated reference; results mismatch"
tests:
- id: sgemm_tcu_sp_mx-simx-mxfp8-nt4
via: blackbox
Expand Down
14 changes: 7 additions & 7 deletions hw/rtl/core/VX_scoreboard.sv
Original file line number Diff line number Diff line change
Expand Up @@ -241,14 +241,14 @@ module VX_scoreboard import VX_gpu_pkg::*; #(
wire [PER_ISSUE_WARPS-1:0] arb_ready_in;

// FU lock: a sequence must not interleave with another warp at the same FU.
// fu_locked ('1 = open, one-hot = locked) gates arb_valid_in so only the lock
// holder is requested while it holds the lock.
reg [PER_ISSUE_WARPS-1:0] fu_locked;
// Each FU has an independent mask: '1 = open, one-hot = locked.
reg [NUM_EX_UNITS-1:0][PER_ISSUE_WARPS-1:0] fu_locked;

for (genvar w = 0; w < PER_ISSUE_WARPS; ++w) begin : g_arb_data_in
// operands_ready carries data-hazard + FU-congestion; fu_locked adds the
// FU-lock gate so only the lock holder is requested during a sequence.
assign arb_valid_in[w] = staging_if[w].valid && operands_ready[w] && fu_locked[w];
wire [EX_BITS-1:0] staging_ex = staging_if[w].data.ex_type;
assign arb_valid_in[w] = staging_if[w].valid && operands_ready[w] && fu_locked[staging_ex][w];

assign arb_data_in[w] = {
staging_if[w].data.uuid,
Expand Down Expand Up @@ -281,7 +281,7 @@ module VX_scoreboard import VX_gpu_pkg::*; #(
VX_generic_arbiter #(
.NUM_REQS (PER_ISSUE_WARPS),
.TYPE ((PER_ISSUE_WARPS > 8) ? "M" : "R"),
.STICKY (1) // Greedy
.STICKY (0)
) out_arb (
.clk (clk),
.reset (reset),
Expand Down Expand Up @@ -335,9 +335,9 @@ module VX_scoreboard import VX_gpu_pkg::*; #(
fu_locked <= '1;
end else if (issue_fire) begin
if (issue_fu_lock && ~issue_fu_unlock) begin
fu_locked <= arb_onehot;
fu_locked[issue_ex] <= arb_onehot;
end else if (issue_fu_unlock) begin
fu_locked <= '1;
fu_locked[issue_ex] <= '1;
end
end
end
Expand Down
Loading
Loading