74 lines
2.3 KiB
Bash
74 lines
2.3 KiB
Bash
#!/bin/bash
|
|
# ref1: https://github.com/PaddlePaddle/Paddle-Lite/blob/58b2d7dd89/lite/api/benchmark.cc
|
|
# ref2: https://paddle-inference-dist.bj.bcebos.com/PaddleLite/benchmark_0/benchmark.sh
|
|
|
|
set -e
|
|
|
|
# Check input
|
|
if [ $# -lt 3 ];
|
|
then
|
|
echo "Input error"
|
|
echo "Usage:"
|
|
echo " sh benchmark.sh <benchmark_bin_path> <benchmark_models_path> <result_filename>"
|
|
echo " sh benchmark.sh <benchmark_bin_path> <benchmark_models_path> <result_filename> <is_run_model_optimize: [true|false]>"
|
|
exit
|
|
fi
|
|
|
|
# Set benchmark params
|
|
ANDROID_DIR=/data/local/tmp
|
|
BENCHMARK_BIN=$1
|
|
MODELS_DIR=$2
|
|
RESULT_FILENAME=$3
|
|
|
|
WARMUP=10
|
|
REPEATS=30
|
|
IS_RUN_MODEL_OPTIMIZE=false
|
|
IS_RUN_QUANTIZED_MODEL=false
|
|
NUM_THREADS_LIST=(1 2 4)
|
|
MODELS_LIST=$(ls $MODELS_DIR)
|
|
|
|
# Check input
|
|
if [ $# -gt 3 ];
|
|
then
|
|
IS_RUN_MODEL_OPTIMIZE=$4
|
|
fi
|
|
|
|
# Adb push benchmark_bin, models
|
|
adb push $BENCHMARK_BIN $ANDROID_DIR/benchmark_bin
|
|
adb shell chmod +x $ANDROID_DIR/benchmark_bin
|
|
adb push $MODELS_DIR $ANDROID_DIR
|
|
|
|
# Run benchmark
|
|
adb shell "echo 'PaddleLite Benchmark' > $ANDROID_DIR/$RESULT_FILENAME"
|
|
for threads in ${NUM_THREADS_LIST[@]}; do
|
|
adb shell "echo Threads=$threads Warmup=$WARMUP Repeats=$REPEATS >> $ANDROID_DIR/$RESULT_FILENAME"
|
|
for model_name in ${MODELS_LIST[@]}; do
|
|
echo "Model=$model_name Threads=$threads"
|
|
if [ "$IS_RUN_MODEL_OPTIMIZE" = true ];
|
|
then
|
|
adb shell "$ANDROID_DIR/benchmark_bin \
|
|
--model_dir=$ANDROID_DIR/${MODELS_DIR}/$model_name \
|
|
--model_filename=model \
|
|
--param_filename=params \
|
|
--warmup=$WARMUP \
|
|
--repeats=$REPEATS \
|
|
--threads=$threads \
|
|
--result_filename=$ANDROID_DIR/$RESULT_FILENAME"
|
|
else
|
|
adb shell "$ANDROID_DIR/benchmark_bin \
|
|
--optimized_model_path=$ANDROID_DIR/${MODELS_DIR}/$model_name \
|
|
--warmup=$WARMUP \
|
|
--repeats=$REPEATS \
|
|
--threads=$threads \
|
|
--result_filename=$ANDROID_DIR/$RESULT_FILENAME"
|
|
fi
|
|
done
|
|
adb shell "echo >> $ANDROID_DIR/$RESULT_FILENAME"
|
|
done
|
|
|
|
# Adb pull benchmark result, show result
|
|
adb pull $ANDROID_DIR/$RESULT_FILENAME .
|
|
echo "\n--------------------------------------"
|
|
cat $RESULT_FILENAME
|
|
echo "--------------------------------------"
|