How to build libtorch - t-kuha/zynq-library GitHub Wiki

Environment

  • Host: Ubuntu 16.04 (x64)
  • CMake: 3.13.3
  • Pytorch: 1.1.0
  • PetaLinux: 2018.3

Preparation

  • Get source & checkout ver. 1.1.0
$ git clone --recursive https://github.com/pytorch/pytorch
$ cd pytorch/
$ git checkout v1.1.0
$ git submodule sync
$ git submodule update --init --recursive
  • Build protobuf compiler for host
$ mkdir _mpsoc
$ cd _mpsoc/
$ ../scripts/build_host_protoc.sh

  • Build sleef
$ cd third_party/sleef
$ mkdir build
$ cd build/

$ cmake .. -G"Unix Makefiles" -DCMAKE_BUILD_TYPE=Release
$ /usr/local/bin/cmake --build . -- -j$(nproc)
  • Build libtorch (along with caffe2)
# Get dependency files
$ git clone -b 2018.3 https://github.com/t-kuha/zynq-library.git 
$ export DEPEND_DIR=$(pwd)/mpsoc-library 

# In order for CMake to detect OpenBLAS
$ export OpenBLAS_HOME=${DEPEND_DIR}/dl-framework/caffe-dependency/include/openblas
$ export OpenBLAS=${DEPEND_DIR}/dl-framework/caffe-dependency

$ export CAFFE2_ROOT=$(dirname $(pwd))
$ cmake ${CAFFE2_ROOT} \
-G"Ninja" \
-C TryRunResults.cmake \
-DCMAKE_INSTALL_PREFIX=$(pwd)/_install \
-DCMAKE_BUILD_TYPE=Release \
-DCAFFE2_CUSTOM_PROTOC_EXECUTABLE=${CAFFE2_ROOT}/build_host_protoc/bin/protoc \
-DCMAKE_TOOLCHAIN_FILE=toolchain.make \
-DCMAKE_PREFIX_PATH=${DEPEND_DIR}/dl-framework/caffe-dependency \
-DCMAKE_CXX_FLAGS="-L${DEPEND_DIR}/dl-framework/caffe-dependency/lib -L${DEPEND_DIR}/imaging/ffmpeg/lib -llmdb -lleveldb -lsnappy -lopencv_core -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc -lopencv_video -lopencv_videoio -lavcodec -lavfilter -lavformat -lavutil -lswresample -lswscale -lopenblas" \
-DBUILDING_WITH_TORCH_LIBS=ON \
-DBUILD_TORCH=ON \
-DBUILD_TEST=OFF \
-DBUILD_BINARY=ON \
-DBUILD_SHARED_LIBS=ON \
-DBUILD_PYTHON=OFF \
-DUSE_CUDA=OFF \
-DUSE_FFMPEG=ON \
-DUSE_GFLAGS=ON \
-DUSE_GLOG=ON \
-DUSE_OPENCV=ON \
-DUSE_LMDB=ON \
-DUSE_LEVELDB=ON \
-DUSE_MPI=OFF \
-DUSE_NCCL=OFF \
-DUSE_NUMA=OFF \
-DUSE_OPENMP=OFF \
-DUSE_MKLDNN=OFF \
-DBUILD_ATEN_ONLY=OFF \
-DBLAS=OpenBLAS \
-D_FFMPEG_AVCODEC_INCLUDE_DIRS=${DEPEND_DIR}/imaging/ffmpeg/include \
-D_FFMPEG_AVCODEC_LIBRARY_DIRS=${DEPEND_DIR}/imaging/ffmpeg/lib \
-D_FFMPEG_AVFORMAT_LIBRARY_DIRS=${DEPEND_DIR}/imaging/ffmpeg/lib \
-D_FFMPEG_AVUTIL_LIBRARY_DIRS=${DEPEND_DIR}/imaging/ffmpeg/lib \
-D_FFMPEG_SWSCALE_LIBRARY_DIRS=${DEPEND_DIR}/imaging/ffmpeg/lib \
-DPYTHON_EXECUTABLE=$(which python) \
-DNATIVE_BUILD_DIR=${CAFFE2_ROOT}/third_party/sleef/build

$ /usr/local/bin/cmake --build . --target install -- -j$(nproc)