From f6cf1f9f63d67cb11cb56830e6fd1e9ed44182b2 Mon Sep 17 00:00:00 2001 From: yanghongtian Date: Thu, 16 Apr 2020 19:40:39 +0800 Subject: [PATCH] add hw_ascend_npu build script --- .../hw_ascend_npu/bridges/CMakeLists.txt | 4 +- lite/tools/build_hw_ascend_npu.sh | 125 ++++++++++++++++++ 2 files changed, 127 insertions(+), 2 deletions(-) create mode 100755 lite/tools/build_hw_ascend_npu.sh diff --git a/lite/kernels/hw_ascend_npu/bridges/CMakeLists.txt b/lite/kernels/hw_ascend_npu/bridges/CMakeLists.txt index 6884e9b20d..1618fef815 100644 --- a/lite/kernels/hw_ascend_npu/bridges/CMakeLists.txt +++ b/lite/kernels/hw_ascend_npu/bridges/CMakeLists.txt @@ -14,8 +14,8 @@ lite_cc_library(subgraph_bridge_graph_hw_ascend_npu set(hw_ascend_npu_subgraph_bridge_deps subgraph_bridge_registry subgraph_bridge_utility_hw_ascend_npu subgraph_bridge_graph_hw_ascend_npu) lite_cc_library(subgraph_bridge_act_op_hw_ascend_npu SRCS act_op.cc DEPS - ${hw_ascend_npu_builder_libs} - ${hw_ascend_npu_subgraph_bridge_deps}) + ${hw_ascend_npu_subgraph_bridge_deps} + ${hw_ascend_npu_builder_libs}) set(hw_ascend_npu_subgraph_bridges subgraph_bridge_graph_hw_ascend_npu diff --git a/lite/tools/build_hw_ascend_npu.sh b/lite/tools/build_hw_ascend_npu.sh new file mode 100755 index 0000000000..62f950e216 --- /dev/null +++ b/lite/tools/build_hw_ascend_npu.sh @@ -0,0 +1,125 @@ +#!/bin/bash +set -ex + +# global variables with default value +ASCEND_HOME="/usr/local/Ascend" # Ascend SDK root directory +TARGET_NAME="test_subgraph_pass" # default target +BUILD_EXTRA=ON # ON(with sequence ops)/OFF +WITH_TESTING=ON # ON/OFF + +function print_usage { + echo -e "\nUSAGE:" + echo + echo "----------------------------------------" + echo -e "--hw_ascend_npu_sdk_root=" + echo -e "--target_name=" + echo "----------------------------------------" + echo +} + +# readonly variables with default value +readonly CMAKE_COMMON_OPTIONS="-DWITH_LITE=ON \ + -DLITE_WITH_LIGHT_WEIGHT_FRAMEWORK=OFF \ + -DWITH_PYTHON=OFF \ + -DLITE_WITH_ARM=OFF" + +readonly NUM_CORES_FOR_COMPILE=2 +echo "-------------NUM_CORES_FOR_COMPILE = $NUM_CORES_FOR_COMPILE" + +readonly THIRDPARTY_TAR=https://paddle-inference-dist.bj.bcebos.com/PaddleLite/third-party-05b862.tar.gz +readonly workspace=$(pwd) + +function prepare_thirdparty { + if [ ! -d $workspace/third-party -o -f $workspace/third-party-05b862.tar.gz ]; then + rm -rf $workspace/third-party + + if [ ! -f $workspace/third-party-05b862.tar.gz ]; then + wget $THIRDPARTY_TAR + fi + tar xzf third-party-05b862.tar.gz + else + #git submodule update --init --recursive + echo "-------------" + fi +} + +# for code gen, a source file is generated after a test, but is dependended by some targets in cmake. +# here we fake an empty file to make cmake works. +function prepare_workspace { + # in build directory + # 1. Prepare gen_code file + GEN_CODE_PATH_PREFIX=lite/gen_code + mkdir -p ./${GEN_CODE_PATH_PREFIX} + touch ./${GEN_CODE_PATH_PREFIX}/__generated_code__.cc + + # 2.Prepare debug tool + DEBUG_TOOL_PATH_PREFIX=lite/tools/debug + mkdir -p ./${DEBUG_TOOL_PATH_PREFIX} + cp ../${DEBUG_TOOL_PATH_PREFIX}/analysis_tool.py ./${DEBUG_TOOL_PATH_PREFIX}/ + + # clone submodule + # git submodule update --init --recursive + prepare_thirdparty +} + +function build_hw_ascend_npu { + build_dir=${workspace}/build.lite.hw_ascend_npu + mkdir -p $build_dir + cd $build_dir + + export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$PWD/third_party/install/mklml/lib" + prepare_workspace + cmake .. \ + ${CMAKE_COMMON_OPTIONS} \ + -DWITH_GPU=OFF \ + -DWITH_MKLDNN=OFF \ + -DLITE_WITH_X86=ON \ + -DWITH_MKL=ON \ + -DLITE_WITH_HW_ASCEND_NPU=ON \ + -DLITE_BUILD_EXTRA=${BUILD_EXTRA} \ + -DWITH_TESTING=${WITH_TESTING} \ + -DASCEND_HOME=${HW_ASCEND_NPU_SDK_ROOT} + + make -j$NUM_CORES_FOR_COMPILE + + cd - + echo "Done" +} + +function main { + # Parse command line. + for i in "$@"; do + case $i in + --target_name=*) + TARGET_NAME="${i#*=}" + shift + ;; + --build_extra=*) + BUILD_EXTRA="${i#*=}" + shift + ;; + --hw_ascend_npu_sdk_root=*) + HW_ASCEND_NPU_SDK_ROOT="${i#*=}" + shift + ;; + build) + HW_ASCEND_NPU_SDK_ROOT="${ASCEND_HOME}" + build_hw_ascend_npu + shift + ;; + full_publish) + TARGET_NAME=publish_inference + HW_ASCEND_NPU_SDK_ROOT="${ASCEND_HOME}" + build_hw_ascend_npu + shift + ;; + *) + # unknown option + print_usage + exit 1 + ;; + esac + done +} + +main $@ -- GitLab