#!/bin/bash # Must run at root dir of mace project. set +x Usage() { echo 'Usage: bash tools/validate_model.sh tools/model.config' } if [ $# -lt 1 ];then Usage exit -1 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 MACE_RUNTIME=cpu if [ x"$RUNTIME" = x"dsp" ]; then DATA_TYPE="DT_UINT8" DEVICE_TYPE="HEXAGON" LIB_FOLDER_NAME="${LIB_FOLDER_NAME}_dsp" MACE_RUNTIME=$RUNTIME elif [ x"$RUNTIME" = x"gpu" ]; then DATA_TYPE="DT_HALF" DEVICE_TYPE="OPENCL" MACE_RUNTIME=$RUNTIME elif [ x"$RUNTIME" = x"cpu" ]; then DATA_TYPE="DT_FLOAT" DEVICE_TYPE="CPU" elif [ x"$RUNTIME" = x"local" ];then DATA_TYPE="DT_FLOAT" DEVICE_TYPE="CPU" else Usage exit -1 fi LIBMACE_TAG=`git describe --abbrev=0 --tags` || exit -1 VLOG_LEVEL=0 MODEL_DIR=$(dirname ${TF_MODEL_FILE_PATH}) LIBMACE_SOURCE_DIR=`/bin/pwd` 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 MODEL_CODEGEN_DIR=${CODEGEN_DIR}/models/${MODEL_TAG} CL_CODEGEN_DIR=${CODEGEN_DIR}/opencl CL_BIN_DIR=${CODEGEN_DIR}/opencl_bin TUNING_CODEGEN_DIR=${CODEGEN_DIR}/tuning VERSION_SOURCE_PATH=${CODEGEN_DIR}/version build_and_run() { PRODUCTION_MODE=$1 if [ "$PRODUCTION_MODE" = true ]; then PRODUCTION_MODE_BUILD_FLAGS="--define production=true" fi if [[ "${TUNING_OR_NOT}" != "0" && "$PRODUCTION_MODE" != true ]];then tuning_flag=1 round=0 # only warm up elif [[ "$PRODUCTION_MODE" != true ]];then tuning_flag=0 round=1 else tuning_flag=0 round=2 fi 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=${ANDROID_ABI} \ --copt="-std=c++11" \ --copt="-D_GLIBCXX_USE_C99_MATH_TR1" \ --copt="-Werror=return-type" \ --copt="-DMACE_MODEL_TAG=${MODEL_TAG}" \ $PRODUCTION_MODE_BUILD_FLAGS \ --define hexagon=true || exit -1 adb shell "mkdir -p ${PHONE_DATA_DIR}" || exit -1 if [ "$PRODUCTION_MODE" = false ]; then adb shell "mkdir -p ${KERNEL_DIR}" || exit -1 fi adb push ${MODEL_DIR}/${INPUT_FILE_NAME} ${PHONE_DATA_DIR} || exit -1 adb push bazel-bin/examples/mace_run ${PHONE_DATA_DIR} || exit -1 adb push lib/hexagon/libhexagon_controller.so ${PHONE_DATA_DIR} || exit 0 adb