#!/bin/bash # Must run at root dir of mace project. set +x Usage() { echo 'Usage: bash tools/validate_model.sh tools/model.config tf_model_path model_tag input_shape output_shape runtime[gpu/dsp] [tuning]' } if [ $# -lt 6 ];then Usage exit -1 fi source $1 TF_MODEL_FILE_PATH=$2 MODEL_TAG=$3 INPUT_SHAPE=$4 OUTPUT_SHAPE=$5 RUNTIME=$6 TUNING_OR_NOT=${7:-0} if [ x"$RUNTIME" = x"dsp" ]; then DATA_TYPE="DT_UINT8" DEVICE_TYPE="HEXAGON" TF_OUTPUT_NODE=${TF_OUTPUT_BR_NODE} elif [ x"$RUNTIME" = x"gpu" ]; then DATA_TYPE="DT_HALF" DEVICE_TYPE="OPENCL" else Usage exit -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' 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 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=armeabi-v7a \ --copt="-std=c++11" \ --copt="-D_GLIBCXX_USE_C99_MATH_TR1" \ --copt="-Werror=return-type" \ --copt="-DMACE_MODEL_TAG=${MODEL_TAG}" \ --copt="-DMACE_OBFUSCATE_LITERALS" \ $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