<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[X99 打通双 R9700 P2P 后：SGLang TP2 + DFlash2 实测]]></title><description><![CDATA[<h2>先说结论</h2>
<p dir="auto">这次测试的前提是：</p>
<blockquote>
<p dir="auto"><strong>X99 平台上的两张 Radeon AI PRO R9700 已经先打通 P2P，再进行 SGLang TP2 测试。</strong></p>
</blockquote>
<p dir="auto">基于目前已经完成的测试，可以确认：</p>
<ul>
<li><strong>X99 + 双 R9700 在 P2P 打通后可以实际运行 SGLang TP2。</strong></li>
<li>在后续正式的对比中，Plain / MTP / DFlash2 使用的是同一个 <code>Qwen/Qwen3.8-27B-FP8</code> target，因此这组 8K / 32K / 64K 数据可以用于比较三种 decode 路径。</li>
<li>DFlash2 相比普通 MTP：
<ul>
<li>8K：<code>42.29 → 51.44 tok/s</code>，约 <strong>1.22×</strong></li>
<li>32K：<code>45.32 → 55.39 tok/s</code>，约 <strong>1.22×</strong></li>
<li>64K：<code>28.60 → 59.81 tok/s</code>，约 <strong>2.09×</strong></li>
</ul>
</li>
<li>后续单独对 FP8 + DFlash2 做完整长上下文 characterization 时，192K decode 中位数为 <strong>33.75 tok/s</strong>。</li>
<li>当前已经完成 <strong>224,000 input tokens</strong> 的单次容量验证，HTTP 200、输出正确，两张 GPU 都有持续计算活动。</li>
<li>当前这套 DFlash2 TP2 runtime 中，<code>/v1/models</code> 可报告 <code>max_model_len=262144</code>，但 R8N 日志中实际 request admission ceiling 为 <strong>227701 tokens</strong>。因此本文只声称 <strong>224K 已验证</strong>，不声称 256K 已验证。</li>
<li>同样的 <code>Qwen/Qwen3.8-27B-FP8 + DFlash2</code> 在单张 R9700 32GB 上无法完成初始化，OOM 发生在 <strong>DFlash draft worker 权重构造阶段</strong>，因此目前没有严格 apples-to-apples 的 TP1 / TP2 吞吐 scaling 数据。</li>
</ul>
<p dir="auto">另外需要说明：</p>
<blockquote>
<p dir="auto"><strong>我此前也测试过 <code>shawnw3i/Qwen3.8-27B-AWQ-MTP</code> 路线，并尝试过在 AWQ target 上挂 DFlash2。那属于更早阶段的探索，不是本文 P5B-R 里 51.44 / 55.39 / 59.81 这组 DFlash2 数据。</strong></p>
</blockquote>
<p dir="auto">本文会把两条路线分开写，避免混淆。</p>
<hr />
<h1>一、测试平台与 P2P 前提</h1>
<h2>硬件环境</h2>
<pre><code class="language-text">CPU:
Intel Xeon E5-2697A v4

RAM:
128GB DDR4

主板:
华南金牌X99-TF GAMING V6.0

GPU:
2 × AMD Radeon AI PRO R9700 32GB

本文后续所有双卡 TP2 数据，均是在：

X99
+
双 R9700
+
P2P 已打通
+
SGLang TP2
</code></pre>
<p dir="auto">这一前提下取得。</p>
<p dir="auto">此前已经单独完成过双卡 P2P / HIP IPC 验证，参加帖子 <a href="https://lcz.me/topic/1925/52">https://lcz.me/topic/1925/52</a> X99 + 双 AMD Radeon AI PRO R9700 跑通跨 Root Port P2P：从内核、RCCL 到 SGLang Qwen3.8 实战</p>
<p dir="auto">本文不重复讨论 P2P 打通方法，只讨论打通之后的 SGLang TP2 与 DFlash2 表现。</p>
<p dir="auto">需要区分：</p>
<ul>
<li><strong>P2P 是否打通</strong>：属于双卡通信前置条件；</li>
<li><strong>两张卡是否真的参与同一次 TP2 推理</strong>：后续通过运行时状态及 AMD-SMI 按 PCI BDF 的活动采样进行确认。</li>
</ul>
<hr />
<h1>二、权重口径：AWQ 早期路线与后续 FP8 路线要分开</h1>
<p dir="auto">这一点是整篇帖子最需要避免混淆的地方。</p>
<h2>1. 早期 AWQ-MTP 路线</h2>
<p dir="auto">上一个帖子曾经使用：</p>
<pre><code class="language-text">shawnw3i/Qwen3.8-27B-AWQ-MTP
</code></pre>
<p dir="auto">进行 MTP / speculative 相关探索。</p>
<p dir="auto">也尝试过：</p>
<pre><code class="language-text">shawnw3i/Qwen3.8-27B-AWQ-MTP
+
DFlash2 draft
</code></pre>
<p dir="auto">但这一阶段属于更早的 AWQ 路线测试。</p>
<p dir="auto"><strong>本文后面引用的 51.44 / 55.39 / 59.81 tok/s，不是这条 AWQ + DFlash2 路线的数据。</strong></p>
<p dir="auto">因此：</p>
<pre><code class="language-text">shawnw3i/Qwen3.8-27B-AWQ-MTP
</code></pre>
<p dir="auto">只作为早期历史路线说明，不和后面的FP8 数据混在一起。</p>
<hr />
<h2>2.  MTP / DFlash2 正式对比</h2>
<p dir="auto">后续 DFlash2 测试正式对比统一使用：</p>
<pre><code class="language-text">Target:
Qwen/Qwen3.8-27B-FP8
</code></pre>
<p dir="auto">三种运行方式分别是：</p>
<h3>Plain</h3>
<pre><code class="language-text">Qwen/Qwen3.8-27B-FP8
无 speculative decoding
</code></pre>
<h3>MTP</h3>
<pre><code class="language-text">Qwen/Qwen3.8-27B-FP8
+
MTP
</code></pre>
<h3>DFlash2</h3>
<pre><code class="language-text">Target:
Qwen/Qwen3.8-27B-FP8

Draft:
z-lab/Qwen3.8-27B-DFlash2
</code></pre>
<p dir="auto">因此本次测试的：</p>
<pre><code class="language-text">Plain
vs
MTP
vs
DFlash2
</code></pre>
<p dir="auto">是在<strong>同一个 FP8 target</strong> 下完成的对比。</p>
<p dir="auto">这组数据才是本文用于判断 DFlash2 相对普通 MTP 效果的主要依据。</p>
<hr />
<h2>3. 后续 DFlash2 characterization</h2>
<p dir="auto">后续 8K / 32K / 64K / 128K / 192K 的完整 characterization，以及 224K capacity probe，继续统一使用：</p>
<pre><code class="language-text">Target:
Qwen/Qwen3.8-27B-FP8

Draft:
z-lab/Qwen3.8-27B-DFlash2
</code></pre>
<p dir="auto">因此后半部分的 DFlash2 数据也是同一条 FP8 + DFlash2 路线。</p>
<hr />
<h1>三、后续 FP8 + DFlash2 测试的启动条件</h1>
<p dir="auto">后续独立 DFlash2 characterization 使用的核心运行条件如下。</p>
<pre><code class="language-text">SGLang:
0.5.18 + RDNA4 patch

Image:
sglang-rdna4-production:v0.5.18-r1

Image ID:
sha256:bea0f21f6e2ebcac99274b3f14f271281bf1249111840d9798542f3383191b49

Patch SHA256:
2f78d14d12787d029453671979229a4a26a6c2b3ccd732b422754a2c82f99cce

Frozen launch SHA256:
15f266c4934d89cf6463422b768446341edf3292ed6bbec0b36575e691223a47

Target:
Qwen/Qwen3.8-27B-FP8

Draft:
z-lab/Qwen3.8-27B-DFlash2

Tensor Parallel:
2

GPU count:
2

GPU BDF:
0000:05:00.0
0000:08:00.0

KV cache dtype:
FP8 e4m3

DFlash2:
ON

BN:
32

SSM precision:
FP32

ReplaySSM:
OFF

Default thinking:
enable_thinking=false
</code></pre>
<h3>Context 配置</h3>
<p dir="auto">完整 8K–192K characterization 阶段使用的是当时冻结的常规测试配置。</p>
<p dir="auto">后续为了验证 200K 以上容量，只对测试用 TP2 runtime 的 context cap 做了临时调整，其它核心模型和 DFlash2 条件保持不变。</p>
<pre><code class="language-text">/v1/models max_model_len:
262144
</code></pre>
<p dir="auto">但 229000-token 请求被 SGLang 拒绝，日志给出的实际 request admission ceiling 为：</p>
<pre><code class="language-text">227701 tokens
</code></pre>
<p dir="auto">随后使用：</p>
<pre><code class="language-text">input tokens:
224000

max output tokens:
128
</code></pre>
<p dir="auto">完成单次成功验证。</p>
<p dir="auto">测试结束后，临时 context 调整已撤销，launcher 已恢复原状态。</p>
<hr />
<h1>四、Plain / MTP / DFlash2 同一 FP8 Target 对比</h1>
<p dir="auto">这一组是本文最重要的性能对比。</p>
<p dir="auto">三种模式的 target 都是：</p>
<pre><code class="language-text">Qwen/Qwen3.8-27B-FP8
</code></pre>
<p dir="auto">同时：</p>
<pre><code class="language-text">TP:
2

KV:
FP8 e4m3
</code></pre>
<p dir="auto">DFlash2 模式额外挂载：</p>
<pre><code class="language-text">z-lab/Qwen3.8-27B-DFlash2
</code></pre>
<p dir="auto">实测 decode：</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Context</th>
<th style="text-align:right">Plain</th>
<th style="text-align:right">MTP</th>
<th style="text-align:right">DFlash2</th>
<th style="text-align:right">DFlash2 / MTP</th>
</tr>
</thead>
<tbody>
<tr>
<td>8K</td>
<td style="text-align:right">21.48 tok/s</td>
<td style="text-align:right">42.29 tok/s</td>
<td style="text-align:right"><strong>51.44 tok/s</strong></td>
<td style="text-align:right"><strong>1.22×</strong></td>
</tr>
<tr>
<td>32K</td>
<td style="text-align:right">19.21 tok/s</td>
<td style="text-align:right">45.32 tok/s</td>
<td style="text-align:right"><strong>55.39 tok/s</strong></td>
<td style="text-align:right"><strong>1.22×</strong></td>
</tr>
<tr>
<td>64K</td>
<td style="text-align:right">16.82 tok/s</td>
<td style="text-align:right">28.60 tok/s</td>
<td style="text-align:right"><strong>59.81 tok/s</strong></td>
<td style="text-align:right"><strong>2.09×</strong></td>
</tr>
</tbody>
</table>
<h2>Plain → MTP</h2>
<p dir="auto">MTP 本身已经带来明显提升。</p>
<p dir="auto">例如 32K：</p>
<pre><code class="language-text">Plain:
19.21 tok/s

MTP:
45.32 tok/s
</code></pre>
<hr />
<h2>MTP → DFlash2</h2>
<p dir="auto">DFlash2 在同一个 FP8 target 下继续提高 decode。</p>
<p dir="auto">8K：</p>
<pre><code class="language-text">42.29 → 51.44 tok/s
≈ 1.22×
</code></pre>
<p dir="auto">32K：</p>
<pre><code class="language-text">45.32 → 55.39 tok/s
≈ 1.22×
</code></pre>
<p dir="auto">64K：</p>
<pre><code class="language-text">28.60 → 59.81 tok/s
≈ 2.09×
</code></pre>
<p dir="auto">因此在这组同 target 测试里，可以直接说：</p>
<blockquote>
<p dir="auto"><strong>DFlash2 相比普通 MTP 有明确提升。</strong></p>
</blockquote>
<p dir="auto">但也需要注意：</p>
<blockquote>
<p dir="auto">这三个倍数是对应这组具体 workload 的实测结果，不应直接外推为所有 prompt、所有输出类型下都固定存在相同倍数。</p>
</blockquote>
<p dir="auto">Speculative decoding 的实际速度仍然会受到：</p>
<pre><code class="language-text">accept rate
accept length
verify latency
</code></pre>
<p dir="auto">等因素影响。</p>
<hr />
<h1>五、FP8 + DFlash2 完整长上下文 characterization</h1>
<p dir="auto">后续重新固定了一套 benchmark workload，对 FP8 + DFlash2 单独进行完整长上下文测试。</p>
<p dir="auto">当前结果：</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Context</th>
<th style="text-align:right">Decode</th>
<th style="text-align:right">Prefill</th>
<th style="text-align:right">TTFT</th>
<th style="text-align:right">E2E</th>
</tr>
</thead>
<tbody>
<tr>
<td>8K</td>
<td style="text-align:right"><strong>40.78 tok/s</strong></td>
<td style="text-align:right">1747.70 tok/s</td>
<td style="text-align:right">4.69s</td>
<td style="text-align:right">4.96s</td>
</tr>
<tr>
<td>32K</td>
<td style="text-align:right"><strong>40.00 tok/s</strong></td>
<td style="text-align:right">1499.38 tok/s</td>
<td style="text-align:right">21.85s</td>
<td style="text-align:right">23.28s</td>
</tr>
<tr>
<td>64K</td>
<td style="text-align:right"><strong>35.48 tok/s</strong></td>
<td style="text-align:right">1248.14 tok/s</td>
<td style="text-align:right">52.51s</td>
<td style="text-align:right">52.82s</td>
</tr>
<tr>
<td>128K</td>
<td style="text-align:right"><strong>34.38 tok/s</strong></td>
<td style="text-align:right">929.67 tok/s</td>
<td style="text-align:right">140.99s</td>
<td style="text-align:right">142.64s</td>
</tr>
<tr>
<td>192K</td>
<td style="text-align:right"><strong>33.75 tok/s</strong></td>
<td style="text-align:right">739.79 tok/s</td>
<td style="text-align:right">265.76s</td>
<td style="text-align:right">267.33s</td>
</tr>
</tbody>
</table>
<p dir="auto">从这组数据本身看：</p>
<pre><code class="language-text">8K      40.78 tok/s
32K     40.00 tok/s
64K     35.48 tok/s
128K    34.38 tok/s
192K    33.75 tok/s
</code></pre>
<p dir="auto">8K 到 192K 的 decode 下降约 17%。</p>
<p dir="auto">Prefill：</p>
<pre><code class="language-text">8K      1747.70 tok/s
32K     1499.38 tok/s
64K     1248.14 tok/s
128K     929.67 tok/s
192K     739.79 tok/s
</code></pre>
<p dir="auto">需要特别注意：</p>
<blockquote>
<p dir="auto"><strong>这组 40.78 / 40.00 / 35.48 / 34.38 / 33.75 不能直接和之前的 51.44 / 55.39 / 59.81 做“版本性能回归”判断。</strong></p>
</blockquote>
<p dir="auto">因为两轮：</p>
<ul>
<li>prompt 不同；</li>
<li>output workload 不同；</li>
<li>cache 状态不同；</li>
<li>benchmark harness 不同；</li>
<li>streaming / timing 方法不同。</li>
</ul>
<p dir="auto">所以两组数据用途不同：</p>
<ul>
<li><strong>前面一组</strong>：Plain / MTP / DFlash2 同 target 对比；</li>
<li><strong>后续 characterization</strong>：观察 FP8 + DFlash2 自己的长上下文性能曲线。</li>
</ul>
<hr />
<h1>六、224K 单次容量验证</h1>
<p dir="auto">在完成 192K benchmark 后，又继续验证更长输入。</p>
<p dir="auto">R8N-1 最终只发送一次长请求：</p>
<pre><code class="language-text">Actual input tokens:
224000

Max output tokens:
128
</code></pre>
<p dir="auto">服务器报告：</p>
<pre><code class="language-text">prompt tokens:
224000

HTTP:
200

output:
READY

TTFT:
330.757s

E2E:
330.872s
</code></pre>
<p dir="auto">GPU 采样：</p>
<pre><code class="language-text">GPU 05:
319 samples
GFX average = 100%
GFX peak = 100%

GPU 08:
319 samples
GFX average = 100%
GFX peak = 100%
</code></pre>
<p dir="auto">峰值显存：</p>
<pre><code class="language-text">GPU 05:
30132 MB

GPU 08:
29849 MB
</code></pre>
<p dir="auto">请求期间未发现：</p>
<pre><code class="language-text">OOM
GPU reset
GPU hang
HIP fatal
page fault
</code></pre>
<p dir="auto">因此可以直接确认：</p>
<blockquote>
<p dir="auto"><strong>X99 双 R9700 P2P + SGLang TP2 + Qwen/Qwen3.8-27B-FP8 + DFlash2 已经实际完成 224,000-token 输入。</strong></p>
</blockquote>
<p dir="auto">这里的 224K 是 server-reported prompt tokens，不是文本长度估算值。</p>
<hr />
<h1>七、为什么本文不写“256K 已验证”</h1>
<p dir="auto">R8N 中：</p>
<pre><code class="language-text">/v1/models:
max_model_len = 262144
</code></pre>
<p dir="auto">但：</p>
<pre><code class="language-text">229000-token input
</code></pre>
<p dir="auto">被 SGLang request layer 拒绝。</p>
<p dir="auto">日志给出的实际 request ceiling：</p>
<pre><code class="language-text">227701 tokens
</code></pre>
<p dir="auto">所以目前有三个不同数字：</p>
<pre><code class="language-text">模型报告 max_model_len:
262144

当前 DFlash2 TP2 runtime 已知 request ceiling:
227701

最高实际成功验证 input:
224000
</code></pre>
<p dir="auto">它们不能混为一谈。</p>
<p dir="auto">本轮测试只证明：</p>
<blockquote>
<p dir="auto"><strong>当前 runtime 能接收并完成 224K；229K 超过了当时 runtime 给出的 admission limit。</strong></p>
</blockquote>
<p dir="auto">至于：</p>
<pre><code class="language-text">262144 → 227701
</code></pre>
<p dir="auto">中间的差额究竟有多少来自：</p>
<pre><code class="language-text">DFlash2 draft
draft KV
target KV
token pool
其它 runtime reservation
</code></pre>
<p dir="auto">本文并没有逐项隔离，所以不把它写成已证明的单一因果关系。</p>
<p dir="auto">因此本文不会声称：</p>
<pre><code class="language-text">双 R9700 硬件最多只能 227.7K
</code></pre>
<p dir="auto">也不会声称：</p>
<pre><code class="language-text">DFlash2 固定只能到 227.7K
</code></pre>
<p dir="auto">准确结论只有：</p>
<blockquote>
<p dir="auto"><strong>当前这套冻结 DFlash2 TP2 runtime 实测成功到 224K，R8N 日志给出的 admission ceiling 为 227701 tokens。</strong></p>
</blockquote>
<hr />
<h1>八、为什么没有 TP1 性能对比</h1>
<p dir="auto">原计划还想做：</p>
<pre><code class="language-text">TP1 DFlash2
vs
TP2 DFlash2
</code></pre>
<p dir="auto">计算第二张 R9700 带来的纯 throughput scaling。</p>
<p dir="auto">但是严格相同的 FP8 + DFlash2 stack 在单卡上无法完成启动。</p>
<p dir="auto">TP1 使用：</p>
<pre><code class="language-text">GPU:
1 × R9700 32GB

TP:
1

Target:
Qwen/Qwen3.8-27B-FP8

DFlash2:
ON
</code></pre>
<p dir="auto">分别尝试：</p>
<pre><code class="language-text">32K
64K
128K
</code></pre>
<p dir="auto">三档都在启动阶段 OOM。</p>
<p dir="auto">32K 的典型状态：</p>
<pre><code class="language-text">GPU total:
31.86 GiB

allocated:
31.41 GiB

free:
112 MiB

next allocation:
170 MiB

result:
OOM
</code></pre>
<p dir="auto">64K、128K 的失败点和显存状态基本一致。</p>
<p dir="auto">后续初始化顺序审计确认：</p>
<blockquote>
<p dir="auto"><strong>OOM 发生在 DFlash draft worker 权重构造阶段。</strong></p>
</blockquote>
<p dir="auto">此时：</p>
<pre><code class="language-text">KV pool
attention backend
CUDA/HIP graph
</code></pre>
<p dir="auto">都还没有初始化。</p>
<p dir="auto">因此可以确认：</p>
<blockquote>
<p dir="auto"><strong>32K / 64K / 128K 全部失败并不是上下文长度本身导致的，而是当前 FP8 target + DFlash2 stack 在单张 32GB R9700 上无法完成初始化。</strong></p>
</blockquote>
<p dir="auto">所以目前没有合法的：</p>
<pre><code class="language-text">TP2 / TP1 decode speedup
</code></pre>
<p dir="auto">可以计算。</p>
<p dir="auto">如果为了获得 TP1 数字而改：</p>
<pre><code class="language-text">模型精度
权重量化
offload
CPU spill
</code></pre>
<p dir="auto">那就已经不是同一个测试对象。</p>
<hr />
<h1>九、这组测试实际说明了什么</h1>
<h2>1. X99 打通 P2P 后，双 R9700 TP2 可以实际工作</h2>
<p dir="auto">本文不是只验证：</p>
<pre><code class="language-text">系统识别两张 GPU
</code></pre>
<p dir="auto">而是在真实长上下文请求期间观察两张卡的运行活动。</p>
<p dir="auto">224K 请求：</p>
<pre><code class="language-text">05:00.0:
319 个 1 秒样本
GFX 平均 100%

08:00.0:
319 个 1 秒样本
GFX 平均 100%
</code></pre>
<p dir="auto">因此至少对于这套机器，可以确认：</p>
<blockquote>
<p dir="auto"><strong>X99 老平台在 P2P 打通以后，可以承载实际双 R9700 TP2 推理。</strong></p>
</blockquote>
<hr />
<h2>2. DFlash2 对同一个 FP8 target 的提升明确存在</h2>
<p dir="auto">P5B-R：</p>
<pre><code class="language-text">Target:
Qwen/Qwen3.8-27B-FP8
</code></pre>
<p dir="auto">实测：</p>
<pre><code class="language-text">8K:
MTP 42.29
DFlash2 51.44
≈1.22×

32K:
MTP 45.32
DFlash2 55.39
≈1.22×

64K:
MTP 28.60
DFlash2 59.81
≈2.09×
</code></pre>
<p dir="auto">这一组可以用于直接比较：</p>
<blockquote>
<p dir="auto"><strong>同一个 FP8 target 下，普通 MTP 与 DFlash2 的实际表现。</strong></p>
</blockquote>
<hr />
<h2>3. FP8 + DFlash2 的长上下文能力已经实际验证到 224K</h2>
<p dir="auto">正式 characterization：</p>
<pre><code class="language-text">192K decode:
33.75 tok/s
</code></pre>
<p dir="auto">单次 capacity probe：</p>
<pre><code class="language-text">224000 input tokens:
PASS
</code></pre>
<p dir="auto">因此这里不只是模型配置上“允许长上下文”，而是真实请求已经跑过。</p>
<hr />
<h2>4. 双卡首先解决的是容量问题</h2>
<p dir="auto">单卡：</p>
<pre><code class="language-text">Qwen/Qwen3.8-27B-FP8 + DFlash2
→ draft worker 初始化 OOM
</code></pre>
<p dir="auto">双卡：</p>
<pre><code class="language-text">X99 + P2P + TP2
→ 正常启动
→ 192K benchmark 完成
→ 224K request 完成
</code></pre>
<p dir="auto">因此这套 stack 上第二张 R9700 的第一层价值是：</p>
<blockquote>
<p dir="auto"><strong>让完整 FP8 + DFlash2 从单卡无法初始化，变成双卡可以正常运行长上下文。</strong></p>
</blockquote>
<p dir="auto">至于纯粹 TP1 → TP2 的 throughput scaling，因为 TP1 同配置没有可运行基线，目前不能给出严谨数字。</p>
]]></description><link>https://lcz.me/topic/2036</link><generator>RSS for Node</generator><lastBuildDate>Mon, 12 Oct 2026 13:29:45 GMT</lastBuildDate><atom:link href="https://lcz.me/topic/2036.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 01 Oct 2026 16:00:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to X99 打通双 R9700 P2P 后：SGLang TP2 + DFlash2 实测 on Sat, 03 Oct 2026 01:51:57 GMT]]></title><description><![CDATA[<p dir="auto">非常牛逼，这个其实最大的意义还是把老平台的顽疾给修复了，以后其他框架也能用到。但说实话，双卡没啥问题之后，XTX以上还是用SG-Lang跑双卡TP体验最好。搭配HiCache的话更舒服。</p>
]]></description><link>https://lcz.me/post/22023</link><guid isPermaLink="true">https://lcz.me/post/22023</guid><dc:creator><![CDATA[terry]]></dc:creator><pubDate>Sat, 03 Oct 2026 01:51:57 GMT</pubDate></item></channel></rss>