diff --git a/docker/Dockerfile b/docker/Dockerfile index b99971f..aafbcb7 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -161,36 +161,39 @@ RUN set -ex && \ mkdir -p /opt/rocm/lib/cmake/hipblas && \ printf 'include(/opt/rocm/lib/cmake/rocblas/rocblas-config.cmake)\nif(TARGET roc::rocblas AND NOT TARGET hip::hipblas)\n add_library(hip::hipblas ALIAS roc::rocblas)\nendif()\n' \ > /opt/rocm/lib/cmake/hipblas/hipblas-config.cmake && \ - # 批量创建 hip→roc 别名 cmake config(缺则创建,覆盖 vllm LoadHIP.cmake 所有 REQUIRED 检查) + # 批量创建 hip→roc 别名 cmake config(强制覆盖,防止残留破损 config) for pair in "hipcub:rocprim" "hipsolver:rocsolver" "hipsparse:rocsparse" "hipfft:rocfft"; do \ hip_pkg="${pair%%:*}"; roc_pkg="${pair#*:}"; \ cfg_dir="/opt/rocm/lib/cmake/${hip_pkg}"; \ - if [ ! -f "${cfg_dir}/${hip_pkg}-config.cmake" ]; then \ - mkdir -p "${cfg_dir}" && \ - printf 'include(/opt/rocm/lib/cmake/%s/%s-config.cmake)\nif(TARGET roc::%s AND NOT TARGET hip::%s)\n add_library(hip::%s ALIAS roc::%s)\nendif()\n' \ - "${roc_pkg}" "${roc_pkg}" "${roc_pkg}" "${hip_pkg}" "${hip_pkg}" "${roc_pkg}" \ - > "${cfg_dir}/${hip_pkg}-config.cmake" && \ - echo "${hip_pkg}-config.cmake created (alias to ${roc_pkg})."; \ - fi; \ + mkdir -p "${cfg_dir}" && \ + printf 'include(/opt/rocm/lib/cmake/%s/%s-config.cmake)\nif(TARGET roc::%s AND NOT TARGET hip::%s)\n add_library(hip::%s ALIAS roc::%s)\nendif()\n' \ + "${roc_pkg}" "${roc_pkg}" "${roc_pkg}" "${hip_pkg}" "${hip_pkg}" "${roc_pkg}" \ + > "${cfg_dir}/${hip_pkg}-config.cmake" && \ + echo "${hip_pkg}-config.cmake created (alias to ${roc_pkg})."; \ done && \ - # 无 roc 对应物的 hip 包,创建 minimal cmake config + # 无 roc 对应物的 hip 包,创建 minimal cmake config(强制覆盖) for pkg in hipblaslt hiprtc; do \ cfg_dir="/opt/rocm/lib/cmake/${pkg}"; \ - if [ ! -f "${cfg_dir}/${pkg}-config.cmake" ]; then \ - mkdir -p "${cfg_dir}" && \ - printf 'set(%s_FOUND TRUE)\nset(%s_VERSION "7.2.1")\nif(NOT TARGET hip::%s)\n add_library(hip::%s INTERFACE IMPORTED)\n set_target_properties(hip::%s PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "/opt/rocm/include")\nendif()\n' \ - "${pkg}" "${pkg}" "${pkg}" "${pkg}" "${pkg}" \ - > "${cfg_dir}/${pkg}-config.cmake" && \ - echo "${pkg}-config.cmake created (minimal)."; \ - fi; \ + mkdir -p "${cfg_dir}" && \ + printf 'set(%s_FOUND TRUE)\nset(%s_VERSION "7.2.1")\nif(NOT TARGET hip::%s)\n add_library(hip::%s INTERFACE IMPORTED)\n set_target_properties(hip::%s PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "/opt/rocm/include")\nendif()\n' \ + "${pkg}" "${pkg}" "${pkg}" "${pkg}" "${pkg}" \ + > "${cfg_dir}/${pkg}-config.cmake" && \ + echo "${pkg}-config.cmake created (minimal)."; \ done && \ - # amd_comgr minimal config - if [ ! -f /opt/rocm/lib/cmake/amd_comgr/amd_comgr-config.cmake ]; then \ - mkdir -p /opt/rocm/lib/cmake/amd_comgr && \ - printf 'set(amd_comgr_FOUND TRUE)\nset(amd_comgr_VERSION "2.8.0")\nif(NOT TARGET amd_comgr)\n add_library(amd_comgr INTERFACE IMPORTED)\n set_target_properties(amd_comgr PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "/opt/rocm/include")\nendif()\n' \ - > /opt/rocm/lib/cmake/amd_comgr/amd_comgr-config.cmake && \ - echo "amd_comgr-config.cmake created (minimal)."; \ - fi && \ + # miopen minimal config(强制覆盖,miopen-hip 可能不带 cmake config) + mkdir -p /opt/rocm/lib/cmake/miopen && \ + printf 'set(miopen_FOUND TRUE)\nset(miopen_VERSION "3.4.0")\nif(NOT TARGET miopen)\n add_library(miopen INTERFACE IMPORTED)\n set_target_properties(miopen PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "/opt/rocm/include")\nendif()\n' \ + > /opt/rocm/lib/cmake/miopen/miopen-config.cmake && \ + echo "miopen-config.cmake created (minimal)." && \ + # amd_comgr minimal config(强制覆盖) + mkdir -p /opt/rocm/lib/cmake/amd_comgr && \ + printf 'set(amd_comgr_FOUND TRUE)\nset(amd_comgr_VERSION "2.8.0")\nif(NOT TARGET amd_comgr)\n add_library(amd_comgr INTERFACE IMPORTED)\n set_target_properties(amd_comgr PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "/opt/rocm/include")\nendif()\n' \ + > /opt/rocm/lib/cmake/amd_comgr/amd_comgr-config.cmake && \ + echo "amd_comgr-config.cmake created (minimal)." && \ + # 诊断:打印 LoadHIP.cmake 第 179 行附近内容 + echo "=== LoadHIP.cmake line 170-190 ===" && \ + sed -n '170,190p' ${VENV}/lib/python${PYTHON_VER}/site-packages/torch/share/cmake/Caffe2/public/LoadHIP.cmake && \ + echo "=== end ===" && \ # 创建 HIP cmake config(apt 安装的 hip-dev 缺少 find_package 需要的配置) mkdir -p /opt/rocm/lib/cmake/hip && \ printf 'set(HIP_FOUND TRUE)\nset(HIP_VERSION "7.2.1")\nset(HIP_PLATFORM amd)\nset(HIP_COMPILER /opt/rocm/llvm/bin/clang++)\nset(HIP_RUNTIME rocm)\nset(HIP_INCLUDE_DIRS /opt/rocm/include)\nset(HIP_LIBRARIES /opt/rocm/lib/libamdhip64.so)\nif(NOT TARGET hip::host)\n add_library(hip::host INTERFACE IMPORTED)\n set_target_properties(hip::host PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${HIP_INCLUDE_DIRS}")\nendif()\nif(NOT TARGET hip::device)\n add_library(hip::device INTERFACE IMPORTED)\n set_target_properties(hip::device PROPERTIES INTERFACE_COMPILE_OPTIONS "${HIP_COMPILER}")\nendif()\n' \