X99 不能P2P让我很难受 。 买Pcie switch(260925DELL T7910 已判:死缓,原因:拿不到大Bar )
-
两点分开答。
@hippo 的 ReBAR:ReBAR(Resizable BAR)和 P2P 不是同一件事,但它确实是 P2P 的前置条件之一——GPU 到 GPU 直连,要求对端的显存整段 BAR 能映射进来。X99 上经常缺的其实是 BIOS 的 Above 4G Decoding(以及随之而来的大 BAR),所以先确认板子有没有这个选项;没有的话 P2P 根本没有地址可映射,买 switch 也白搭。反过来,有大 BAR 也不等于 switch 一定有用,还要看这个 bridge 本身支不支持 peer-to-peer forwarding——LRLink 那类 PLX/Broadcom 方案(也就是你引的 Level1Techs 帖)说的正是「root port 的 ACS 挡住 P2P 时,它给了两张卡一个共同的下游桥」。所以顺序是:先过大 BAR/Above 4G,再确认 bridge 支持 P2P,两个都满足才值得买。
@applejuice 问「换主板是不是更划算」:换消费级主板大概率解决不了 P2P——桌面芯片组的 root port 默认开着 ACS,P2P 照样被挡;要原生 P2P 得往 EPYC/Threadripper 这种能配 ACS 的平台走,CPU+板+内存的价钱是 switch 的几倍到十几倍。所以:
- 目的只是让两张 R9700 的 all-reduce 走 P2P、不绕 CPU:switch/bridge 是最便宜的对症方案,前提是上面两点成立。
- 想要更大上行带宽 + 更多内存通道:换平台,但别把它当成「顺便修 P2P」的理由。
- switch 不增加上行带宽:X99 到 CPU 还是 x16 Gen3(约 15.75 GB/s)封顶,它省的是每 token 那次 CPU 往返,不会把 decode 拉一个数量级。
另外「几百块」要当心:正经支持 peer forwarding 的 switch 卡一般不止几百人民币,几百块的多半是普通 fan-out switch,买前问清支不支持 P2P。
-
我之前也以为 X99 基本没法搞 P2P,甚至已经在看 TRX40 / WRX80 和 PCIe Switch 板子了。
不过最近在 E5-2697A v4 + X99 + 双 R9700 上实际折腾下来,已经把跨 Root Port 的 Direct P2P 跑通了。
这件事不是改一个开关就行,我这边大概做了下面几层。
1. 先确认硬件拓扑没问题
两张 R9700 都是 CPU 直出的 PCIe 3.0 x16,但挂在不同的 Broadwell Root Port 下。
基础设置:
- Above 4G Decoding 开
- ReBAR 开
- CSM 关
- 两张卡确认都是 8GT/s x16
- 检查 BAR / IOMMU / PCIe topology
另外把整条 PCIe Path 的 MPS 都查了一遍。
X99/Broadwell Root Port 最大只支持 256B MPS,所以最终就保持256B,没有去强行改512/1024。
2. 先解决 AMDGPU / HSA 层面的跨 Root Port P2P
Broadwell-EP 这里有个比较麻烦的问题:
跨 Root Port P2PDMA + 44-bit DMA address / 大 BAR 映射 默认并不顺畅。
我这边最后使用了定制的:
6.8.12-r9700-p2p-dma44内核,把 X99/Broadwell 这层 P2P DMA 映射问题处理掉。
之后先不碰 SGLang,直接做底层测试。
HIP IPC 也单独验证过,使用:
HSA_ENABLE_IPC_MODE_LEGACY=0两张卡之间的 IPC 可以正常建立。
然后用 TransferBench / hipMemcpyPeerAsync 验证真正的 GPU→GPU 数据通路。
实测:
- GFX Push / Posted Write:约 10.29 GB/s
- SDMA / hipMemcpyPeerAsync:约 10.26~10.29 GB/s
- 双向同时传输 aggregate:约 19.7 GB/s
也就是说 PCIe 3.0 x16 的跨 Root Port P2P 实际已经跑到了比较正常的水平。
这里很重要的一点是:
先证明 GPU P2P 本身能工作,再折腾 RCCL。
3. RCCL 是第二个坑
底层 P2P 通了以后,Stock RCCL 还是不会自动使用它。
原因是两张卡跨 CPU Root Port,RCCL 把拓扑识别为:
PATH_PHBStock RCCL 会退回:
via SHM/direct/direct也就是说底层明明能 P2P,但 RCCL 还是绕系统内存。
当时实测:
- Stock RCCL SendRecv 1G:约 6.9 GB/s
- AllReduce BusBW:约 4.5 GB/s
所以还需要处理 RCCL。
4. 给 RCCL 做了一个很小的 patch
我现在用的是 patched RCCL 2.27.7。
修改其实很小,在:
src/graph/paths.cc里只有大约 6行顺序调整。
核心问题是 RCCL 对 Intel 平台设置默认 P2P level 的顺序,会把用户指定的 PHB override 覆盖掉。
修改后,让:
NCCL_P2P_LEVEL=PHB成为最终生效值。
这里要注意:
只设置环境变量没用。
我实际验证过:
- Stock RCCL +
NCCL_P2P_LEVEL=PHB→ 还是 SHM - Patched RCCL,不设置 PHB → 还是 SHM
- Patched RCCL +
NCCL_P2P_LEVEL=PHB→ Direct P2P
两者必须同时有。
我没有使用:
HSA_FORCE_FINE_GRAIN_PCIE=1
5. RCCL Direct P2P 打通后的结果
还是同一套 rccl-tests:
- SendRecv 1G:约 9.75 GB/s
- AllReduce BusBW:约 9.51 GB/s
- AllGather BusBW:约 9.16 GB/s
- ReduceScatter BusBW:约 8.92 GB/s
SendRecv 已经达到 TransferBench P2P Push 的约95%。
这时候基本可以确认:
RCCL 已经不是 SHM,而是真正走 GPU Direct P2P。
6. 最后再接 SGLang TP2
SGLang 启动后继续检查日志,不只是看“服务能跑”。
现在能够看到类似:
isAllDirectP2p 1以及:
via P2P/IPC确认 TP2 通信真正走 Direct P2P。
目前跑 Qwen3.8-27B AWQ,已经从1K一直测到251.5K context:
- 251.5K Prefill:约 712 tok/s
- 251.5K Native Decode:约 10.08 tok/s
- 251.5K input + 512 output:0 OOM
连续高负载测试也没有看到 PCIe AER、GPU reset 或 P2P掉线。
所以我现在对 X99 的看法和最开始完全不一样。
X99/Broadwell 不是硬件上完全不能 P2P,而是默认的软件路径很难直接用。
我这边实际上处理了两层:
第一层:
X99/Broadwell + AMDGPU/HSA 的跨 Root Port P2P DMA。第二层:
让 RCCL 接受PATH_PHB下的 Direct P2P,而不是自动退回 SHM。两层都打通以后,PCIe 3.0 x16 本身反而没有想象中那么差。
所以如果你的X99也是两张卡 CPU直连 x16+x16,我建议先把现有平台的 P2P 路径查清楚,不一定需要马上买 PCIe Switch。
Switch可以改善拓扑,但如果真正的问题是 AMDGPU / RCCL 软件策略,单纯加Switch未必就能解决。
后面我准备把 X99 双 R9700 从内核、TransferBench、RCCL到SGLang TP2的完整过程整理一下,应该比单独贴一个“跑通了”的结果更有参考价值。
-
补一条,我的主板是X99-TF GAMING V6.0
-
我比较想问,买新的主板不会比买pcie switch 更划算吗?
-
-
-
-
-
这台设备大概多少钱?PCIE4的?
2380 含两根线 + 箱内的一张转出卡(纯转出 16x)
这个价格可以呀,相比较于换平台来说。四张卡,然后配合这个接到树莓派(或者是n100)。
我看过youtube 上的一个哥们就是用树莓派做头
老鼠拉铁锹。
R9700这张卡没有推理任务的时候功耗很低的,反正权重已经加载到了显存~ 树莓派的性能足够了~
但raspiberry 如果转接了Pcie的话,好像没地方放SSD了。
SD卡凑合一下就行
, 这个Switch型号是什么?我去淘宝看看。
-
这台设备大概多少钱?PCIE4的?
2380 含两根线 + 箱内的一张转出卡(纯转出 16x)
这个价格可以呀,相比较于换平台来说。四张卡,然后配合这个接到树莓派(或者是n100)。
我看过youtube 上的一个哥们就是用树莓派做头
老鼠拉铁锹。
R9700这张卡没有推理任务的时候功耗很低的,反正权重已经加载到了显存~ 树莓派的性能足够了~
但raspiberry 如果转接了Pcie的话,好像没地方放SSD了。
SD卡凑合一下就行
, 这个Switch型号是什么?我去淘宝看看。
这台设备大概多少钱?PCIE4的?
2380 含两根线 + 箱内的一张转出卡(纯转出 16x)
这个价格可以呀,相比较于换平台来说。四张卡,然后配合这个接到树莓派(或者是n100)。
我看过youtube 上的一个哥们就是用树莓派做头
老鼠拉铁锹。
R9700这张卡没有推理任务的时候功耗很低的,反正权重已经加载到了显存~ 树莓派的性能足够了~
但raspiberry 如果转接了Pcie的话,好像没地方放SSD了。
SD卡凑合一下就行
, 这个Switch型号是什么?我去淘宝看看。

-
能不能P2P 你等我趟完路再试吧,不然白费功夫。老外是拿双R9700 跑训练。卡间通讯非常好。
nThread 1 nGpus 2 minBytes 1048576 maxBytes 134217728 step: 2(factor)
Size busbw (out-of-place) busbw (in-place) 1048576 4.99 GB/s 5.01 GB/s 2097152 5.19 5.20 4194304 5.30 5.31 8388608 5.36 5.36 16777216 5.39 5.39 33554432 5.39 5.39 67108864 5.40 5.40134217728 5.41 5.41
-
能不能P2P 你等我趟完路再试吧,不然白费功夫。老外是拿双R9700 跑训练。卡间通讯非常好。
nThread 1 nGpus 2 minBytes 1048576 maxBytes 134217728 step: 2(factor)
Size busbw (out-of-place) busbw (in-place) 1048576 4.99 GB/s 5.01 GB/s 2097152 5.19 5.20 4194304 5.30 5.31 8388608 5.36 5.36 16777216 5.39 5.39 33554432 5.39 5.39 67108864 5.40 5.40134217728 5.41 5.41
能不能P2P 你等我趟完路再试吧,不然白费功夫。老外是拿双R9700 跑训练。卡间通讯非常好。
nThread 1 nGpus 2 minBytes 1048576 maxBytes 134217728 step: 2(factor)
Size busbw (out-of-place) busbw (in-place) 1048576 4.99 GB/s 5.01 GB/s 2097152 5.19 5.20 4194304 5.30 5.31 8388608 5.36 5.36 16777216 5.39 5.39 33554432 5.39 5.39 67108864 5.40 5.40134217728 5.41 5.41
可行!支持你老哥!
-
- 3945WX 内置 8 通道 DDR4 控制器,官方最大支持 2TB 内存——128G 对它来说是零头
- 一个核就能访问全部 8 通道;128G 内存哪怕只开 1 个核也“带得动”,只是带宽用不满
- 真正的约束是:内存带宽 vs 你的工作负载。3945WX 8 通道 DDR4-3200 = 204.8GB/s 总带宽(TechPowerUp 官方规格),12 个核分这点带宽完全够
- 你现在的 8700K 是双通道 ~45GB/s,3945WX 是它的 4.5 倍
所以答案:够,绰绰有余。LLM 推理场景(KV 溢出主存、HiCache、CPU offload)吃的是带宽不是核数,8 通道正是路线 A/B 的核心价值。
二、NUMA 节点:这才是 A 和 B 的真正区别,你问到点子上了
路线 A(3945WX/WRX80) 路线 B(EPYC 7402/SP3) 物理 NUMA 1 个节点(单 socket) 1 socket,但可切 1/2/4 节点(BIOS NPS 设置) 出厂默认 NPS0=统一内存访问,全部 GPU 等距 NPS1(单节点)或 NPS4(拆 4 个) GPU 亲和性 无所谓,哪张卡都一样 NPS1 时也无所谓;NPS4 时 GPU0-3 分属不同节点,绑错核 latency 翻倍 调度复杂度 零心智负担 需要懂 numactl,但灵活性高 对比你的 DL380 双路 —— 单路=没有跨 socket QPI/UPI 问题 对推理工作流的实际意义:
- 双 3090 TP=2:A 平台零配置最优;B 平台设 NPS1 也等效(官方文档:NPS 决定内存交织模式,NPS1=全交织,GPU 访问任意内存等距)
- 4 卡场景:B 设 NPS4 + 每卡绑本节点内存,对 prefill 吞吐有 5-15% 收益(Dell/AMD 官方调优指南的结论);A 平台没这个选项也意味着没这个坑
- 老实说:你的场景(2 卡起步,4 卡为目标)两个平台都能管好,B 多一个可调项,A 少一个要学的东西
三、5955WX 为什么 ¥3,999——你的直觉「才16核咋这么贵」又问到点子上了
刚扫的淘宝价:5955WX(16C Zen3)¥3,999 vs 3945WX(12C Zen2)¥500-799。差 6 倍,原因不是核数:
- 平台代际:5955WX 是 Zen3(2022),单核性能 +30%,但主要贵在还在生命周期内,二手市场没放量
- 供需操纵:WRX80/SP3 平台 recently 被量化交易/算力公司扫货(淘宝那个「量化交易2U4U4卡」的标题就是证据),5000 系 WX 价格被炒
- 真正的性价比断点在 Zen2 WX:3945WX ¥500-799 是「EPYC Rome 贴牌工作站版」,和 ¥550 的 7402 是同一片 die——本质上是同一个东西的两种封装
我的判断:¥3,999 的 5955WX 完全不值。你多花 ¥3,300 买到的:
- 单核 +30%(对推理几乎无用,GPU 才是主引擎)
- 多 4 个核(12→16,对推理调度无用)
- 不支持的:内存通道不变(都是 8)、PCIe 不变(都是 128 lane Gen4)、NUMA 拓扑不变
推理机器的性能排序是:GPU > PCIe 带宽 > 内存带宽 > CPU 算力。CPU 那 30% 单核提升对 t/s 的影响 <5%。
修正后的决策矩阵
路线 A(3945WX) 路线 B(7402P) CPU 价 ¥650 ¥550 板价 ¥3,700-4,950 ¥3,030-3,570 内存全插
8 槽最多插 8 条(128G)
16 槽全插(256G)NUMA 心智 最简 NPS1 简单/NPS4 进阶 总价(双卡基础) ¥4,350-5,600 ¥4,100-4,250 结论更清晰了:B 比 A 便宜 ¥300-1,300,还多 128G 内存容量、多 NVLink rig 社区验证。A 的唯一优势是「工作站 BIOS + 稳定性调校 + 开机快」,如果你这台机器打算 24 小时跑服务偶尔当远程桌面,B 的短板(开机慢 2 分钟、风扇吵)都可以用设置解决。
我有一些服务器内存, 在看主板,让GLM 5.3 FLASH帮我查的,太震惊了。 量化交易/算力公司扫货 ! 这是个多么疯狂的世界
-
不用另外找模型查,这类问题的边界很固定,看通道表和 ROCm 支持矩阵就够了。
先回答「两个 PCIe 4.0 跑满 x16」:能,但不在消费级。
硬件(车道数是硬门槛)
- 一张 PCIe 4.0 x16 占 16 条 lane。双卡 x16/x16 = 32 条,4 卡 = 64 条。
- AM5(Ryzen 7000/9000)CPU 一共约 24 条可用 lane:16 给主显卡槽、4 给 NVMe、4 给芯片组。所以消费级最多做到 x8/x8,还要主板支持 bifurcation(只有部分 X670E/X870E 高端板做了);绝大多数 B650 第二槽是芯片组出的 x4,还要和 DMI 抢。
- 想双 x16:上 HEDT/工作站。TRX50(sTR5)约 48 条 lane,可 4×x16;WRX90 / EPYC SP5 有 128 条,可 8×x16;Intel Xeon W-3400 是 112 条。这才是「每条都跑满 x16」的平台。
- 选板还要确认:槽位是不是 CPU 直连、BIOS 有没有 x8/x8 bifurcation、别和 M.2 抢通道。
软件(这层比硬件更容易翻车)
- AMD 走 ROCm,多卡集合通信用 RCCL(对应 CUDA 的 NCCL)。前提是架构在支持列表里(7900XTX = gfx1100)。
- PCIe P2P 需要:BIOS 开 Above 4G Decoding + Resizable BAR、关 CSM、UEFI 启动;且 root port 的 ACS 不挡 P2P(消费板默认常挡,需要内核参数/补丁)。验证用 rocm-smi、rccl-tests,加 NCCL_DEBUG=INFO 看是走 P2P 还是退回 SHM 经主机内存中转。
- NVIDIA 侧同理:nvidia-smi topo -m 看拓扑,无 NVLink 时 PCIe P2P 一样受 ACS/大 BAR 限制。
- 框架层:vLLM/SGLang 的 tensor parallel 每层都要 all-reduce,卡越多通信占比越高。PCIe 4.0 x16 单向约 32 GB/s(有效 25 左右),x8 直接减半。双卡 TP 一般没问题,4 卡以上没有 P2P 会明显掉效率;PP 通信少但怕 bubble。
结论:双卡是消费级甜点;4 卡以上别在 AM5 上硬凑,直接 TRX50/WRX90/EPYC。回到这个帖的主题——如果只是让两张卡 all-reduce 别绕 CPU,PCIe switch/bridge 是最便宜的对症方案;但想「每条都 4.0 x16」,这笔钱省不了,得换平台。
-
@PhoenixRise2026 怎么不上PCIE 4.0呢?服务器或者AMD的工作站主板,有没有能让两个PCIE 4.0显示跑满X16的?
@xiaote 你也用 gpt 6 astra查一下,对于 咱们PCIE4.0显卡的用户,想组双卡或者多卡,有哪些硬件和软件要求?
@PhoenixRise2026 怎么不上PCIE 4.0呢?服务器或者AMD的工作站主板,有没有能让两个PCIE 4.0显示跑满X16的?
还是穷啊,还有就是买x99的时候,没想着双卡p2p。现在配一套 TRX40 / WRX80,成本也不低。
-
@PhoenixRise2026 怎么不上PCIE 4.0呢?服务器或者AMD的工作站主板,有没有能让两个PCIE 4.0显示跑满X16的?
还是穷啊,还有就是买x99的时候,没想着双卡p2p。现在配一套 TRX40 / WRX80,成本也不低。
@PhoenixRise2026 怎么不上PCIE 4.0呢?服务器或者AMD的工作站主板,有没有能让两个PCIE 4.0显示跑满X16的?
还是穷啊,还有就是买x99的时候,没想着双卡p2p。现在配一套 TRX40 / WRX80,成本也不低。
有钱直接双EPYC 24通道DDR5 内存 1T的内存带宽
-
补一条,我的主板是X99-TF GAMING V6.0
我是DELL T7950 X99 BIOS有很多制约
补一条,我的主板是X99-TF GAMING V6.0
我是DELL T7950 X99 BIOS有很多制约
有Above 4G Decoding 和 ReBAR,可以试试。Broadwell-EP 的 Host Bridge 8086:6f00 没有进入 Linux P2PDMA whitelist,所以我给内核补了这个 exact whitelist,同时补了 ROCm/ROCK 里 HSA P2P 的兼容判断。
打通p2p的整个过程是用gpt5.6sol high给方案,然后让agent执行。
