用到的shell脚本备份
#!/bin/bash
#出现错误即退出执行
set -e
build_dir=$(pwd)
root_dir=$(dirname "$PWD")
cd ${root_dir}
function enable_release_type() {
device=$1
if [ "$device" = "mlu" ]; then
sed -i "s/.*\(DBG_ENABLE\s*:=\s*\).*\$/\10/" Makefile_mlu #如果debug是1,改成0.
elif [ "$device" = "jetson" ]; then
sed -i "s/.*\(DBG_ENABLE\s*:=\s*\).*\$/\10/" Makefile_jetson
else
sed -i "s/.*\(DBG_ENABLE\s*:=\s*\).*\$/\10/" Makefile
fi
}
function build() {
device=$1
#设置为release版本
enable_release_type $device
if [ "$device" = "mlu" ]; then
make -f Makefile_mlu clean
make -f Makefile_mlu -j8
elif [ "$device" = "jetson" ]; then
make -f Makefile_jetson clean
make -f Makefile_jetson -j8
else
make clean
make -j8
fi
}
function build_caffe() {
device=$1
if [ "$device" = "mlu" ]; then
if [ ! -d "/usr/local/neuware" ]; then #如果目录不存在,打印错误信息呢,退出。
echo "/usr/local/neuware不存在,首先安装NEUWARE软件栈"
exit 1
fi
export NEUWARE_HOME=/usr/local/neuware #寒武纪环境变量
cd ${root_dir}/caffe_mlu/caffe/src/caffe/scripts
chmod +x ./*.sh
./build_caffe_mlu270_cambricon_release.sh
\cp ${root_dir}/caffe_mlu/caffe/lib/*.a ${root_dir}/cafl_sdk/lib #\表示强制替换,
else
#设置protoc目录
if [ "$device" = "jetson" ]; then
export PATH=$PATH:${root_dir}/bin/jetson
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${root_dir}/bin/jetson
else
export PATH=$PATH:${root_dir}/bin/jetson
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${root_dir}/bin/jetson
fi
cd ${root_dir}/caffe_gcs
#make clean
make -j32
\cp ${root_dir}/caffe_gcs/.build_release/lib/*.a ${root_dir}/cafl_sdk/lib
fi
}
function config_lib() {
device=$1
if [ "$device" = "mlu" ]; then
chmod +x config_lib_mlu.sh
./config_lib_mlu.sh
elif [ "$device" = "jetson" ]; then
chmod +x config_lib_jetson.sh
./config_lib_jetson.sh
else
chmod +x config_lib_gpu.sh
./config_lib_gpu.sh
fi
}
#build all services and libraries
function build_all(){
device=$1
echo "开始配置依赖库..."
cd ${root_dir}/lib
config_lib $device
echo "**********完成依赖库配置**********"
echo
echo "1)开始编译caffe..."
build_caffe $device
echo "**********完成编译caffe**********"
echo
echo "2)开始编译cafl_sdk..."
cd ${root_dir}/cafl_sdk
build $device
echo "**********完成编译cafl_sdk**********"
echo
if [ "$device" != "mlu" ]; then
echo "3)开始编译cuda_utils..."
cd ${root_dir}/cuda_utils
build $device
echo "**********完成编译cuda_utils**********"
echo
echo "4)开始编译trteng_exp..."
cd ${root_dir}/trteng_exp
build $device
echo "**********完成编译trteng_exp**********"
echo
echo "5)开始编译prot2trt_v2..."
cd ${root_dir}/prot2trt_v2
ln -snf $(pwd)/lib/libnvparsers.so.7 $(pwd)/lib/libnvparsers.so
build $device
echo "**********完成编译prot2trt_v2**********"
echo
fi
echo "6)开始编译cfldwp2..."
cd ${root_dir}/cfldwp2
build $device
echo "**********完成编译cfldwp2**********"
echo
echo "<----------完成编译[${device}]设备上的[计算]库---------->"
}
case "$1" in #入口
-h|--help)
echo "Usage: $0 [option...]"
echo "-h, --help for help information"
echo "-g, --gpu build for gpu device"
echo "-j, --jetson build for jetson arch"
echo "-m, --mlu build for mlu device"
;;
-g|--gpu)
echo
echo
echo "<----------start building for [gpu] device---------->"
echo
build_all
;;
-j|--jetson)
echo
echo
echo "<----------start building for [jetson] device---------->"
echo
build_all jetson
;;
-m|--mlu)
echo
echo
echo "<----------start building for [mlu] device---------->"
echo
build_all mlu
;;
*)
echo "Please use $0 -h|--help for more information"
esac
exit 0