跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • 浅色
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • 深色
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(LCZ-Blue)
  • 不使用皮肤
  • LCZ-Green
  • LCZ-Blue
  • LCZ-Black
折叠
品牌标识

抡锤者

首页 版块 标签 硬件 AI 广场
  1. 主页
  2. 版块
  3. AI硬件
  4. 我之前也以为 X99 基本没法搞 P2P,不过最近在 E5-2697A v4 + X99 + 双 R9700 上实际折腾下来,已经把跨 Root Port 的 Direct P2P 跑通了。

我之前也以为 X99 基本没法搞 P2P,不过最近在 E5-2697A v4 + X99 + 双 R9700 上实际折腾下来,已经把跨 Root Port 的 Direct P2P 跑通了。

已定时 已固定 已锁定 已移动 AI硬件
x99r9700多卡部署
18 帖子 8 发布者 175 浏览 2 关注中
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题由 X99 不能P2P让我很难受 。 买Pcie switch(260925DELL T7910 已判:死缓,原因:拿不到大Bar ) 分支而来 terry
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • PhoenixRise2026P
    PhoenixRise2026P
    PhoenixRise2026
    德高望重
    编写于 最后由 编辑
    #1

    我之前也以为 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_PHB

    Stock 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的完整过程整理一下,应该比单独贴一个“跑通了”的结果更有参考价值。

    stxpnetS 1 条回复 最后回复
    5
    • alan.lgv60A
      alan.lgv60A
      alan.lgv60
      编写于 最后由 编辑
      #2
      此主題已被删除!
      1 条回复 最后回复
      0
      • alan.lgv60A
        alan.lgv60A
        alan.lgv60
        编写于 最后由 编辑
        #3
        此主題已被删除!
        张光璞张 1 条回复 最后回复
        0
        • alan.lgv60A alan.lgv60
          [[topic:post-is-deleted]]
          张光璞张
          张光璞张
          张光璞
          劳动模范
          编写于 最后由 编辑
          #4

          @alan.lgv60 说:

          大佬,从头到尾看完了,X99 跨 Root Port Direct P2P 跑通真的开眼界——之前一直以为硬件封死了,原来只是 kernel 白名单 + RCCL 策略两层软件问题。

          我现在正计划 X99 + 双 R9700(已有 64GB DDR3),想抄你这条路线,有几个具体问题:

          1. 定制 kernel(6.8.12-r9700-p2p-dma44)和 patched RCCL 2.27.7 可以公开 repo 吗? 还是只是本地改?
          2. X99-TF GAMING V6.0 的 ReBAR 是官方 BIOS 原生选项,还是刷了 mod BIOS?
          3. 白名单 patch 是 Broadwell 专用,还是 Haswell(E5 v3)也适用?
          4. 模型 fit 不进单卡(比如 70B 级)时 TP2 实际加速多少? 27B 那个 1.01x 我理解是 fit 进单卡所以没意义,但真正需要双卡的模型有没有测过?
          5. 供电有没有遇到瞬态尖峰跳闸? 用了多少 W 电源、有没有做 pp_od_clk_voltage 限频降压?
          6. 你这套 P2P 配置对 vLLM 有没有意义,还是只有 SGLang 才行?

          很期待你的完整 write-up,到时候一定跟着做一遍交作业!

          我T7910 1300w 电源,双R9700 双卡限制在210w 才能保证同步工作不重启跳闸。

          1 条回复 最后回复
          0
          • PhoenixRise2026P
            PhoenixRise2026P
            PhoenixRise2026
            德高望重
            编写于 最后由 编辑
            #5

            完整作业:https://lcz.me/topic/1925

            1 条回复 最后回复
            1
            • suboyangS
              suboyangS
              suboyang
              编写于 最后由 suboyang 编辑
              #6

              我没看懂你的帖子,如果是单路 CPU E5 系列,两个GPU 应该是挂在一个root complex 下啊?怎么还会跨 Root Port P2P?

              这颗CPU :Intel Xeon E5-2697A v4 支持P2P. 一颗CPU 怎么会挂在不同的 Broadwell Root Port ?

              image.jpeg

              PhoenixRise2026P 1 条回复 最后回复
              0
              • suboyangS suboyang

                我没看懂你的帖子,如果是单路 CPU E5 系列,两个GPU 应该是挂在一个root complex 下啊?怎么还会跨 Root Port P2P?

                这颗CPU :Intel Xeon E5-2697A v4 支持P2P. 一颗CPU 怎么会挂在不同的 Broadwell Root Port ?

                image.jpeg

                PhoenixRise2026P
                PhoenixRise2026P
                PhoenixRise2026
                德高望重
                编写于 最后由 编辑
                #7

                @suboyang 说:

                我没看懂你的帖子,如果是单路 CPU E5 系列,两个GPU 应该是挂在一个root complex 下啊?怎么还会跨 Root Port P2P?

                这颗CPU :Intel Xeon E5-2697A v4 支持P2P. 一颗CPU 怎么会挂在不同的 Broadwell Root Port ?

                image.jpeg

                谢谢指出问题。是我帖子里“不同 CPU Root Port”这个说法不严谨。
                我的机器是单路 E5-2697A v4,两张 GPU 都挂在同一颗 CPU 下,只是分别接在这颗 CPU 的不同 PCIe Root Port 上。
                所以这里说的“跨 Root Port P2P”是同一 CPU、不同 Root Port 之间的 P2P,不是跨 CPU。

                suboyangS 2 条回复 最后回复
                1
                • suboyangS
                  suboyangS
                  suboyang
                  编写于 最后由 编辑
                  #8

                  44-bit DMA address 可以在 Above 4G Decoding里改吗?

                  PhoenixRise2026P 1 条回复 最后回复
                  0
                  • PhoenixRise2026P PhoenixRise2026

                    @suboyang 说:

                    我没看懂你的帖子,如果是单路 CPU E5 系列,两个GPU 应该是挂在一个root complex 下啊?怎么还会跨 Root Port P2P?

                    这颗CPU :Intel Xeon E5-2697A v4 支持P2P. 一颗CPU 怎么会挂在不同的 Broadwell Root Port ?

                    image.jpeg

                    谢谢指出问题。是我帖子里“不同 CPU Root Port”这个说法不严谨。
                    我的机器是单路 E5-2697A v4,两张 GPU 都挂在同一颗 CPU 下,只是分别接在这颗 CPU 的不同 PCIe Root Port 上。
                    所以这里说的“跨 Root Port P2P”是同一 CPU、不同 Root Port 之间的 P2P,不是跨 CPU。

                    suboyangS
                    suboyangS
                    suboyang
                    编写于 最后由 suboyang 编辑
                    #9

                    @PhoenixRise2026

                    没关系,只是讨论而已,但是我看见你开启P2P 性能并没有释放很高。
                    不知道是模型的问题,还是调优的问题。这些你都试过吗?

                    tcclaviger/Qwen3.8-27B-DFlash2-FP8

                    https://github.com/magiccodingman/vllm-radiance

                    https://github.com/StevenChenSE/sglang/tree/gfx1100-support#chinese

                    按双卡 R9700的算力 80token/s 才算比较正常。而且低于80 token/s ,基本没法干活。

                    PhoenixRise2026P 1 条回复 最后回复
                    0
                    • 拐
                      拐
                      拐子001
                      编写于 最后由 编辑
                      #10

                      又一成形的案例,看样子,可以抄作业了。

                      1 条回复 最后回复
                      0
                      • PhoenixRise2026P PhoenixRise2026

                        @suboyang 说:

                        我没看懂你的帖子,如果是单路 CPU E5 系列,两个GPU 应该是挂在一个root complex 下啊?怎么还会跨 Root Port P2P?

                        这颗CPU :Intel Xeon E5-2697A v4 支持P2P. 一颗CPU 怎么会挂在不同的 Broadwell Root Port ?

                        image.jpeg

                        谢谢指出问题。是我帖子里“不同 CPU Root Port”这个说法不严谨。
                        我的机器是单路 E5-2697A v4,两张 GPU 都挂在同一颗 CPU 下,只是分别接在这颗 CPU 的不同 PCIe Root Port 上。
                        所以这里说的“跨 Root Port P2P”是同一 CPU、不同 Root Port 之间的 P2P,不是跨 CPU。

                        suboyangS
                        suboyangS
                        suboyang
                        编写于 最后由 编辑
                        #11

                        @PhoenixRise2026

                        还有一个知识 就是所有的志强CPU AMD的撕裂者 ZEN 系列都是跨 Root Port P2P DMA,这个是企业级CPU默认支持的。

                        Root Port P2P 可以看成交换机的两个端口。root complex就是那个交换机。任意两个GPU通信 都需要Root Port P2P DMA。 PCIE switch 是4个GPU以上的解决方案。

                        johnnybegoodJ 1 条回复 最后回复
                        0
                        • suboyangS suboyang

                          @PhoenixRise2026

                          还有一个知识 就是所有的志强CPU AMD的撕裂者 ZEN 系列都是跨 Root Port P2P DMA,这个是企业级CPU默认支持的。

                          Root Port P2P 可以看成交换机的两个端口。root complex就是那个交换机。任意两个GPU通信 都需要Root Port P2P DMA。 PCIE switch 是4个GPU以上的解决方案。

                          johnnybegoodJ
                          johnnybegoodJ
                          johnnybegood
                          超凡大师
                          编写于 最后由 编辑
                          #12

                          @suboyang 如果像我们这种普通主板, 两个 pcie ,一个挂在cpu上, 一个挂在南桥芯片上, 应该就没戏了是吧

                          suboyangS Scott LeeS 2 条回复 最后回复
                          0
                          • johnnybegoodJ johnnybegood

                            @suboyang 如果像我们这种普通主板, 两个 pcie ,一个挂在cpu上, 一个挂在南桥芯片上, 应该就没戏了是吧

                            suboyangS
                            suboyangS
                            suboyang
                            编写于 最后由 suboyang 编辑
                            #13

                            @johnnybegood

                            前几天找铭瑄要了一下可以PCIE 拆分的产品,也可以
                            image.jpeg

                            不用P2P,可以share-memory. 这个双卡7900xtx 也是share-memory

                            https://github.com/StevenChenSE/sglang/tree/gfx1100-support#chinese

                            南桥芯片的速度慢,其实也能TP,就是效率太低。

                            1 条回复 最后回复
                            0
                            • johnnybegoodJ johnnybegood

                              @suboyang 如果像我们这种普通主板, 两个 pcie ,一个挂在cpu上, 一个挂在南桥芯片上, 应该就没戏了是吧

                              Scott LeeS
                              Scott LeeS
                              Scott Lee
                              编写于 最后由 Scott Lee 编辑
                              #14

                              我是用舊主機板 ASUS H97-Pro 來跑 llama.cpp 的雙卡 RX 9060 XT 配置。
                              因為 H97-Pro 的 PCIe 插槽規格限制:

                              • 第一槽:PCIe 3.0 x16(直連 CPU)
                              • 第二槽:PCIe 3.0 x4(走 PCH 南橋晶片)

                              在 Ubuntu 環境下實測過 ROCm(ROCm 10 / 7.14)與 Vulkan:

                              • Prefill (PP) 速度:ROCm 表現遠優於 Vulkan。
                              • 心得:在搭配 Agent 時,Prefill (PP) 的處理速度甚至比 Text Generation (TG) 還要關鍵!
                              • 上下文與 VRAM 實測狀況目前雙卡配置下,穩定運作的極限是 176K Context Length(KV Cache 設為 Q8)。如果開到 192K,VRAM 就會壓在臨界點附近偶爾會crash。
                              • 因為是個人使用,大部分時間 np=1 ;但如果要分派 Sub-agent 執行任務,會需要設定 np=2。不過這也差不多是這套配置的極限了,上下文再縮短實用性就不高。

                              SGLang 與 TP/PP 傳輸測試:
                              前兩天請 DeepSeek 協助安裝 SGLang,過程中同樣對 RCCL 與 P2P 進行了各項功能測試。最後也是打了類似的 Patch——否則 SGLang 的程式邏輯會判斷無法通訊,連CPU DMA都不走直接放棄。
                              但即使打了 Patch,走 CPU AllReduce 的效能跟 llama.cpp 的 Tensor Parallel (TP) mode 差不多,速度都遠慢於 Pipeline Parallel (PP) mode,基本上沒有實用價值。加上 SGLang 本身吃 VRAM 比 llama.cpp 更兇,能開的上下文反而更短。

                              總結:

                              • 建議走南橋的 PCIe 介面,最佳解依然是 PP (Pipeline Parallel) 分層模式。實測下來,PP 模式的 Prefill 速度甚至略微超越單張 R9700;不過 TG 速度就單卡水準,大概只有 R9700 的一半。
                              • 硬體升級思考:如果主機板本身支援 雙 PCIe x8/x8,且手邊已經有一張 9060 XT,再補一張二手跑 Tensor Parallel,整體性能應該有機會逼近 R9700。但算一算升級預算,如果手頭預算許可,直接買一張二手 RX 7900 XTX 可能是更乾淨俐落的選擇——畢竟 384-bit 帶來約 960 GB/s 的記憶體頻寬,在純單卡運算上優勢還是太明顯了,且雙卡在記憶體分配上會有尾巴浪費的零散區塊(我一張有接顯示輸出會佔用VRAM)。
                              1 条回复 最后回复
                              0
                              • terryT
                                terryT
                                terry
                                超级版主
                                编写于 最后由 编辑
                                #15

                                相当牛逼的帖子,这个就是把洋垃圾的上限再推进

                                油管:https://www.youtube.com/@抡锤者

                                1 条回复 最后回复
                                0
                                • suboyangS suboyang

                                  44-bit DMA address 可以在 Above 4G Decoding里改吗?

                                  PhoenixRise2026P
                                  PhoenixRise2026P
                                  PhoenixRise2026
                                  德高望重
                                  编写于 最后由 编辑
                                  #16

                                  @suboyang 说:

                                  44-bit DMA address 可以在 Above 4G Decoding里改吗?

                                  Above 4G 不能改 44-bit DMA。我的问题恰恰是 ReBAR 后 BAR 被放得太高,超过 44-bit DMA 可达范围,所以需要在内核侧处理。

                                  1 条回复 最后回复
                                  0
                                  • suboyangS suboyang

                                    @PhoenixRise2026

                                    没关系,只是讨论而已,但是我看见你开启P2P 性能并没有释放很高。
                                    不知道是模型的问题,还是调优的问题。这些你都试过吗?

                                    tcclaviger/Qwen3.8-27B-DFlash2-FP8

                                    https://github.com/magiccodingman/vllm-radiance

                                    https://github.com/StevenChenSE/sglang/tree/gfx1100-support#chinese

                                    按双卡 R9700的算力 80token/s 才算比较正常。而且低于80 token/s ,基本没法干活。

                                    PhoenixRise2026P
                                    PhoenixRise2026P
                                    PhoenixRise2026
                                    德高望重
                                    编写于 最后由 编辑
                                    #17

                                    @suboyang 说:

                                    @PhoenixRise2026

                                    没关系,只是讨论而已,但是我看见你开启P2P 性能并没有释放很高。
                                    不知道是模型的问题,还是调优的问题。这些你都试过吗?

                                    tcclaviger/Qwen3.8-27B-DFlash2-FP8

                                    https://github.com/magiccodingman/vllm-radiance

                                    https://github.com/StevenChenSE/sglang/tree/gfx1100-support#chinese

                                    按双卡 R9700的算力 80token/s 才算比较正常。而且低于80 token/s ,基本没法干活。

                                    目前只是证明了在X99上把双 R9700 Direct P2P 真正跑通,后面有时间会测一下DFlash2、vllm-radiance。

                                    suboyangS 1 条回复 最后回复
                                    0
                                    • PhoenixRise2026P PhoenixRise2026

                                      @suboyang 说:

                                      @PhoenixRise2026

                                      没关系,只是讨论而已,但是我看见你开启P2P 性能并没有释放很高。
                                      不知道是模型的问题,还是调优的问题。这些你都试过吗?

                                      tcclaviger/Qwen3.8-27B-DFlash2-FP8

                                      https://github.com/magiccodingman/vllm-radiance

                                      https://github.com/StevenChenSE/sglang/tree/gfx1100-support#chinese

                                      按双卡 R9700的算力 80token/s 才算比较正常。而且低于80 token/s ,基本没法干活。

                                      目前只是证明了在X99上把双 R9700 Direct P2P 真正跑通,后面有时间会测一下DFlash2、vllm-radiance。

                                      suboyangS
                                      suboyangS
                                      suboyang
                                      编写于 最后由 编辑
                                      #18

                                      @PhoenixRise2026

                                      谢谢等你后续,稳定后,我也整一套,主要是双卡R9700跑tcclaviger/Qwen3.8-27B-DFlash2-FP8 就是怕性能太低。

                                      1 条回复 最后回复
                                      0

                                      你好!看起来您对这段对话很感兴趣,但您还没有一个账号。

                                      厌倦了每次访问都刷到同样的帖子?您注册账号后,您下次访问时都将自动回到上次浏览的位置,并可选择接收新回复的通知(通过电子邮件或推送通知)。您还可以收藏帖子、为帖子点赞,以此向其他社区成员表达您的感谢。

                                      有了你的建议,这篇帖子会更精彩哦 💗

                                      注册 登录
                                      回复
                                      • 在新帖中回复
                                      登录后回复
                                      • 从旧到新
                                      • 从新到旧
                                      • 最多赞同


                                      • 登录

                                      • 登录或注册以进行搜索。
                                      • 第一个帖子
                                        最后一个帖子
                                      0
                                      • 版块
                                      • 最新
                                      • 标签
                                      • 热门
                                      • 用户
                                      • 群组