diff --git a/cmake/ascend.cmake b/cmake/ascend.cmake index ed5aa5d93..9c3a9656a 100644 --- a/cmake/ascend.cmake +++ b/cmake/ascend.cmake @@ -1,19 +1,33 @@ -if(NOT CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "aarch64") - message(FATAL_ERROR "Huawei Ascend NPU is supported on Linux aarch64 platform for now.") -endif() - if(NOT ${ENABLE_LITE_BACKEND}) set(ENABLE_LITE_BACKEND ON) endif() -if (NOT BUILD_FASTDEPLOY_PYTHON) - message(STATUS "Build FastDeploy Ascend C++ library.") - if(NOT PADDLELITE_URL) - set(PADDLELITE_URL "https://bj.bcebos.com/fastdeploy/test/lite-linux_arm64_huawei_ascend_npu_1121.tgz") - endif() -else () - message(STATUS "Build FastDeploy Ascend Python library.") - if(NOT PADDLELITE_URL) - set(PADDLELITE_URL "https://bj.bcebos.com/fastdeploy/test/lite-linux_arm64_huawei_ascend_npu_python_1207.tgz") - endif() -endif() +if(NOT CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "aarch64") + if (NOT BUILD_FASTDEPLOY_PYTHON) + message(STATUS "Build FastDeploy Ascend C++ library on X86 platform.") + if(NOT PADDLELITE_URL) + set(PADDLELITE_URL "https://bj.bcebos.com/fastdeploy/test/lite-linux_x86_huawei_ascend_npu_0105.tgz") + endif() + else () + message(STATUS "Build FastDeploy Ascend Python library on X86 platform.") + if(NOT PADDLELITE_URL) + set(PADDLELITE_URL "https://bj.bcebos.com/fastdeploy/test/lite-linux_x86_huawei_ascend_npu_python_0105.tgz") + endif() + endif() +endif() + + + +if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "aarch64") + if (NOT BUILD_FASTDEPLOY_PYTHON) + message(STATUS "Build FastDeploy Ascend C++ library on aarch64 platform.") + if(NOT PADDLELITE_URL) + set(PADDLELITE_URL "https://bj.bcebos.com/fastdeploy/test/lite-linux_arm64_huawei_ascend_npu_1121.tgz") + endif() + else () + message(STATUS "Build FastDeploy Ascend Python library on aarch64 platform.") + if(NOT PADDLELITE_URL) + set(PADDLELITE_URL "https://bj.bcebos.com/fastdeploy/test/lite-linux_arm64_huawei_ascend_npu_python_1207.tgz") + endif() + endif() +endif() \ No newline at end of file diff --git a/scripts/patch_paddle_lite.py b/scripts/patch_paddle_lite.py index 96dea4bf1..035cfc59e 100644 --- a/scripts/patch_paddle_lite.py +++ b/scripts/patch_paddle_lite.py @@ -23,12 +23,15 @@ import sys def process_paddle_lite(paddle_lite_so_path): if platform.system().lower() != "linux": return - rpaths = ["$ORIGIN"] + rpaths = ["$ORIGIN", "$ORIGIN/mklml/lib/"] patchelf_exe = os.getenv("PATCHELF_EXE", "patchelf") + for paddle_lite_so_file in os.listdir(paddle_lite_so_path): paddle_lite_so_file = os.path.join(paddle_lite_so_path, paddle_lite_so_file) + + # Patch /paddlelite/lib/*.so if '.so' in paddle_lite_so_file: command = "{} --set-rpath '{}' {}".format( patchelf_exe, ":".join(rpaths), paddle_lite_so_file) @@ -37,7 +40,25 @@ def process_paddle_lite(paddle_lite_so_path): assert os.system( command) == 0, "patchelf {} failed, the command: {}".format( paddle_lite_so_file, command) + + # Patch /paddlelite/lib/mklml/lib/*.so + if 'mklml' in paddle_lite_so_file: + paddle_lite_mklml_lib_path = os.path.join(paddle_lite_so_path, + paddle_lite_so_file,'lib') + + for paddle_lite_mklml_so_file in os.listdir(paddle_lite_mklml_lib_path): + paddle_lite_mklml_so_file = os.path.join(paddle_lite_mklml_lib_path, + paddle_lite_mklml_so_file) + if '.so' in paddle_lite_mklml_so_file: + command = "{} --set-rpath '{}' {}".format( + patchelf_exe, ":".join(rpaths), paddle_lite_mklml_so_file) + if platform.machine() != 'sw_64' and platform.machine( + ) != 'mips64': + assert os.system( + command) == 0, "patchelf {} failed, the command: {}".format( + paddle_lite_mklml_so_file, command) + if __name__ == "__main__": process_paddle_lite(sys.argv[1])