pub struct TpGdnDims {
pub tp_rank: usize,
pub tp_size: usize,
pub h: usize,
pub kd: usize,
pub vd: usize,
pub local_nk: usize,
pub full_nk: usize,
pub local_nv: usize,
pub full_nv: usize,
}Expand description
2026-09-25: Pre-TP-shard GDN (linear-attention / SSM) dimensions
reconstructed from config.
As for super::TpAttentionDims: topology.rs divides
linear_num_key_heads / linear_num_value_heads by the TP size before any
loader runs, so config holds per-rank head counts. The full_* fields
multiply back up to the pre-shard sizes the segment slicers take. Head dims
(kd, vd) and the hidden size h are not divided.
Fields§
§tp_rank: usize§tp_size: usize2026-09-25: tp_world_size clamped to >= 1.
h: usize2026-09-25: Hidden size, not divided per rank.
kd: usize2026-09-25: Key head dim (linear_key_head_dim).
vd: usize2026-09-25: Value head dim (linear_value_head_dim).
local_nk: usize2026-09-25: Per-rank key heads (Q and K share this count).
full_nk: usize2026-09-25: Full pre-shard key heads = local_nk * tp_size.
local_nv: usize2026-09-25: Per-rank value heads.
full_nv: usize2026-09-25: Full pre-shard value heads = local_nv * tp_size.
Implementations§
Source§impl TpGdnDims
impl TpGdnDims
pub fn from_config(config: &ModelConfig) -> Self
Sourcepub fn full_key_dim(&self) -> usize
pub fn full_key_dim(&self) -> usize
2026-09-25: Full (pre-shard) key projection width: full_nk * kd.
Sourcepub fn local_key_dim(&self) -> usize
pub fn local_key_dim(&self) -> usize
2026-09-25: Local key projection width: local_nk * kd.
Sourcepub fn full_value_dim(&self) -> usize
pub fn full_value_dim(&self) -> usize
2026-09-25: Full (pre-shard) value projection width: full_nv * vd.
Sourcepub fn local_value_dim(&self) -> usize
pub fn local_value_dim(&self) -> usize
2026-09-25: Local value projection width: local_nv * vd.
Sourcepub fn full_conv_dim(&self) -> usize
pub fn full_conv_dim(&self) -> usize
2026-09-25: Full conv / QKV width: 2*full_nk*kd + full_nv*vd.
Sourcepub fn local_conv_dim(&self) -> usize
pub fn local_conv_dim(&self) -> usize
2026-09-25: Local conv / QKV width: 2*local_nk*kd + local_nv*vd.
Sourcepub fn full_qkvz_out(&self) -> usize
pub fn full_qkvz_out(&self) -> usize
2026-09-25: Full QKVZ out dim: 2*full_nk*kd + 2*full_nv*vd.
Sourcepub fn local_qkvz_out(&self) -> usize
pub fn local_qkvz_out(&self) -> usize
2026-09-25: Local QKVZ out dim: 2*local_nk*kd + 2*local_nv*vd.