diff --git a/docker/Dockerfile b/docker/Dockerfile index fdfb009..dc1f087 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -112,7 +112,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ hipblas-dev hiprand-dev hipsparse-dev hipsparselt-dev \ hipsolver-dev hipcub-dev rocprim-dev rocthrust-dev \ rocblas-dev rocrand-dev hipfft-dev hipblaslt-dev \ - rocsolver-dev rocm-cmake rocm-core && \ + rocsolver-dev rocfft-dev rocsparse-dev rocm-cmake rocm-core && \ apt-get clean && rm -rf /var/lib/apt/lists/* # =========================================================================== @@ -161,15 +161,19 @@ 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(强制覆盖,防止残留破损 config) + # 批量创建 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}"; \ - 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})."; \ + 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})."; \ + else \ + echo "${hip_pkg}-config.cmake already exists, skipping."; \ + fi; \ done && \ # 无 roc 对应物的 hip 包,创建 minimal cmake config(强制覆盖) for pkg in hipblaslt hiprtc; do \