#!/bin/bash # Must run at root dir of mace project. set +x Usage() { echo 'Usage: bash tools/validate_gcn.sh tools/gcn.config tf_model_path image_size [tuning]' } if [ $# -lt 2 ];then Usage exit -1 fi source $1 VLOG_LEVEL=0 TF_MODEL_FILE_PATH=$2 MODEL_DIR=$(dirname ${TF_MODEL_FILE_PATH}) MACE_SOURCE_DIR=`/bin/pwd` MACE_MODEL_NAME='mace_model.pb' INPUT_FILE_NAME='model_input' OUTPUT_FILE_NAME='gcn.out' OUTPUT_LIST_FILE='gcn.list' PHONE_DATA_DIR="/data/local/tmp/${MACE_MODEL_NAME}" KERNEL_DIR="${PHONE_DATA_DIR}/cl/" IMAGE_SIZE=$3 MODEL_TAG=GCN${IMAGE_SIZE} CODEGEN_DIR=${MACE_SOURCE_DIR}/mace/codegen MODEL_CODEGEN_DIR=${CODEGEN_DIR}/models/gcn-$IMAGE_SIZE CL_CODEGEN_DIR=${CODEGEN_DIR}/opencl CL_BIN_DIR=${CODEGEN_DIR}/opencl_bin TUNING_CODEGEN_DIR=${CODEGEN_DIR}/tuning TUNING_OR_NOT=${4:-0} VERSION_SOURCE_PATH=${CODEGEN_DIR}/version build_and_run() { EMBED_OPENCL_BINARY=$1 if [ "$EMBED_OPENCL_BINARY" = true ]; then EMBED_OPENCL_BINARY_BUILD_FLAGS="--define embed_binary_program=true" fi bazel build -c opt --strip always mace/examples:mace_run \ --crosstool_top=//external:android/crosstool \ --host_crosstool_top=@bazel_tools//tools/cpp:toolchain \ --cpu=arm64-v8a \ $EMBED_OPENCL_BINARY_BUILD_FLAGS \ --copt=-DMACE_MODEL_FUNCTION=Create${MODEL_TAG} adb shell "mkdir -p ${PHONE_DATA_DIR}" if [ "$EMBED_OPENCL_BINARY" = false ]; then adb shell "mkdir -p ${KERNEL_DIR}" adb push mace/kernels/opencl/cl/. ${KERNEL_DIR} fi adb push ${MODEL_DIR}/${INPUT_FILE_NAME} ${PHONE_DATA_DIR} adb push bazel-bin/mace/examples/mace_run ${PHONE_DATA_DIR} if [[ "${TUNING_OR_NOT}" != "0" && "$EMBED_OPENCL_BINARY" != true ]];then tuning_flag=1 round=0 # only warm up else tuning_flag=0 round=2 fi adb