mmdeploy/tools/scripts/build_jetson_orin_python38.sh

186 lines
5.7 KiB
Bash

#! /bin/bash
# check python version is 3.8 or not
check_python_38(){
MAJOR=`python3 --version | awk '{print $2}' | awk -F . '{print $1}'`
MINOR=`python3 --version | awk '{print $2}' | awk -F . '{print $2}'`
if [ ${MAJOR} -ne 3 ];then
echo 'This script needs python==3.8 +_+'
exit 0
fi
if [ ${MINOR} -ne 8 ];then
echo 'This script needs python==3.8 +_+'
exit 0
fi
}
install_torch() {
version=`python3 -c "import torch; print(torch.__version__)"`
if [ -n "$version" ];then
return 0
fi
TORCH_WHL="torch-1.11.0-cp38-cp38-linux_aarch64.whl"
if [ ! -e "${TORCH_WHL}" ];then
wget -q --show-progress https://nvidia.box.com/shared/static/ssf2v7pf5i245fk4i0q926hy4imzs2ph.whl -O ${TORCH_WHL}
fi
python3 -m pip install ${TORCH_WHL}
python3 -m pip install numpy
sudo apt install libopenblas-dev -y
python3 -c "import torch; print(torch.__version__)"
}
install_torchvision() {
version=`python3 -c "import torchvision; print(torchvision.__version__)"`
if [ -n "$version" ];then
return 0
fi
sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev libavcodec-dev libavformat-dev libswscale-dev -y
if [ ! -e "torchvision" ];then
git clone https://github.com/pytorch/vision torchvision --branch v0.11.1 --depth=1
fi
cd torchvision
export BUILD_VERSION=0.11.1
python3 -m pip install -e .
python3 -c "import torchvision; print(torchvision.__version__)"
cd -
}
install_cmake() {
command -v cmake > /dev/null 2>&1 || {
python3 -m pip install cmake
}
echo "cmake installed $(which cmake)"
}
install_tensorrt() {
echo 'export PYTHONPATH=/usr/lib/python3.8/dist-packages:${PYTHONPATH}' >> ~/mmdeploy.env
export PYTHONPATH=/usr/lib/python3.8/dist-packages:${PYTHONPATH}
echo 'export TENSORRT_DIR=/usr/include/aarch64-linux-gnu' >> ~/mmdeploy.env
export TENSORRT_DIR=/usr/include/aarch64-linux-gnu
echo 'export PATH=$PATH:/usr/local/cuda/bin' >> ~/mmdeploy.env
export PATH=$PATH:/usr/local/cuda/bin
echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64' >> ~/mmdeploy.env
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
echo 'export CUDA_HOME=/usr/local/cuda-11' >> ~/mmdeploy.env
export CUDA_HOME=/usr/local/cuda-11
echo 'export CUDA_ROOT=/usr/local/cuda-11' >> ~/mmdeploy.env
export CUDA_ROOT=/usr/local/cuda-11
python -c "import tensorrt; print(tensorrt.__version__)"
}
install_mmcv_pycuda() {
version=`python3 -c "import mmcv; print(mmcv.__version__)"`
if [ -n "$version" ];then
return 0
fi
# try prebuilt .whl
board=`cat /etc/nv_tegra_release | awk '{print $9}'`
release=`cat /etc/nv_tegra_release | awk '{print $2}'`
revision=`cat /etc/nv_tegra_release | awk '{print $5}'`
if [ ${board} = "t186ref," ];then
if [ ${release} = "R34," ];then
if [ ${revision} = "1.1," ];then
# use prebuilt whl
wget -q --show-progress --https://github.com/tpoisonooo/mmcv-jetson-orin-prebuilt-whl/raw/main/mmcv_full-1.5.1-cp38-cp38-linux_aarch64.whl
python3 -m pip install mmcv_full-1.5.1-cp38-cp38-linux_aarch64.whl
wget https://github.com/tpoisonooo/mmcv-jetson-orin-prebuilt-whl/raw/main/pycuda-2022.1-cp38-cp38-linux_aarch64.whl
python3 -m pip install pycuda-2022.1-cp38-cp38-linux_aarch64.whl
fi
fi
elif [ ! -e "mmcv" ];then
# source build mmcv and pycuda
sudo apt-get install -y libssl-dev
git clone https://github.com/open-mmlab/mmcv.git --branch v1.5.1 --depth=1
cd mmcv
echo 'Building mmcv-full with MMCV_WITH_OPS=1 and pycuda, it may take an hour, please wait..'
MMCV_WITH_OPS=1 python3 -m pip install -e .
python3 -m pip install pycuda
cd -
fi
python3 -c "import mmcv; print(mmcv.__version__)"
}
install_pplcv() {
if [ ! -e "ppl.cv" ];then
git clone https://github.com/openppl-public/ppl.cv.git --depth=1 --recursive
fi
cd ppl.cv
./build.sh cuda
echo "PPLCV_DIR=$(pwd)" >> ~/mmdeploy.env
export PPLCV_DIR=$(pwd)
cd -
}
install_mmdeploy() {
sudo apt-get install -y pkg-config libhdf5-103 libhdf5-dev libspdlog-dev
python3 -m pip install onnx
python3 -m pip install versioned-hdf5
# build and install mmdeploy
cd ../mmdeploy
git submodule init
git submodule update
if [ ! -e "build" ];then
mkdir -p build
fi
cd build
cmake .. \
-DMMDEPLOY_BUILD_SDK=ON \
-DMMDEPLOY_BUILD_SDK_PYTHON_API=ON \
-DMMDEPLOY_BUILD_EXAMPLES=ON \
-DMMDEPLOY_TARGET_DEVICES="cuda;cpu" \
-DMMDEPLOY_TARGET_BACKENDS="trt" \
-DMMDEPLOY_CODEBASES=all \
-Dpplcv_DIR=${PPLCV_DIR}/cuda-build/install/lib/cmake/ppl
make -j 7 && make install
cd -
python3 -m pip install -v -e .
python3 tools/check_env.py
}
show_env() {
echo ""
echo "----------------------------------------------------------------------------------------------------------"
echo '>> Install finished, `source ~/mmdeploy.env` to setup your environment !'
cat ~/mmdeploy.env
echo "----------------------------------------------------------------------------------------------------------"
}
# setup env
echo "" > ~/mmdeploy.env
echo 'export OPENBLAS_CORETYPE=ARMV8' >> ~/mmdeploy.env
export OPENBLAS_CORETYPE=ARMV8
echo 'export ARCH=aarch64' >> ~/mmdeploy.env
export ARCH=aarch64
check_python_38
if [ ! -e "../mmdeploy-dep" ];then
mkdir ../mmdeploy-dep
fi
cd ../mmdeploy-dep
echo $(pwd)
install_torch
install_torchvision
install_cmake
install_tensorrt
install_mmcv_pycuda
install_pplcv
install_mmdeploy
show_env