diff --git a/cmake/external/xpu.cmake b/cmake/external/xpu.cmake index 3af9211d230c02..72b2f176be8b13 100644 --- a/cmake/external/xpu.cmake +++ b/cmake/external/xpu.cmake @@ -28,6 +28,9 @@ set(XPU_XPTI_LIB_NAME "libxpti.so") set(XPU_XPUTX_LIB_NAME "libxpuToolsExt.so") set(XPU_CUPTI_LIB_NAME "libcupti.so") set(XPU_XBLAS_LIB_NAME "libxpu_blas.so") +set(XPU_XBLAS_JITC_LIB_NAME "libxpujitc.so") +set(XPU_XBLAS_LLVM_LIB_NAME "libLLVM-15.so") +set(XPU_XBLAS_CLANG_LIB_NAME "libclang-cpp.so.15") set(XPU_XFA_LIB_NAME "libxpu_flash_attention.so") set(XPU_XPUDNN_LIB_NAME "libxpu_dnn.so") set(XPU_XPUDNN_OMP_LIB_NAME "libomp.so") @@ -36,7 +39,7 @@ set(XPU_FFT_LIB_NAME "libcufft.so") add_compile_definitions(XPUAPI_NOT_INCLUDE_DEPRECATED) if(NOT DEFINED XPU_XHPC_BASE_DATE) - set(XPU_XHPC_BASE_DATE "dev/20251213") + set(XPU_XHPC_BASE_DATE "dev/20260106") endif() if(WITH_ARM) set(XPU_XCCL_BASE_VERSION "20251104") # For XRE5 @@ -207,6 +210,9 @@ set(XPU_LIB_DIR "${THIRD_PARTY_PATH}/install/xpu/lib") set(XPU_API_LIB "${XPU_LIB_DIR}/${XPU_API_LIB_NAME}") set(XPU_XBLAS_LIB "${XPU_LIB_DIR}/${XPU_XBLAS_LIB_NAME}") +set(XPU_XBLAS_JITC_LIB "${XPU_LIB_DIR}/${XPU_XBLAS_JITC_LIB_NAME}") +set(XPU_XBLAS_LLVM_LIB "${XPU_LIB_DIR}/${XPU_XBLAS_LLVM_LIB_NAME}") +set(XPU_XBLAS_CLANG_LIB "${XPU_LIB_DIR}/${XPU_XBLAS_CLANG_LIB_NAME}") set(XPU_RT_LIB "${XPU_LIB_DIR}/${XPU_RT_LIB_NAME}") set(XPU_CUDA_LIB "${XPU_LIB_DIR}/${XPU_CUDA_LIB_NAME}") set(XPU_CUDA_RT_LIB "${XPU_LIB_DIR}/${XPU_CUDA_RT_LIB_NAME}") @@ -298,6 +304,9 @@ if(WITH_XPU_XRE5) CMAKE_CACHE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${XPU_INSTALL_ROOT} BUILD_BYPRODUCTS ${XPU_API_LIB} BUILD_BYPRODUCTS ${XPU_XBLAS_LIB} + BUILD_BYPRODUCTS ${XPU_XBLAS_JITC_LIB} + BUILD_BYPRODUCTS ${XPU_XBLAS_LLVM_LIB} + BUILD_BYPRODUCTS ${XPU_XBLAS_CLANG_LIB} BUILD_BYPRODUCTS ${XPU_XPUDNN_LIB} BUILD_BYPRODUCTS ${XPU_XPUDNN_OMP_LIB} BUILD_BYPRODUCTS ${XPU_XFA_LIB} @@ -406,6 +415,9 @@ if(WITH_XPU_XRE5) ${XPU_RT_LIB} ${XPU_CUDA_RT_LIB} ${XPU_XBLAS_LIB} + ${XPU_XBLAS_JITC_LIB} + ${XPU_XBLAS_LLVM_LIB} + ${XPU_XBLAS_CLANG_LIB} ${XPU_API_LIB} ${XPU_XFA_LIB} ${XPU_XPUDNN_LIB} diff --git a/python/env_dict.py.in b/python/env_dict.py.in index a571a4ce7f6d72..b0c000810d480a 100644 --- a/python/env_dict.py.in +++ b/python/env_dict.py.in @@ -90,6 +90,12 @@ env_dict={ 'XPU_XFT_LIB_NAME':'@XPU_XFT_LIB_NAME@', 'XPU_XBLAS_LIB':'@XPU_XBLAS_LIB@', 'XPU_XBLAS_LIB_NAME':'@XPU_XBLAS_LIB_NAME@', + 'XPU_XBLAS_JITC_LIB':'@XPU_XBLAS_JITC_LIB@', + 'XPU_XBLAS_JITC_LIB_NAME':'@XPU_XBLAS_JITC_LIB_NAME@', + 'XPU_XBLAS_LLVM_LIB':'@XPU_XBLAS_LLVM_LIB@', + 'XPU_XBLAS_LLVM_LIB_NAME':'@XPU_XBLAS_LLVM_LIB_NAME@', + 'XPU_XBLAS_CLANG_LIB':'@XPU_XBLAS_CLANG_LIB@', + 'XPU_XBLAS_CLANG_LIB_NAME':'@XPU_XBLAS_CLANG_LIB_NAME@', 'XPU_XFA_LIB':'@XPU_XFA_LIB@', 'XPU_XFA_LIB_NAME':'@XPU_XFA_LIB_NAME@', 'XPU_XPUDNN_LIB':'@XPU_XPUDNN_LIB@', diff --git a/python/setup.py.in b/python/setup.py.in index c1d11c5f3655c1..42416575cd8423 100644 --- a/python/setup.py.in +++ b/python/setup.py.in @@ -380,7 +380,9 @@ def xpu() -> str: string: Return the version information of xpu. If paddle package is non-XPU version, it will return False. Examples: .. code-block:: python + >>> import paddle + >>> paddle.version.xpu() >>> # doctest: +SKIP('Different environments yield different output.') '20230114' @@ -1352,6 +1354,12 @@ if '${WITH_XPU}' == 'ON': package_data['paddle.libs'] += [os.path.basename(xpu_ml_lib_file)] shutil.copy('${XPU_XBLAS_LIB}', libs_path) package_data['paddle.libs'] += ['${XPU_XBLAS_LIB_NAME}'] + shutil.copy('${XPU_XBLAS_JITC_LIB}', libs_path) + package_data['paddle.libs'] += ['${XPU_XBLAS_JITC_LIB_NAME}'] + shutil.copy('${XPU_XBLAS_LLVM_LIB}', libs_path) + package_data['paddle.libs'] += ['${XPU_XBLAS_LLVM_LIB_NAME}'] + shutil.copy('${XPU_XBLAS_CLANG_LIB}', libs_path) + package_data['paddle.libs'] += ['${XPU_XBLAS_CLANG_LIB_NAME}'] shutil.copy('${XPU_XFA_LIB}', libs_path) package_data['paddle.libs'] += ['${XPU_XFA_LIB_NAME}'] shutil.copy('${XPU_XPUDNN_LIB}', libs_path) diff --git a/setup.py b/setup.py index 18abcba8115233..0f68d120e774a7 100644 --- a/setup.py +++ b/setup.py @@ -1804,6 +1804,18 @@ def get_package_data_and_package_dir(): ] shutil.copy(env_dict.get("XPU_XBLAS_LIB"), libs_path) package_data['paddle.libs'] += [env_dict.get("XPU_XBLAS_LIB_NAME")] + shutil.copy(env_dict.get("XPU_XBLAS_JITC_LIB"), libs_path) + package_data['paddle.libs'] += [ + env_dict.get("XPU_XBLAS_JITC_LIB_NAME") + ] + shutil.copy(env_dict.get("XPU_XBLAS_LLVM_LIB"), libs_path) + package_data['paddle.libs'] += [ + env_dict.get("XPU_XBLAS_LLVM_LIB_NAME") + ] + shutil.copy(env_dict.get("XPU_XBLAS_CLANG_LIB"), libs_path) + package_data['paddle.libs'] += [ + env_dict.get("XPU_XBLAS_CLANG_LIB_NAME") + ] shutil.copy(env_dict.get("XPU_XFA_LIB"), libs_path) package_data['paddle.libs'] += [env_dict.get("XPU_XFA_LIB_NAME")] shutil.copy(env_dict.get("XPU_XPUDNN_LIB"), libs_path) diff --git a/tools/xpu/check_xpu_dependence.sh b/tools/xpu/check_xpu_dependence.sh index 2807d8d6620ab3..4b2b852dfca767 100644 --- a/tools/xpu/check_xpu_dependence.sh +++ b/tools/xpu/check_xpu_dependence.sh @@ -83,7 +83,7 @@ function check_xhpc() { local xhpc_date="$1" local xhpc_base_url="https://klx-sdk-release-public.su.bcebos.com/xhpc/dev" local xhpc_tar_file_names=("xhpc-ubuntu2004_x86_64" "xhpc-bdcentos7_x86_64") - local xhpc_files=("xblas/include/cublasLt.h" "xblas/so/libxpu_blas.so" "xdnn/include/xpu/xdnn.h" "xdnn/so/libxpuapi.so" "xfa/include/flash_api.h" "xfa/so/libxpu_flash_attention.so" "xpudnn/include/xpudnn.h" "xpudnn/so/libxpu_dnn.so") + local xhpc_files=("xblas/include/cublasLt.h" "xblas/so/libxpu_blas.so" "xblas/dependency_so/libxpujitc.so" "xblas/dependency_so/libLLVM-15.so" "xblas/dependency_so/libclang-cpp.so" "xblas/dependency_so/libclang-cpp.so.15" "xdnn/include/xpu/xdnn.h" "xdnn/so/libxpuapi.so" "xfa/include/flash_api.h" "xfa/so/libxpu_flash_attention.so" "xpudnn/include/xpudnn.h" "xpudnn/so/libxpu_dnn.so") for name in ${xhpc_tar_file_names[@]}; do local xhpc_url="${xhpc_base_url}/${xhpc_date}/${name}.tar.gz" check_files "${xhpc_url}" "${name}" "${xhpc_files[@]}" diff --git a/tools/xpu/pack_paddle_dependence.sh b/tools/xpu/pack_paddle_dependence.sh index 3996d5cd76b067..f0e06843d2e89d 100644 --- a/tools/xpu/pack_paddle_dependence.sh +++ b/tools/xpu/pack_paddle_dependence.sh @@ -81,9 +81,14 @@ function xhpc_prepare() { cp -r ${XHPC_DIR_NAME}/xdnn/so/libxpuapi.so xpu/lib if [ "$WITH_XPU_XRE5" -eq 1 ]; then - check_files ${XHPC_DIR_NAME}/xblas/include/cublasLt.h ${XHPC_DIR_NAME}/xblas/so/libxpu_blas.so + check_files ${XHPC_DIR_NAME}/xblas/include/cublasLt.h ${XHPC_DIR_NAME}/xblas/so/libxpu_blas.so ${XHPC_DIR_NAME}/xblas/dependency_so/libxpujitc.so ${XHPC_DIR_NAME}/xblas/dependency_so/libLLVM-15.so ${XHPC_DIR_NAME}/xblas/dependency_so/libclang-cpp.so ${XHPC_DIR_NAME}/xblas/dependency_so/libclang-cpp.so.15 cp -r ${XHPC_DIR_NAME}/xblas/include/* xpu/include/xhpc/xblas cp -r ${XHPC_DIR_NAME}/xblas/so/libxpu_blas.so xpu/lib/ + cp -r ${XHPC_DIR_NAME}/xblas/dependency_so/libxpujitc.so xpu/lib/ + cp -r ${XHPC_DIR_NAME}/xblas/dependency_so/libLLVM-15.so xpu/lib/ + cp -r ${XHPC_DIR_NAME}/xblas/dependency_so/libclang-cpp.so* xpu/lib/ + # FIXME(lilujia): when rpath in libxpujitc.so is set, the following code is not needed + patchelf --set-rpath '$ORIGIN/' xpu/lib/libxpujitc.so check_files ${XHPC_DIR_NAME}/xfa/include/flash_api.h ${XHPC_DIR_NAME}/xfa/so/libxpu_flash_attention.so cp -r ${XHPC_DIR_NAME}/xfa/include/* xpu/include/xhpc/xfa @@ -150,6 +155,9 @@ function local_assemble() { if [ "$WITH_XPU_XRE5" -eq 1 ]; then cp -r ${LOCAL_PATH}/${XHPC_DIR_NAME}/xblas/include/* xpu/include/xhpc/xblas cp -r ${LOCAL_PATH}/${XHPC_DIR_NAME}/xblas/so/libxpu_blas.so xpu/lib/ + cp -r ${LOCAL_PATH}/${XHPC_DIR_NAME}/xblas/dependency_so/libxpujitc.so xpu/lib/ + cp -r ${LOCAL_PATH}/${XHPC_DIR_NAME}/xblas/dependency_so/libLLVM-15.so xpu/lib/ + cp -r ${LOCAL_PATH}/${XHPC_DIR_NAME}/xblas/dependency_so/libclang-cpp.so* xpu/lib/ cp -r ${LOCAL_PATH}/${XHPC_DIR_NAME}/xfa/include/* xpu/include/xhpc/xfa cp -r ${LOCAL_PATH}/${XHPC_DIR_NAME}/xfa/so/libxpu_flash_attention.so xpu/lib/