mirror of
https://github.com/zebrajr/pytorch.git
synced 2025-12-06 12:20:52 +01:00
Summary: Currently when building extensions, variables such as USE_CUDA, USE_CUDNN are used to determine what libraries should be linked. But we should use what CMake has detected, because: 1. If CMake found them unavailable but the variables say some libraries should be linked, the build would fail. 2. If the first build is made using a set of non-default build options, rebuild must have these option passed to setup.py again, otherwise the extension build process is inconsistent with CMake. For example, ```bash # First build USE_CUDA=0 python setup.py install # Subsequent builds like this would fail, unless "build/" is deleted python setup.py install ``` This commit addresses the above issues by using variables from CMakeCache.txt when building the extensions. --- The changes in `setup.py` may look lengthy, but the biggest changed block is mostly moving them into a function `configure_extension_build` (along with some variable names changed to `cmake_cache_vars['variable name']` and other minor changes), because it must be called after CMake has been called (and thus the options used and system environment detected by CMake become available). Pull Request resolved: https://github.com/pytorch/pytorch/pull/21653 Differential Revision: D15824506 Pulled By: ezyang fbshipit-source-id: 1e1eb7eec7debba30738f65472ccad966ee74028
24 lines
1018 B
Python
24 lines
1018 B
Python
import argparse
|
|
from os.path import dirname, abspath
|
|
import sys
|
|
|
|
# By appending pytorch_root to sys.path, this module can import other torch
|
|
# modules even when run as a standalone script. i.e., it's okay either you
|
|
# do `python build_libtorch.py` or `python -m tools.build_libtorch`.
|
|
pytorch_root = dirname(dirname(abspath(__file__)))
|
|
sys.path.append(pytorch_root)
|
|
|
|
# If you want to modify flags or environmental variables that is set when
|
|
# building torch, you should do it in tools/setup_helpers/configure.py.
|
|
# Please don't add it here unless it's only used in LibTorch.
|
|
from tools.build_pytorch_libs import build_caffe2
|
|
from tools.setup_helpers.cmake import CMake
|
|
|
|
if __name__ == '__main__':
|
|
# Placeholder for future interface. For now just gives a nice -h.
|
|
parser = argparse.ArgumentParser(description='Build libtorch')
|
|
options = parser.parse_args()
|
|
|
|
build_caffe2(version=None, cmake_python_library=None, build_python=False,
|
|
rerun_cmake=True, cmake_only=False, cmake=CMake('.'))
|