How to build libtorch & torchvision - t-kuha/mpsoc-library GitHub Wiki
Environment
- Host: Ubuntu 18.04 (x86_64)
- CMake: 3.18.1
- Toolchain: Vitis 2019.2
- libtorch: PyTorch 1.6.0
- tochvision: 0.7.0
libtorch
Preparation
- Get source & checkout ver. 1.6.0
$ git clone --recursive https://github.com/pytorch/pytorch
$ cd pytorch/
$ export LIBTORCH_ROOT=$(pwd)
$ git checkout v1.6.0
$ git submodule sync
$ git submodule update --init --recursive
Build
- First, build protoc for host
$ scripts/build_host_protoc.sh
$ cd third_party/sleef
$ mkdir build
$ cd build/
$ /usr/local/bin/cmake .. -G"Unix Makefiles" \
-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=_install -DBUILD_TESTS=OFF
$ /usr/local/bin/cmake --build . --target install -- -j$(nproc)
$ cd ../..
- Build libtorch (along with caffe2)
# Get dependency files
$ git clone -b 2019.2 https://github.com/t-kuha/mpsoc-library.git
$ export DEPEND_DIR=$(pwd)/mpsoc-library
$ /usr/local/bin/cmake ${LIBTORCH_ROOT} -G"Unix Makefiles" \
-DCMAKE_INSTALL_PREFIX=$(pwd)/_install -DCMAKE_BUILD_TYPE=Release \
-DCAFFE2_CUSTOM_PROTOC_EXECUTABLE=${LIBTORCH_ROOT}/build_host_protoc/bin/protoc \
-DCMAKE_TOOLCHAIN_FILE=toolchain.make \
-DCMAKE_PREFIX_PATH=${DEPEND_DIR}/dl-framework/caffe-dependency \
-DPYTHON_EXECUTABLE=$(which python) \
-C${DEPEND_DIR}/dl-framework/libtorch/TryRunResults.cmake \
-DBUILDING_WITH_TORCH_LIBS=ON \
-DBUILD_BINARY=ON \
-DBUILD_CAFFE2_MOBILE=ON -DBUILD_CAFFE2_OPS=ON \
-DBUILD_CUSTOM_PROTOBUF=ON -DBUILD_DFT=OFF \
-DBUILD_DOCS=OFF \
-DBUILD_GMOCK=ON -DBUILD_GNUABI_LIBS=OFF \
-DBUILD_LIBM=ON \
-DBUILD_ONNX_PYTHON=OFF -DBUILD_PYTHON=OFF \
-DBUILD_QUAD=OFF -DBUILD_SHARED_LIBS=ON \
-DBUILD_TEST=ON -DBUILD_TESTS=ON \
-DUSE_ASAN=OFF \
-DUSE_CUDA=OFF -DUSE_DISTRIBUTED=OFF \
-DUSE_FBGEMM=ON -DUSE_FFMPEG=ON \
-DUSE_GFLAGS=ON -DUSE_GLOG=ON \
-DUSE_GLOO=OFF \
-DUSE_LEVELDB=ON \
-DUSE_LITE_PROTO=OFF -DUSE_LMDB=ON \
-DUSE_METAL=OFF \
-DUSE_MKLDNN=OFF -DUSE_MPI=OFF \
-DUSE_NATIVE_ARCH=OFF -DUSE_NNAPI=OFF \
-DUSE_NNPACK=ON -DUSE_NUMA=OFF \
-DUSE_NUMPY=ON -DUSE_OBSERVERS=OFF \
-DUSE_OPENCL=OFF -DUSE_OPENCV=ON \
-DUSE_OPENMP=ON -DUSE_PROF=OFF \
-DUSE_PYTORCH_QNNPACK=OFF -DUSE_QNNPACK=ON \
-DUSE_REDIS=OFF \
-DUSE_ROCKSDB=ON -DUSE_ROCM=OFF \
-DUSE_SNPE=OFF -DUSE_STATIC_DISPATCH=OFF \
-DUSE_SYSTEM_EIGEN_INSTALL=OFF -DUSE_TBB=OFF \
-DUSE_TENSORRT=OFF -DUSE_ZMQ=ON -DUSE_ZSTD=OFF \
-DBLAS=OpenBLAS \
-DCMAKE_CXX_FLAGS="-L${DEPEND_DIR}/dl-framework/caffe-dependency/lib \
-llmdb -lleveldb -lsnappy -lopencv_core -lopencv_highgui -lopencv_imgcodecs \
-lopencv_imgproc -lopencv_video -lopencv_videoio -lzmq -lrocksdb" \
-DCMAKE_CROSSCOMPILING=ON -DNATIVE_BUILD_DIR=${LIBTORCH_ROOT}/third_party/sleef/build/
$ /usr/local/bin/cmake --build . --target install -- -j$(nproc)
torchvision
Preparation
$ wget https://github.com/pytorch/vision/archive/v0.7.0.tar.gz
$ tar xf v0.7.0.tar.gz
$ cd vision-0.7.0/
$ mkdir _mpsoc
$ cd _mpsoc
Build
$ /usr/local/bin/cmake .. -G"Unix Makefiles" \
-DCMAKE_INSTALL_PREFIX=$(pwd)/_install \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_TOOLCHAIN_FILE=toolchain.make \
-DTorch_DIR=${DEPEND_DIR}/dl-framework/libtorch/share/cmake/Torch \
-DCMAKE_PREFIX_PATH=${DEPEND_DIR}/dl-framework/caffe-dependency
# Edit CMakeFiles/torchvision.dir/flags.make
# "-D_GLIBCXX_USE_CXX11_ABI=" -> "-D_GLIBCXX_USE_CXX11_ABI=0"
$ /usr/local/bin/cmake --build . --config Release --target install -- -j$(nproc)