# 搬一个 WMMA Kernel，Strata Prefill 翻近一倍

> Strata 刚支持 7900XTX 时 prefill 才 700 多，把 vLLM 上的专用 WMMA kernel 搬过来，prefill 直接干到 1300+。思路简单但收益巨大。

![Strata 魔改 WMMA Kernel 原理示意](/assets/articles/lcz/strata-magic/hero.jpg)

> Strata 刚支持 7900XTX 时 prefill 才 700 多，把 vLLM 上的专用 WMMA kernel 搬过来，prefill 直接干到 1300+。

## 背景

Strata 引擎刚支持 AMD 7900XTX 时，跑 IQ3_S 量化：
- Decode：55 t/s（还不错）
- Prefill：700 多（差点意思）

Prefill 阶段的瓶颈是矩阵乘法 kernel 的效率。Strata 默认的 hipBLAS 路径对 RDNA3 不够优化。

## 解法：搬 vLLM 的 WMMA kernel

vLLM 上有针对 RDNA3 的专用 **WMMA（Wave Matrix Multiply Add）kernel**，这是针对 AMD GPU 的硬件矩阵单元做深度优化的。

把这个 kernel 从 vLLM 搬到 Strata，效果立竿见影：**prefill 从 700 多 → 1300+**，decode 也从 40 提升到 50。

## 几个容易被忽视的细节

1. **专家权重在 RAM 缓存**：这个引擎的专家基本都在 RAM 缓存，支持 CPU/GPU 混合计算，所以会看到一个奇怪现象——短上下文的 prefill 比长上下文还低。主要是 VRAM caching 构建中的摩擦成本，**模型越用越快**。
2. **PCIe 带宽是 prefill 瓶颈**：作者双卡 7900XTX PCIe x8 拆分，拔了第二张卡后主卡自动获得 PCIe x16，**prefill 涨了 30%，decode 涨了 10%**。
3. **12GB 的 5070 和 24G 的 7900XTX decode 一样快**：因为 5070 是 PCIe 5.0 x16，带宽优势补足了显存差距。

## 启动命令

```bash
cd path/to/Strata
HIP_VISIBLE_DEVICES=0 PYTHONUNBUFFERED=1 \
  ~/.config/strata/venv/bin/python -m serve.server \
  --engine strata --config serve.json --port 8080
```

## 一句话

"找个趁手的 Agent 帮你部署一下就好了"——这句话是认真的。RDNA3 上 Strata 的 prefill 优化，核心就是把 vLLM 的 WMMA kernel 搬过来，思路简单但收益巨大。


---
来源：https://laobanclaw.top/articles/strata-wmma-kernel-port/（AI 军火库）
