TNN: developed by Tencent Youtu Lab and Guangying Lab, a uniform deep learning inference framework for mobile、desktop and server. TNN is distinguished by several outstanding features, including its cross-platform capability, high performance, model compression and code pruning. Based on ncnn and Rapidnet, TNN further strengthens the support and performance optimization for mobile devices, and also draws on the advantages of good extensibility and high performance from existed open source efforts. TNN has been deployed in multiple Apps from Tencent, such as Mobile QQ, Weishi, Pitu, etc. Contributions are welcome to work in collaborative with us and make TNN a better framework.
function clean_build() {
echo $1 | grep "$BUILD_DIR\b" > /dev/null
if [[ "$?" != "0" ]]; then
exit_with_msg "Warnning: $1 seems not to be a BUILD folder."
fi
rm -rf $1
mkdir $1
}
1. 使用环境(environment)
GCC: 5.4
2. Github版本
commit(optional): 583f335901b7b93b7983aae0405e317ec6606bb4
3. 详细描述bug 情况 (Describe the bug) A clear and concise description of what the bug is.
PROFILING="OFF" CLEAN="" DEVICE_TYPE="GPU" MODEL_TYPE=TNN USE_NCNN_MODEL=0 SHARED_LIB="ON" ARM="ON" OPENMP="ON" OPENCL="ON" CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ TARGET_ARCH=aarch64
if [ -z $TNN_ROOT_PATH ] then TNN_ROOT_PATH=$(cd
dirname $0
; pwd)/../.. fiWORK_DIR=
pwd
BENCHMARK_MODEL_DIR=$WORK_DIR/../benchmark-model BUILD_DIR=build OUTPUT_LOG_FILE=benchmark_models_result.txt LOOP_COUNT=16 WARM_UP_COUNT=8benchmark_model_list=(
test.tnnproto \
yolov5s-sim-160.tnnproto )
function usage() { echo "usage: ./benchmark_models.sh [-32] [-c] [-b] [-f] [-t] <CPU/GPU>" echo "options:" echo " -32 Build 32 bit." echo " -c Clean up build folders." echo " -b build targets only" echo " -f build profiling targets " echo " -t CPU/GPU specify the platform to run" }
function exit_with_msg() { echo $1 exit 1 }
function clean_build() { echo $1 | grep "$BUILD_DIR\b" > /dev/null if [[ "$?" != "0" ]]; then exit_with_msg "Warnning: $1 seems not to be a BUILD folder." fi rm -rf $1 mkdir $1 }
function build_armlinux_bench() { if [ "-c" == "$CLEAN" ]; then clean_build $BUILD_DIR fi mkdir -p build cd $BUILD_DIR cmake ${TNN_ROOT_PATH} \ -DCMAKE_SYSTEM_NAME=Linux \ -DTNN_TEST_ENABLE=ON \ -DTNN_CPU_ENABLE=ON \ -DCMAKE_C_COMPILER=$CC \ -DCMAKE_CXX_COMPILER=$CXX \ -DCMAKE_BUILD_TYPE=Debug \ -DTNN_CPU_ENABLE:BOOL=ON \ -DTNN_ARM_ENABLE:BOOL=$ARM \ -DTNN_OPENMP_ENABLE:BOOL=$OPENMP \ -DTNN_OPENCL_ENABLE:BOOL=$OPENCL \ -DTNN_PROFILER_ENABLE:BOOL=${PROFILING} \ -DTNN_TEST_ENABLE=ON \ -DTNN_UNIT_TEST_ENABLE=ON \ -DTNN_COVERAGE=ON \ -DCMAKE_SYSTEM_PROCESSOR=$TARGET_ARCH \ -DTNN_BUILD_SHARED:BOOL=$SHARED_LIB \ -DTNN_BENCHMARK_MODE=ON
}
function bench_armlinux() { build_armlinux_bench if [ $? != 0 ];then exit_with_msg "build failed" fi
}
while [ "$1" != "" ]; do case $1 in -32) shift CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ TARGET_ARCH=arm ;; -c) shift CLEAN="-c" ;; -b) shift BUILD_ONLY="-b" ;; -f) shift PROFILING="ON" ;; -t) shift DEVICE_TYPE="$1" shift ;; -n) shift MODEL_TYPE=NCNN ;; *) usage exit 1 esac done
bench_armlinux