186 lines
5.7 KiB
Bash
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
|