--- baked-ours/v1/attention/backends/mla/sparse_swa.py 2026-09-10 20:13:20.000000000 +0200 +++ baked/v1/attention/backends/mla/sparse_swa.py 2026-09-11 10:13:47.000000000 +0200 @@ -121,6 +121,9 @@ alignment=576 if uses_fp8_ds_mla_layout else 512, model_version="deepseek_v4", kv_quant_mode=get_kv_quant_mode(self.cache_config.cache_dtype), + # DCP: the 128-token window is tiny; every rank keeps all of it + # (no sharding), so SWA needs no cross-rank combine. + dcp_replicated=True, ) def forward(self): ... @@ -411,6 +414,9 @@ reorder_batch_threshold: int | None = None _cudagraph_support: ClassVar[AttentionCGSupport] = AttentionCGSupport.UNIFORM_BATCH supports_draft_decode_metadata_update = True + # DSpark's non-causal multi-token decode only touches the replicated SWA + # caches (no cross-rank combine), so it is supported under DCP. + supports_non_causal_multi_token_dcp: ClassVar[bool] = True def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs)