Support Ascend deployment on X86 platform

This commit is contained in:
yunyaoXYY
2023-01-05 05:47:26 +00:00
parent eb0c8750f0
commit 26e98fc849
2 changed files with 51 additions and 16 deletions

View File

@@ -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}) if(NOT ${ENABLE_LITE_BACKEND})
set(ENABLE_LITE_BACKEND ON) set(ENABLE_LITE_BACKEND ON)
endif() endif()
if (NOT BUILD_FASTDEPLOY_PYTHON) if(NOT CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "aarch64")
message(STATUS "Build FastDeploy Ascend C++ library.") if (NOT BUILD_FASTDEPLOY_PYTHON)
if(NOT PADDLELITE_URL) message(STATUS "Build FastDeploy Ascend C++ library on X86 platform.")
set(PADDLELITE_URL "https://bj.bcebos.com/fastdeploy/test/lite-linux_arm64_huawei_ascend_npu_1121.tgz") if(NOT PADDLELITE_URL)
endif() set(PADDLELITE_URL "https://bj.bcebos.com/fastdeploy/test/lite-linux_x86_huawei_ascend_npu_0105.tgz")
else () endif()
message(STATUS "Build FastDeploy Ascend Python library.") else ()
if(NOT PADDLELITE_URL) message(STATUS "Build FastDeploy Ascend Python library on X86 platform.")
set(PADDLELITE_URL "https://bj.bcebos.com/fastdeploy/test/lite-linux_arm64_huawei_ascend_npu_python_1207.tgz") if(NOT PADDLELITE_URL)
endif() set(PADDLELITE_URL "https://bj.bcebos.com/fastdeploy/test/lite-linux_x86_huawei_ascend_npu_python_0105.tgz")
endif() 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()

View File

@@ -23,12 +23,15 @@ import sys
def process_paddle_lite(paddle_lite_so_path): def process_paddle_lite(paddle_lite_so_path):
if platform.system().lower() != "linux": if platform.system().lower() != "linux":
return return
rpaths = ["$ORIGIN"] rpaths = ["$ORIGIN", "$ORIGIN/mklml/lib/"]
patchelf_exe = os.getenv("PATCHELF_EXE", "patchelf") patchelf_exe = os.getenv("PATCHELF_EXE", "patchelf")
for paddle_lite_so_file in os.listdir(paddle_lite_so_path): 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 = os.path.join(paddle_lite_so_path,
paddle_lite_so_file) paddle_lite_so_file)
# Patch /paddlelite/lib/*.so
if '.so' in paddle_lite_so_file: if '.so' in paddle_lite_so_file:
command = "{} --set-rpath '{}' {}".format( command = "{} --set-rpath '{}' {}".format(
patchelf_exe, ":".join(rpaths), paddle_lite_so_file) patchelf_exe, ":".join(rpaths), paddle_lite_so_file)
@@ -37,7 +40,25 @@ def process_paddle_lite(paddle_lite_so_path):
assert os.system( assert os.system(
command) == 0, "patchelf {} failed, the command: {}".format( command) == 0, "patchelf {} failed, the command: {}".format(
paddle_lite_so_file, command) 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__": if __name__ == "__main__":
process_paddle_lite(sys.argv[1]) process_paddle_lite(sys.argv[1])