mirror of
https://github.com/saymrwulf/pytorch.git
synced 2026-05-14 20:57:59 +00:00
Summary: Pull Request resolved: https://github.com/pytorch/pytorch/pull/26440 As we are optimizing build size for Android/iOS, it starts diverging from default build on several build options, e.g.: - USE_STATIC_DISPATCH=ON; - disable autograd; - disable protobuf; - no caffe2 ops; - no torch/csrc/api; ... Create this build_mobile.sh script to 'simulate' mobile build mode with host toolchain so that people who don't work on mobile regularly can debug Android/iOS CI error more easily. It might also be used to build libtorch on devices like raspberry pi natively. Test Plan: - run scripts/build_mobile.sh -DBUILD_BINARY=ON - run build_mobile/bin/speed_benchmark_torch on host machine Differential Revision: D17466580 Pulled By: ljk53 fbshipit-source-id: 7abb6b50335af5b71e58fb6d6f9c38eb74bd5781
68 lines
2.1 KiB
Bash
Executable file
68 lines
2.1 KiB
Bash
Executable file
#!/bin/bash
|
|
##############################################################################
|
|
# Example command to build the mobile target.
|
|
##############################################################################
|
|
#
|
|
# This script shows how one can build a libtorch library optimized for mobile
|
|
# devices using host toolchain.
|
|
|
|
set -e
|
|
|
|
export PYTORCH_BUILD_MOBILE=1
|
|
CAFFE2_ROOT="$( cd "$(dirname "$0")"/.. ; pwd -P)"
|
|
|
|
echo "Bash: $(/bin/bash --version | head -1)"
|
|
echo "Caffe2 path: $CAFFE2_ROOT"
|
|
|
|
# Now, actually build the Android target.
|
|
BUILD_ROOT=${BUILD_ROOT:-"$CAFFE2_ROOT/build_mobile"}
|
|
INSTALL_PREFIX=${BUILD_ROOT}/install
|
|
mkdir -p $BUILD_ROOT
|
|
cd $BUILD_ROOT
|
|
|
|
CMAKE_ARGS=()
|
|
CMAKE_ARGS+=("-DBUILD_CAFFE2_MOBILE=OFF")
|
|
CMAKE_ARGS+=("-DCMAKE_PREFIX_PATH=$(python -c 'from distutils.sysconfig import get_python_lib; print(get_python_lib())')")
|
|
CMAKE_ARGS+=("-DPYTHON_EXECUTABLE=$(python -c 'import sys; print(sys.executable)')")
|
|
CMAKE_ARGS+=("-DBUILD_CUSTOM_PROTOBUF=OFF")
|
|
CMAKE_ARGS+=("-DBUILD_SHARED_LIBS=OFF")
|
|
|
|
# If Ninja is installed, prefer it to Make
|
|
if [ -x "$(command -v ninja)" ]; then
|
|
CMAKE_ARGS+=("-GNinja")
|
|
fi
|
|
|
|
# Disable unused dependencies
|
|
CMAKE_ARGS+=("-DUSE_CUDA=OFF")
|
|
CMAKE_ARGS+=("-DUSE_GFLAGS=OFF")
|
|
CMAKE_ARGS+=("-DUSE_OPENCV=OFF")
|
|
CMAKE_ARGS+=("-DUSE_LMDB=OFF")
|
|
CMAKE_ARGS+=("-DUSE_LEVELDB=OFF")
|
|
CMAKE_ARGS+=("-DUSE_MPI=OFF")
|
|
CMAKE_ARGS+=("-DUSE_OPENMP=OFF")
|
|
|
|
# Only toggle if VERBOSE=1
|
|
if [ "${VERBOSE:-}" == '1' ]; then
|
|
CMAKE_ARGS+=("-DCMAKE_VERBOSE_MAKEFILE=1")
|
|
fi
|
|
|
|
# Use-specified CMake arguments go last to allow overridding defaults
|
|
CMAKE_ARGS+=($@)
|
|
|
|
cmake "$CAFFE2_ROOT" \
|
|
-DCMAKE_INSTALL_PREFIX=$INSTALL_PREFIX \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
"${CMAKE_ARGS[@]}"
|
|
|
|
# Cross-platform parallel build
|
|
if [ -z "$MAX_JOBS" ]; then
|
|
if [ "$(uname)" == 'Darwin' ]; then
|
|
MAX_JOBS=$(sysctl -n hw.ncpu)
|
|
else
|
|
MAX_JOBS=$(nproc)
|
|
fi
|
|
fi
|
|
|
|
echo "Will install headers and libs to $INSTALL_PREFIX for further project usage."
|
|
cmake --build . --target install -- "-j${MAX_JOBS}"
|
|
echo "Installation completed, now you can copy the headers/libs from $INSTALL_PREFIX to your project directory."
|