From a91d44ec107a60556190a0a446b7a564bb97ecc6 Mon Sep 17 00:00:00 2001 From: yejianwu Date: Wed, 24 Jan 2018 16:14:22 +0800 Subject: [PATCH] download lib from fds, and generate merged static lib when use validate_model.sh --- model.config | 1 + validate_model.sh | 71 +++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 61 insertions(+), 11 deletions(-) diff --git a/model.config b/model.config index a1cdf700..d2c259ac 100644 --- a/model.config +++ b/model.config @@ -6,3 +6,4 @@ INPUT_SHAPE=1,64,64,3 OUTPUT_SHAPE=1,64,64,2 RUNTIME=gpu TUNING_OR_NOT=1 +ANDROID_ABI=armeabi-v7a # Or 'arm64-v8a' diff --git a/validate_model.sh b/validate_model.sh index b20b7b56..1cbbe0e9 100755 --- a/validate_model.sh +++ b/validate_model.sh @@ -12,9 +12,20 @@ fi source $1 +LIB_FOLDER_NAME="libmace" +if [ x"${ANDROID_ABI}" = x"armeabi-v7a" ]; then + LIB_FOLDER_NAME="${LIB_FOLDER_NAME}_v7" +elif [ x"${ANDROID_ABI}" = x"arm64-v8a" ]; then + LIB_FOLDER_NAME="${LIB_FOLDER_NAME}_v8" +else + echo "Unsopported android abi" + exit -1 +fi + if [ x"$RUNTIME" = x"dsp" ]; then DATA_TYPE="DT_UINT8" DEVICE_TYPE="HEXAGON" + LIB_FOLDER_NAME="${LIB_FOLDER_NAME}_dsp" elif [ x"$RUNTIME" = x"gpu" ]; then DATA_TYPE="DT_HALF" DEVICE_TYPE="OPENCL" @@ -23,12 +34,18 @@ else exit -1 fi +LIBMACE_TAG=`git describe --abbrev=0 --tags` +if [ ! "${LIBMACE_TAG}" ]; then + LIBMACE_TAG="r0.1" +fi + VLOG_LEVEL=0 MODEL_DIR=$(dirname ${TF_MODEL_FILE_PATH}) LIBMACE_SOURCE_DIR=`/bin/pwd` -INPUT_FILE_NAME='model_input' -OUTPUT_FILE_NAME='model.out' -OUTPUT_LIST_FILE='model.list' +LIBMACE_BUILD_DIR="${LIBMACE_SOURCE_DIR}/build" +INPUT_FILE_NAME="model_input" +OUTPUT_FILE_NAME="model.out" +OUTPUT_LIST_FILE="model.list" PHONE_DATA_DIR="/data/local/tmp/mace_run" KERNEL_DIR="${PHONE_DATA_DIR}/cl/" CODEGEN_DIR=${LIBMACE_SOURCE_DIR}/codegen @@ -56,7 +73,7 @@ build_and_run() bazel build --verbose_failures -c opt --strip always examples:mace_run \ --crosstool_top=//external:android/crosstool \ --host_crosstool_top=@bazel_tools//tools/cpp:toolchain \ - --cpu=armeabi-v7a \ + --cpu=${ANDROID_ABI} \ --copt="-std=c++11" \ --copt="-D_GLIBCXX_USE_C99_MATH_TR1" \ --copt="-Werror=return-type" \ @@ -88,6 +105,25 @@ build_and_run() --round=$round || exit -1 } +download_libs() +{ + if [ ! -d "${LIBMACE_SOURCE_DIR}/lib/${LIB_FOLDER_NAME}" ]; then + wget -P ${LIBMACE_SOURCE_DIR}/lib http://cnbj1-inner-fds.api.xiaomi.net/libmace/libs/${LIBMACE_TAG}/${LIB_FOLDER_NAME}.tar.gz && \ + tar xvzf ${LIBMACE_SOURCE_DIR}/lib/${LIB_FOLDER_NAME}.tar.gz -C ${LIBMACE_SOURCE_DIR}/lib/ || exit -1 + + if [ -p ${LIBMACE_SOURCE_DIR}/lib/mace ]; then + unlink ${LIBMACE_SOURCE_DIR}/lib/mace + fi + + ln -s ${LIBMACE_SOURCE_DIR}/lib/${LIB_FOLDER_NAME} ${LIBMACE_SOURCE_DIR}/lib/mace && \ + rm -rf ${LIBMACE_SOURCE_DIR}/lib/${LIB_FOLDER_NAME}.tar.gz || exit -1 + + echo "${LIB_FOLDER_NAME} download successfully!" + else + echo "${LIB_FOLDER_NAME} already exists!" + fi +} + echo "Step 1: Generate input data" rm -rf ${MODEL_DIR}/${INPUT_FILE_NAME} python tools/validate.py --generate_data true \ @@ -109,33 +145,36 @@ bazel-bin/lib/python/tools/tf_converter --input=${TF_MODEL_FILE_PATH} \ --model_tag=${MODEL_TAG} \ --obfuscate=True || exit -1 -echo "Step 3: Run model on the phone with files" +echo "Step 3: Download mace static library" +download_libs + +echo "Step 4: Run model on the phone with files" build_and_run false -echo "Step 4: Generate OpenCL binary program and config code" +echo "Step 5: Generate OpenCL binary program and config code" rm -rf ${CL_BIN_DIR} rm -rf ${CL_CODEGEN_DIR} mkdir -p ${CL_BIN_DIR} mkdir -p ${CL_CODEGEN_DIR} -adb pull ${KERNEL_DIR} ${CL_BIN_DIR} +adb pull ${KERNEL_DIR}/\. ${CL_BIN_DIR} python lib/python/tools/opencl_codegen.py \ --cl_binary_dir=${CL_BIN_DIR} --output_path=${CL_CODEGEN_DIR}/opencl_compiled_program.cc -echo "Step 5: Generate tuning source file" +echo "Step 6: Generate tuning source file" adb pull ${PHONE_DATA_DIR}/mace_run.config ${CL_BIN_DIR} rm -rf ${TUNING_CODEGEN_DIR} mkdir -p ${TUNING_CODEGEN_DIR} python lib/python/tools/binary_codegen.py \ --binary_file=${CL_BIN_DIR}/mace_run.config --output_path=${TUNING_CODEGEN_DIR}/tuning_params.cc -echo "Step 6: Run model on the phone using binary" +echo "Step 7: Run model on the phone using binary" build_and_run true -echo "Step 7: Pull the mace run result." +echo "Step 8: Pull the mace run result." rm -rf ${MODEL_DIR}/${OUTPUT_FILE_NAME} adb