Keep masked barriers local under cluster gbar
This commit is contained in:
@@ -91,7 +91,7 @@ module VX_tensor_ctrl_unit import VX_gpu_pkg::*; #(
|
|||||||
assign barrier.id = req_rs1_data[`NB_WIDTH-1:0];
|
assign barrier.id = req_rs1_data[`NB_WIDTH-1:0];
|
||||||
`ifdef GBAR_ENABLE
|
`ifdef GBAR_ENABLE
|
||||||
`ifdef GBAR_CLUSTER_ENABLE
|
`ifdef GBAR_CLUSTER_ENABLE
|
||||||
assign barrier.is_global = 1'b1;
|
assign barrier.is_global = is_bar_mask ? 1'b0 : 1'b1;
|
||||||
`else
|
`else
|
||||||
assign barrier.is_global = req_rs1_data[31];
|
assign barrier.is_global = req_rs1_data[31];
|
||||||
`endif
|
`endif
|
||||||
|
|||||||
@@ -113,9 +113,9 @@ module VX_wctl_unit import VX_gpu_pkg::*; #(
|
|||||||
assign barrier.id = rs1_data[`NB_WIDTH-1:0];
|
assign barrier.id = rs1_data[`NB_WIDTH-1:0];
|
||||||
`ifdef GBAR_ENABLE
|
`ifdef GBAR_ENABLE
|
||||||
`ifdef GBAR_CLUSTER_ENABLE
|
`ifdef GBAR_CLUSTER_ENABLE
|
||||||
// all barriers are cluster-wide barriers, which is implemented by
|
// Explicit warp masks are core-local; rs2 carries the mask, not a warp
|
||||||
// modifying the global barrier logic
|
// count for the cluster global-barrier protocol.
|
||||||
assign barrier.is_global = 1'b1;
|
assign barrier.is_global = is_bar_mask ? 1'b0 : 1'b1;
|
||||||
`else
|
`else
|
||||||
assign barrier.is_global = rs1_data[31];
|
assign barrier.is_global = rs1_data[31];
|
||||||
`endif
|
`endif
|
||||||
|
|||||||
Reference in New Issue
Block a user