Prhub

#50103 [Build] Fix DeepEP CUDA driver stub linking

原始 PR 作者 khluu 合并时间 2026-07-28 20:09 文件变更 1 提交数 1 评论 0 代码增减 +15 / -0

执行摘要

修复 DeepEP 构建时缺少 CUDA 驱动桩库链接

DeepEP 升级后引入了对 CUDA 驱动 API 的链接依赖,在 manylinux 无驱动环境下构建时因找不到 -lcuda 而失败。本 PR 直接通过查找工具包桩库并设置 LIBRARY_PATH 解决了链接问题。

本 PR 是必要的构建修复,值得精读以了解构建问题排查思路,但技术复杂度低,评审价值一般。

讨论亮点

无 review 讨论。

实现拆解

  1. 定位 CUDA 驱动桩库:在 do_build 函数中,当构建 DeepEP 时,通过 find -H "$CUDA_HOME" -path "*/stubs/libcuda.so" -print -quit 查找工具包内的桩库。
  2. 设置 LIBRARY_PATH:提取桩库所在目录,并导出到环境变量 LIBRARY_PATH 中,使得链接器能找到 -lcuda
  3. 失败早期提示:若未找到桩库,则输出错误信息并退出。
文件 模块 状态 重要度
tools/ep_kernels/install_python_libraries.sh 构建脚本 modified 3.86

关键源码片段

tools/ep_kernels/install_python_libraries.sh core-logic

构建 DeepEP 时增加查找 CUDA 驱动桩库并设置 LIBRARY_PATH 的逻辑。

# 在 do_build 函数中,DeepEP 分支新增以下逻辑
if [[ "$name" == "DeepEP" ]]; then
    # DeepEP 需要在无驱动构建镜像中链接 CUDA 驱动 API,
    # 但 manylinux 环境中 CUDA 驱动库不在默认搜索路径中。
    # 此处查找 CUDA 工具包中的驱动桩库 libcuda.so,
    # 并将其所在目录添加到 LIBRARY_PATH 中,
    # 使得链接器可以找到 -lcuda。
    local cuda_driver_stub
    local cuda_driver_stub_dir
    cuda_driver_stub=$(
        find -H "$CUDA_HOME" -path "*/stubs/libcuda.so" -print -quit
    )
    if [[ -z "$cuda_driver_stub" ]]; then
        echo "CUDA driver stub not found under $CUDA_HOME" >&2
        exit 1
    fi
    cuda_driver_stub_dir=$(dirname "$cuda_driver_stub")
    export LIBRARY_PATH="${cuda_driver_stub_dir}${LIBRARY_PATH:+:$LIBRARY_PATH}"
fi

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

风险极低。变更仅在构建 DeepEP 时生效,仅增加了环境变量设置,不影响已有构建路径。

影响范围局限于 DeepEP 组件的构建过程,解决了 manylinux 环境下构建失败的问题,对其他模块无影响。

构建环境依赖

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论