Latency model: HBM PC striping + chunk-loop drain (ADR-0033)
Previous model double-counted slow-upstream paths (e.g., 64KB via UCIe 128 GB/s was ~2x pessimistic). HBM CTRL now distributes bursts across 8 pseudo-channels via global round-robin, with per-chunk commit timing that pipelines correctly against the bottleneck link's data arrival. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -404,13 +404,18 @@ def _instantiate_cube(
|
||||
label=name.upper().replace("_", " "),
|
||||
)
|
||||
|
||||
# ── HBM controller (single node, ADR-0019 D1) ──
|
||||
# ── HBM controller (single node, ADR-0019 D1, ADR-0033) ──
|
||||
hbm_spec = cube["components"]["hbm_ctrl"]
|
||||
hbm_lx, hbm_ly = local_pos["hbm_ctrl"]
|
||||
hbm_id = f"{cp}.hbm_ctrl"
|
||||
hbm_attrs = dict(hbm_spec["attrs"])
|
||||
_hbm_total_bw = float(cube["links"].get("hbm_to_router_bw_gbs", 256.0))
|
||||
_num_pcs = int(hbm_attrs.get("num_pcs", 8))
|
||||
hbm_attrs["num_pcs"] = _num_pcs
|
||||
hbm_attrs["pc_bw_gbs"] = _hbm_total_bw / _num_pcs
|
||||
nodes[hbm_id] = Node(
|
||||
id=hbm_id, kind=hbm_spec["kind"], impl=hbm_spec["impl"],
|
||||
attrs=hbm_spec["attrs"], pos_mm=(ox + hbm_lx, oy + hbm_ly),
|
||||
attrs=hbm_attrs, pos_mm=(ox + hbm_lx, oy + hbm_ly),
|
||||
label="HBM CTRL",
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user