diff --git a/mindspore/lite/examples/quick_start_cpp/build.sh b/mindspore/lite/examples/quick_start_cpp/build.sh index b0a404d9fe..1a150537a1 100644 --- a/mindspore/lite/examples/quick_start_cpp/build.sh +++ b/mindspore/lite/examples/quick_start_cpp/build.sh @@ -25,7 +25,7 @@ get_version MODEL_DOWNLOAD_URL="https://download.mindspore.cn/model_zoo/official/lite/mobilenetv2_imagenet/mobilenetv2.ms" MINDSPORE_FILE_NAME="mindspore-lite-${VERSION_STR}-linux-x64" MINDSPORE_FILE="${MINDSPORE_FILE_NAME}.tar.gz" -MINDSPORE_LITE_DOWNLOAD_URL="https://ms-release.obs.cn-north-4.myhuaweicloud.com/${VERSION_STR}/MindSpore/lite/release/linux/${MINDSPORE_FILE}" +MINDSPORE_LITE_DOWNLOAD_URL="https://ms-release.obs.cn-north-4.myhuaweicloud.com/${VERSION_STR}-rc1/MindSpore/lite/release/linux/${MINDSPORE_FILE}" mkdir -p build mkdir -p lib diff --git a/mindspore/lite/examples/quick_start_java/build.sh b/mindspore/lite/examples/quick_start_java/build.sh index 78603d874b..547e9d6c1a 100644 --- a/mindspore/lite/examples/quick_start_java/build.sh +++ b/mindspore/lite/examples/quick_start_java/build.sh @@ -25,7 +25,7 @@ get_version MODEL_DOWNLOAD_URL="https://download.mindspore.cn/model_zoo/official/lite/mobilenetv2_imagenet/mobilenetv2.ms" MINDSPORE_FILE_NAME="mindspore-lite-${VERSION_STR}-linux-x64" MINDSPORE_FILE="${MINDSPORE_FILE_NAME}.tar.gz" -MINDSPORE_LITE_DOWNLOAD_URL="https://ms-release.obs.cn-north-4.myhuaweicloud.com/${VERSION_STR}/MindSpore/lite/release/linux/${MINDSPORE_FILE}" +MINDSPORE_LITE_DOWNLOAD_URL="https://ms-release.obs.cn-north-4.myhuaweicloud.com/${VERSION_STR}-rc1/MindSpore/lite/release/linux/${MINDSPORE_FILE}" mkdir -p build mkdir -p lib diff --git a/mindspore/lite/examples/runtime_cpp/CMakeLists.txt b/mindspore/lite/examples/runtime_cpp/CMakeLists.txt index 6eef6ce310..51a2a21360 100644 --- a/mindspore/lite/examples/runtime_cpp/CMakeLists.txt +++ b/mindspore/lite/examples/runtime_cpp/CMakeLists.txt @@ -1,5 +1,6 @@ cmake_minimum_required(VERSION 3.14) project(RuntimeCpp) +option(SUPPORT_NPU "if support npu" off) if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.3.0) message(FATAL_ERROR "GCC version ${CMAKE_CXX_COMPILER_VERSION} must not be less than 7.3.0") @@ -12,26 +13,28 @@ file(GLOB_RECURSE RUNTIME_CPP ${CMAKE_CURRENT_SOURCE_DIR}/*.cc) add_executable(runtime_cpp ${RUNTIME_CPP}) find_library(log-lib log) -target_link_libraries( - runtime_cpp - -Wl,--whole-archive mindspore-lite -Wl,--no-whole-archive - hiai - hiai_ir - hiai_ir_build - ${log-lib} -) +if(SUPPORT_NPU) + target_link_libraries( + runtime_cpp + -Wl,--whole-archive mindspore-lite -Wl,--no-whole-archive + hiai + hiai_ir + hiai_ir_build + ${log-lib} + ) +else() + target_link_libraries( + runtime_cpp + -Wl,--whole-archive mindspore-lite -Wl,--no-whole-archive + ${log-lib} + ) +endif() SET(CMAKE_INSTALL_PREFIX ${CMAKE_CURRENT_SOURCE_DIR}/build/tmp) INSTALL(TARGETS runtime_cpp DESTINATION bin) -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/lib/libhiai.so - DESTINATION lib) -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/lib/libhiai_ir.so - DESTINATION lib) -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/lib/libhiai_ir_build.so - DESTINATION lib) INSTALL(FILES ${ANDROID_NDK}/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/libc++_shared.so DESTINATION lib) @@ -39,6 +42,15 @@ INSTALL(FILES INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/model/mobilenetv2.ms DESTINATION model) +if(SUPPORT_NPU) + INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/lib/libhiai.so + DESTINATION lib) + INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/lib/libhiai_ir.so + DESTINATION lib) + INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/lib/libhiai_ir_build.so + DESTINATION lib) +endif() + set(CPACK_GENERATOR "TGZ") set(CPACK_PACKAGE_FILE_NAME "runtime_cpp_demo") diff --git a/mindspore/lite/examples/runtime_cpp/build.sh b/mindspore/lite/examples/runtime_cpp/build.sh index 73bd50544c..8fb3b6e1cd 100644 --- a/mindspore/lite/examples/runtime_cpp/build.sh +++ b/mindspore/lite/examples/runtime_cpp/build.sh @@ -14,6 +14,15 @@ # limitations under the License. # ============================================================================ +usage() +{ + echo "Usage:" + echo "bash build.sh [-e npu] " + echo "" + echo "Options:" + echo " If set to -e npu, we will download the library of CPU+NPU, otherwise it will download the library of CPU+GPU by default." +} + BASEPATH=$( cd "$(dirname $0)" pwd @@ -24,11 +33,52 @@ get_version() { VERSION_REVISION=$(grep "const int ms_version_revision =" ${BASEPATH}/../../include/version.h | tr -dc "[0-9]") VERSION_STR=${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_REVISION} } + +# check and set options +checkopts() +{ + # Init default values of build options + DEVICE="GPU" + SUPPORT_NPU="off" + MINDSPORE_FILE_NAME="mindspore-lite-${VERSION_STR}-android-aarch64" + MINDSPORE_FILE="${MINDSPORE_FILE_NAME}.tar.gz" + MINDSPORE_LITE_DOWNLOAD_URL="https://ms-release.obs.cn-north-4.myhuaweicloud.com/${VERSION_STR}-rc1/MindSpore/lite/release/android/${MINDSPORE_FILE}" + # Process the options + while getopts 'e:h' opt + do + OPTARG=$(echo ${OPTARG} | tr '[A-Z]' '[a-z]') + case "${opt}" in + e) + DEVICE=$OPTARG + if [[ "X${DEVICE}" == "Xgpu" ]]; then + continue + elif [[ "X${DEVICE}" == "Xnpu" ]]; then + MINDSPORE_FILE_NAME="mindspore-lite-${VERSION_STR}-android-aarch64" + MINDSPORE_FILE="${MINDSPORE_FILE_NAME}-npu.tar.gz" + MINDSPORE_LITE_DOWNLOAD_URL="https://ms-release.obs.cn-north-4.myhuaweicloud.com/${VERSION_STR}-rc1/MindSpore/lite/release/android/${MINDSPORE_FILE}" + SUPPORT_NPU="on" + else + echo "Unknown DEVICE option ${OPTARG}!" + usage + exit 1 + fi + ;; + h) + usage + exit 0 + ;; + *) + echo "Unknown option ${opt}!" + usage + exit 1 + esac + done +} + get_version +checkopts "$@" + MODEL_DOWNLOAD_URL="https://download.mindspore.cn/model_zoo/official/lite/mobilenetv2_imagenet/mobilenetv2.ms" -MINDSPORE_FILE_NAME="mindspore-lite-${VERSION_STR}-android-aarch64" -MINDSPORE_FILE="${MINDSPORE_FILE_NAME}.tar.gz" -MINDSPORE_LITE_DOWNLOAD_URL="https://ms-release.obs.cn-north-4.myhuaweicloud.com/${VERSION_STR}/MindSpore/lite/release/android/${MINDSPORE_FILE}" mkdir -p build mkdir -p lib @@ -41,10 +91,12 @@ if [ ! -e ${BASEPATH}/build/${MINDSPORE_FILE} ]; then fi tar xzvf ${BASEPATH}/build/${MINDSPORE_FILE} -C ${BASEPATH}/build/ cp -r ${BASEPATH}/build/${MINDSPORE_FILE_NAME}/inference/lib/libmindspore-lite.a ${BASEPATH}/lib -cp -r ${BASEPATH}/build/${MINDSPORE_FILE_NAME}/inference/third_party/hiai_ddk/lib/*.so ${BASEPATH}/lib cp -r ${BASEPATH}/build/${MINDSPORE_FILE_NAME}/inference/include ${BASEPATH}/ +if [[ "X${DEVICE}" == "Xnpu" ]]; then + cp -r ${BASEPATH}/build/${MINDSPORE_FILE_NAME}/inference/third_party/hiai_ddk/lib/*.so ${BASEPATH}/lib +fi cd ${BASEPATH}/build cmake -DCMAKE_TOOLCHAIN_FILE="${ANDROID_NDK}/build/cmake/android.toolchain.cmake" -DANDROID_NATIVE_API_LEVEL="19" \ - -DANDROID_NDK="${ANDROID_NDK}" -DANDROID_ABI="arm64-v8a" -DANDROID_STL="c++_shared" ${BASEPATH} + -DANDROID_NDK="${ANDROID_NDK}" -DANDROID_ABI="arm64-v8a" -DANDROID_STL="c++_shared" ${BASEPATH} -DSUPPORT_NPU=${SUPPORT_NPU} make && make install && make package