提交 a91d44ec 编写于 作者: Y yejianwu

download lib from fds, and generate merged static lib when use validate_model.sh

上级 570c659f
...@@ -6,3 +6,4 @@ INPUT_SHAPE=1,64,64,3 ...@@ -6,3 +6,4 @@ INPUT_SHAPE=1,64,64,3
OUTPUT_SHAPE=1,64,64,2 OUTPUT_SHAPE=1,64,64,2
RUNTIME=gpu RUNTIME=gpu
TUNING_OR_NOT=1 TUNING_OR_NOT=1
ANDROID_ABI=armeabi-v7a # Or 'arm64-v8a'
...@@ -12,9 +12,20 @@ fi ...@@ -12,9 +12,20 @@ fi
source $1 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 if [ x"$RUNTIME" = x"dsp" ]; then
DATA_TYPE="DT_UINT8" DATA_TYPE="DT_UINT8"
DEVICE_TYPE="HEXAGON" DEVICE_TYPE="HEXAGON"
LIB_FOLDER_NAME="${LIB_FOLDER_NAME}_dsp"
elif [ x"$RUNTIME" = x"gpu" ]; then elif [ x"$RUNTIME" = x"gpu" ]; then
DATA_TYPE="DT_HALF" DATA_TYPE="DT_HALF"
DEVICE_TYPE="OPENCL" DEVICE_TYPE="OPENCL"
...@@ -23,12 +34,18 @@ else ...@@ -23,12 +34,18 @@ else
exit -1 exit -1
fi fi
LIBMACE_TAG=`git describe --abbrev=0 --tags`
if [ ! "${LIBMACE_TAG}" ]; then
LIBMACE_TAG="r0.1"
fi
VLOG_LEVEL=0 VLOG_LEVEL=0
MODEL_DIR=$(dirname ${TF_MODEL_FILE_PATH}) MODEL_DIR=$(dirname ${TF_MODEL_FILE_PATH})
LIBMACE_SOURCE_DIR=`/bin/pwd` LIBMACE_SOURCE_DIR=`/bin/pwd`
INPUT_FILE_NAME='model_input' LIBMACE_BUILD_DIR="${LIBMACE_SOURCE_DIR}/build"
OUTPUT_FILE_NAME='model.out' INPUT_FILE_NAME="model_input"
OUTPUT_LIST_FILE='model.list' OUTPUT_FILE_NAME="model.out"
OUTPUT_LIST_FILE="model.list"
PHONE_DATA_DIR="/data/local/tmp/mace_run" PHONE_DATA_DIR="/data/local/tmp/mace_run"
KERNEL_DIR="${PHONE_DATA_DIR}/cl/" KERNEL_DIR="${PHONE_DATA_DIR}/cl/"
CODEGEN_DIR=${LIBMACE_SOURCE_DIR}/codegen CODEGEN_DIR=${LIBMACE_SOURCE_DIR}/codegen
...@@ -56,7 +73,7 @@ build_and_run() ...@@ -56,7 +73,7 @@ build_and_run()
bazel build --verbose_failures -c opt --strip always examples:mace_run \ bazel build --verbose_failures -c opt --strip always examples:mace_run \
--crosstool_top=//external:android/crosstool \ --crosstool_top=//external:android/crosstool \
--host_crosstool_top=@bazel_tools//tools/cpp:toolchain \ --host_crosstool_top=@bazel_tools//tools/cpp:toolchain \
--cpu=armeabi-v7a \ --cpu=${ANDROID_ABI} \
--copt="-std=c++11" \ --copt="-std=c++11" \
--copt="-D_GLIBCXX_USE_C99_MATH_TR1" \ --copt="-D_GLIBCXX_USE_C99_MATH_TR1" \
--copt="-Werror=return-type" \ --copt="-Werror=return-type" \
...@@ -88,6 +105,25 @@ build_and_run() ...@@ -88,6 +105,25 @@ build_and_run()
--round=$round || exit -1 --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" echo "Step 1: Generate input data"
rm -rf ${MODEL_DIR}/${INPUT_FILE_NAME} rm -rf ${MODEL_DIR}/${INPUT_FILE_NAME}
python tools/validate.py --generate_data true \ python tools/validate.py --generate_data true \
...@@ -109,33 +145,36 @@ bazel-bin/lib/python/tools/tf_converter --input=${TF_MODEL_FILE_PATH} \ ...@@ -109,33 +145,36 @@ bazel-bin/lib/python/tools/tf_converter --input=${TF_MODEL_FILE_PATH} \
--model_tag=${MODEL_TAG} \ --model_tag=${MODEL_TAG} \
--obfuscate=True || exit -1 --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 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_BIN_DIR}
rm -rf ${CL_CODEGEN_DIR} rm -rf ${CL_CODEGEN_DIR}
mkdir -p ${CL_BIN_DIR} mkdir -p ${CL_BIN_DIR}
mkdir -p ${CL_CODEGEN_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 \ python lib/python/tools/opencl_codegen.py \
--cl_binary_dir=${CL_BIN_DIR} --output_path=${CL_CODEGEN_DIR}/opencl_compiled_program.cc --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} adb pull ${PHONE_DATA_DIR}/mace_run.config ${CL_BIN_DIR}
rm -rf ${TUNING_CODEGEN_DIR} rm -rf ${TUNING_CODEGEN_DIR}
mkdir -p ${TUNING_CODEGEN_DIR} mkdir -p ${TUNING_CODEGEN_DIR}
python lib/python/tools/binary_codegen.py \ python lib/python/tools/binary_codegen.py \
--binary_file=${CL_BIN_DIR}/mace_run.config --output_path=${TUNING_CODEGEN_DIR}/tuning_params.cc --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 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} rm -rf ${MODEL_DIR}/${OUTPUT_FILE_NAME}
adb </dev/null pull ${PHONE_DATA_DIR}/${OUTPUT_FILE_NAME} ${MODEL_DIR} adb </dev/null pull ${PHONE_DATA_DIR}/${OUTPUT_FILE_NAME} ${MODEL_DIR}
echo "Step 8: Validate the result" echo "Step 9: Validate the result"
python tools/validate.py --model_file ${TF_MODEL_FILE_PATH} \ python tools/validate.py --model_file ${TF_MODEL_FILE_PATH} \
--input_file ${MODEL_DIR}/${INPUT_FILE_NAME} \ --input_file ${MODEL_DIR}/${INPUT_FILE_NAME} \
--mace_out_file ${MODEL_DIR}/${OUTPUT_FILE_NAME} \ --mace_out_file ${MODEL_DIR}/${OUTPUT_FILE_NAME} \
...@@ -143,3 +182,13 @@ python tools/validate.py --model_file ${TF_MODEL_FILE_PATH} \ ...@@ -143,3 +182,13 @@ python tools/validate.py --model_file ${TF_MODEL_FILE_PATH} \
--output_node ${TF_OUTPUT_NODE} \ --output_node ${TF_OUTPUT_NODE} \
--input_shape "${INPUT_SHAPE}" \ --input_shape "${INPUT_SHAPE}" \
--output_shape "${OUTPUT_SHAPE}" --output_shape "${OUTPUT_SHAPE}"
echo "Step 10: Generate project static lib"
rm -rf ${LIBMACE_BUILD_DIR}
mkdir -p ${LIBMACE_BUILD_DIR}/lib
cp -rf ${LIBMACE_SOURCE_DIR}/include ${LIBMACE_BUILD_DIR}
cp ${LIBMACE_SOURCE_DIR}/lib/hexagon/libhexagon_controller.so ${LIBMACE_BUILD_DIR}/lib
$ANDROID_NDK_HOME/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-ar \
-M < tools/libmace.mri || exit -1
echo "Done"
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册