mirror of https://github.com/alibaba/MNN.git
107 lines
3.0 KiB
Bash
Executable File
107 lines
3.0 KiB
Bash
Executable File
set -e
|
|
ABI="arm64-v8a"
|
|
OPENMP="OFF"
|
|
VULKAN="ON"
|
|
OPENCL="ON"
|
|
OPENGL="OFF"
|
|
RUN_LOOP=10
|
|
FORWARD_TYPE=0
|
|
CLEAN=""
|
|
PUSH_MODEL=""
|
|
|
|
WORK_DIR=`pwd`
|
|
BUILD_DIR=build
|
|
BENCHMARK_MODEL_DIR=$WORK_DIR/../models
|
|
ANDROID_DIR=/data/local/tmp
|
|
|
|
function usage() {
|
|
echo "-32\tBuild 32bit."
|
|
echo "-c\tClean up build folders."
|
|
echo "-p\tPush models to device"
|
|
}
|
|
function die() {
|
|
echo $1
|
|
exit 1
|
|
}
|
|
|
|
function clean_build() {
|
|
echo $1 | grep "$BUILD_DIR\b" > /dev/null
|
|
if [[ "$?" != "0" ]]; then
|
|
die "Warnning: $1 seems not to be a BUILD folder."
|
|
fi
|
|
rm -rf $1
|
|
mkdir $1
|
|
}
|
|
|
|
function build_android_bench() {
|
|
if [ "-c" == "$CLEAN" ]; then
|
|
clean_build $BUILD_DIR
|
|
fi
|
|
mkdir -p build
|
|
cd $BUILD_DIR
|
|
cmake ../../../ \
|
|
-DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DANDROID_ABI="${ABI}" \
|
|
-DANDROID_STL=c++_static \
|
|
-DANDROID_NATIVE_API_LEVEL=android-21 \
|
|
-DMNN_USE_LOGCAT:BOOL=OFF \
|
|
-DMNN_VULKAN:BOOL=$VULKAN \
|
|
-DMNN_OPENCL:BOOL=$OPENCL \
|
|
-DMNN_OPENMP:BOOL=$OPENMP \
|
|
-DMNN_OPENGL:BOOL=$OPENGL \
|
|
-DMNN_ARM82:BOOL=ON \
|
|
-DMNN_BUILD_BENCHMARK:BOOL=ON \
|
|
-DMNN_BUILD_FOR_ANDROID_COMMAND=true \
|
|
-DNATIVE_LIBRARY_OUTPUT=.
|
|
make -j8 benchmark.out timeProfile.out
|
|
}
|
|
|
|
function bench_android() {
|
|
build_android_bench
|
|
find . -name "*.so" | while read solib; do
|
|
adb push $solib $ANDROID_DIR
|
|
done
|
|
adb push benchmark.out $ANDROID_DIR
|
|
adb push timeProfile.out $ANDROID_DIR
|
|
adb shell chmod 0777 $ANDROID_DIR/benchmark.out
|
|
|
|
if [ "" != "$PUSH_MODEL" ]; then
|
|
adb shell "rm -rf $ANDROID_DIR/benchmark_models"
|
|
adb push $BENCHMARK_MODEL_DIR $ANDROID_DIR/benchmark_models
|
|
fi
|
|
adb shell "cat /proc/cpuinfo > $ANDROID_DIR/benchmark.txt"
|
|
adb shell "echo >> $ANDROID_DIR/benchmark.txt"
|
|
adb shell "echo Build Flags: ABI=$ABI OpenMP=$OPENMP Vulkan=$VULKAN OpenCL=$OPENCL >> $ANDROID_DIR/benchmark.txt"
|
|
#benchmark CPU
|
|
adb shell "LD_LIBRARY_PATH=$ANDROID_DIR $ANDROID_DIR/benchmark.out $ANDROID_DIR/benchmark_models $RUN_LOOP 5 $FORWARD_TYPE 2>$ANDROID_DIR/benchmark.err >> $ANDROID_DIR/benchmark.txt"
|
|
#benchmark Vulkan
|
|
adb shell "LD_LIBRARY_PATH=$ANDROID_DIR $ANDROID_DIR/benchmark.out $ANDROID_DIR/benchmark_models $RUN_LOOP 5 7 2>$ANDROID_DIR/benchmark.err >> $ANDROID_DIR/benchmark.txt"
|
|
#benchmark OpenCL
|
|
adb shell "LD_LIBRARY_PATH=$ANDROID_DIR $ANDROID_DIR/benchmark.out $ANDROID_DIR/benchmark_models 100 20 3 2>$ANDROID_DIR/benchmark.err >> $ANDROID_DIR/benchmark.txt"
|
|
}
|
|
|
|
while [ "$1" != "" ]; do
|
|
case $1 in
|
|
-32)
|
|
shift
|
|
ABI="armeabi-v7a"
|
|
;;
|
|
-c)
|
|
shift
|
|
CLEAN="-c"
|
|
;;
|
|
-p)
|
|
shift
|
|
PUSH_MODEL="-p"
|
|
;;
|
|
*)
|
|
usage
|
|
exit 1
|
|
esac
|
|
done
|
|
|
|
bench_android
|
|
adb pull $ANDROID_DIR/benchmark.txt .
|
|
cat benchmark.txt
|