build_run_throughput_test.sh 2.6 KB
Newer Older
1 2 3
#!/bin/bash

Usage() {
4
  echo "Usage: bash tools/build_run_throughput_test.sh target_soc run_seconds merged_lib_file model_input_dir"
5 6
}

7
if [ $# -lt 4 ]; then
8 9 10 11 12 13 14
  Usage
  exit 1
fi

CURRENT_DIR=`dirname $0`
source ${CURRENT_DIR}/env.sh

15 16 17 18 19 20
TARGET_SOC=$1
RUN_SECONDS=$2
MERGED_LIB_FILE=$3
MODEL_INPUT_DIR=$4

DEVICE_ID=`echo_device_id_by_soc $TARGET_SOC`
21 22 23 24 25 26 27 28 29 30 31 32 33

if [ "$CPU_MODEL_TAG" != '' ]; then
  CPU_MODEL_TAG_BUILD_FLAGS="--copt=-DMACE_CPU_MODEL_TAG=${CPU_MODEL_TAG}"
fi

if [ "$GPU_MODEL_TAG" != '' ]; then
  GPU_MODEL_TAG_BUILD_FLAGS="--copt=-DMACE_GPU_MODEL_TAG=${GPU_MODEL_TAG}"
fi

if [ "$DSP_MODEL_TAG" != '' ]; then
  DSP_MODEL_TAG_BUILD_FLAGS="--copt=-DMACE_DSP_MODEL_TAG=${DSP_MODEL_TAG}"
fi

W
wuchenghui 已提交
34
cp $MERGED_LIB_FILE mace/benchmark/libmace_merged.a
35

W
wuchenghui 已提交
36
bazel build --verbose_failures -c opt --strip always //mace/benchmark:model_throughput_test \
37 38 39 40 41 42 43 44 45 46 47 48
    --crosstool_top=//external:android/crosstool \
    --host_crosstool_top=@bazel_tools//tools/cpp:toolchain \
    --cpu=${TARGET_ABI} \
    --copt="-std=c++11" \
    --copt="-D_GLIBCXX_USE_C99_MATH_TR1" \
    --copt="-Werror=return-type" \
    ${CPU_MODEL_TAG_BUILD_FLAGS} \
    ${GPU_MODEL_TAG_BUILD_FLAGS} \
    ${DSP_MODEL_TAG_BUILD_FLAGS} \
    --define openmp=true \
    --copt="-O3" || exit 1

W
wuchenghui 已提交
49
rm mace/benchmark/libmace_merged.a
50

51
adb -s $DEVICE_ID shell "mkdir -p ${PHONE_DATA_DIR}" || exit 1
52

53 54
adb -s $DEVICE_ID push ${MODEL_INPUT_DIR}/${INPUT_FILE_NAME}_${INPUT_NODES} ${PHONE_DATA_DIR} || exit 1
adb -s $DEVICE_ID push bazel-bin/mace/benchmark/model_throughput_test ${PHONE_DATA_DIR} || exit 1
55
if [ "$EMBED_MODEL_DATA" = 0 ]; then
56 57 58
  adb -s $DEVICE_ID push codegen/models/${CPU_MODEL_TAG}/${CPU_MODEL_TAG}.data ${PHONE_DATA_DIR} || exit 1
  adb -s $DEVICE_ID push codegen/models/${GPU_MODEL_TAG}/${GPU_MODEL_TAG}.data ${PHONE_DATA_DIR} || exit 1
  adb -s $DEVICE_ID push codegen/models/${DSP_MODEL_TAG}/${DSP_MODEL_TAG}.data ${PHONE_DATA_DIR} || exit 1
59
fi
60
adb -s $DEVICE_ID push mace/core/runtime/hexagon/libhexagon_controller.so ${PHONE_DATA_DIR} || exit 1
61

62 63 64 65 66 67 68 69 70 71 72 73 74 75
adb -s $DEVICE_ID </dev/null shell \
  LD_LIBRARY_PATH=${PHONE_DATA_DIR} \
  MACE_CPP_MIN_VLOG_LEVEL=$VLOG_LEVEL \
  MACE_RUN_PARAMETER_PATH=${PHONE_DATA_DIR}/mace_run.config \
  MACE_KERNEL_PATH=$KERNEL_DIR \
  MACE_LIMIT_OPENCL_KERNEL_TIME=${LIMIT_OPENCL_KERNEL_TIME} \
  ${PHONE_DATA_DIR}/model_throughput_test \
  --input_shape="${INPUT_SHAPES}" \
  --output_shape="${OUTPUT_SHAPES}" \
  --input_file=${PHONE_DATA_DIR}/${INPUT_FILE_NAME}_${INPUT_NODES} \
  --cpu_model_data_file=${PHONE_DATA_DIR}/${CPU_MODEL_TAG}.data \
  --gpu_model_data_file=${PHONE_DATA_DIR}/${GPU_MODEL_TAG}.data \
  --dsp_model_data_file=${PHONE_DATA_DIR}/${DSP_MODEL_TAG}.data \
  --run_seconds=$RUN_SECONDS || exit 1