MNN/project/android/run.sh

119 lines
2.2 KiB
Bash
Executable File

#!/bin/sh
set -e
# set -x
function showUsage () {
echo "Usage: $0 [options] model_path [input_path] [-- [options-pass-to-MNNV2Basic.out]]"
echo "options: "
echo " -h | --help: show this message and exit"
echo " -b | --build: build before run"
echo " -c | --clean: clean the build dir before build"
echo " --32: run in 32bits mode"
echo " --64: run in 64bits mode"
echo " --only-gpu: only run in gpu mode"
echo " --only-cpu: only run in cpu mode"
}
clean=0
build=0
enable_gpu=1
enable_cpu=1
remain_args=()
sub_args=()
bits=32
while [ "$1" != "" ]; do
case $1 in
-h | --help )
showUsage
exit 0
;;
-b | --build )
build=1
;;
-c | --clean )
clean=1
;;
--32 )
bits=32
;;
--64)
bits=64
;;
--only-gpu )
enable_gpu=1
enable_cpu=0
;;
--only-cpu )
enable_cpu=1
enable_gpu=0
;;
-- )
shift
while [ "$1" != "" ]; do
sub_args+=($1)
shift
done
break
;;
-* )
echo "Unknown options: $1"
showUsage
exit 1
;;
* )
remain_args+=($1)
;;
esac
shift
done
if [ ${#remain_args[@]} -lt 1 ]; then
showUsage
exit -1
fi
model_path=${remain_args[0]}
if [ ! -f $model_path ]; then
echo "The model \`$model_path' did not exist."
exit -1
fi
model_name=$(basename $model_path)
if [ ${#remain_args[@]} -gt 1 ]; then
input_path=${remain_args[1]}
if [ ! -f $input_path ]; then
echo "The input \`$input_path' did not exist."
exit -1
fi
input_name=$(basename $input_path)
fi
if [ $clean -eq 1 ]; then
build=1
rm -fr build$bits
fi
mkdir -p build$bits
if [ $build -eq 1 ]; then
pushd build$bits
../build_$bits.sh
popd
fi
WORKING_DIR=/data/local/tmp/MNNv2
adb shell mkdir -p $WORKING_DIR
echo "push exe and library files"
adb push build$bits/MNNV2Basic.out $WORKING_DIR
adb push build$bits/libMNN.so $WORKING_DIR
adb push build$bits/project/android/OpenCL/libMNN_CL.so $WORKING_DIR
echo "push model and input file"
adb push $model_path $WORKING_DIR
adb shell LD_LIBRARY_PATH=$WORKING_DIR $WORKING_DIR/MNNV2Basic.out \
$WORKING_DIR/$model_name \
${sub_args[@]}