blob: d7affe52a8e01f35a38dbe3585998fbd9db34b9d [file] [log] [blame]
import os
import sys
import multiprocessing
from .env import (IS_ARM, IS_DARWIN, IS_LINUX, IS_PPC, IS_WINDOWS,
check_env_flag, check_negative_env_flag,
hotpatch_build_env_vars)
hotpatch_build_env_vars()
from .build import (BLAS, BUILD_BINARY, BUILD_CAFFE2_OPS, BUILD_TEST,
USE_FBGEMM, USE_FFMPEG, USE_LEVELDB, USE_LMDB, USE_OPENCV,
USE_REDIS, USE_TENSORRT, USE_ZSTD, CUDA_NVCC_EXECUTABLE)
from .cuda import CUDA_HOME, CUDA_VERSION, USE_CUDA
from .cudnn import CUDNN_INCLUDE_DIR, CUDNN_LIB_DIR, CUDNN_LIBRARY, USE_CUDNN
from .dist_check import USE_DISTRIBUTED, USE_GLOO_IBVERBS
from .miopen import (MIOPEN_INCLUDE_DIR, MIOPEN_LIB_DIR, MIOPEN_LIBRARY,
USE_MIOPEN)
from .nccl import (NCCL_INCLUDE_DIR, NCCL_LIB_DIR, NCCL_ROOT_DIR,
NCCL_SYSTEM_LIB, USE_NCCL, USE_SYSTEM_NCCL)
from .nnpack import USE_NNPACK
from .nvtoolext import NVTOOLEXT_HOME
from .qnnpack import USE_QNNPACK
from .rocm import ROCM_HOME, ROCM_VERSION, USE_ROCM
DEBUG = check_env_flag('DEBUG')
REL_WITH_DEB_INFO = check_env_flag('REL_WITH_DEB_INFO')
BUILD_PYTORCH = check_env_flag('BUILD_PYTORCH')
# ppc64le and aarch64 do not support MKLDNN
if IS_PPC or IS_ARM:
USE_MKLDNN = check_env_flag('USE_MKLDNN', 'OFF')
else:
USE_MKLDNN = check_env_flag('USE_MKLDNN', 'ON')
USE_CUDA_STATIC_LINK = check_env_flag('USE_CUDA_STATIC_LINK')
RERUN_CMAKE = True
NUM_JOBS = multiprocessing.cpu_count()
max_jobs = os.getenv("MAX_JOBS")
if max_jobs is not None:
NUM_JOBS = min(NUM_JOBS, int(max_jobs))
ONNX_NAMESPACE = os.getenv("ONNX_NAMESPACE")
if not ONNX_NAMESPACE:
ONNX_NAMESPACE = "onnx_torch"
# Ninja
try:
import ninja
USE_NINJA = True
except ImportError:
USE_NINJA = False
try:
import numpy as np
NUMPY_INCLUDE_DIR = np.get_include()
USE_NUMPY = True
except ImportError:
USE_NUMPY = False
def get_common_env_with_flags():
extra_flags = []
my_env = os.environ.copy()
my_env["PYTORCH_PYTHON"] = sys.executable
my_env["ONNX_NAMESPACE"] = ONNX_NAMESPACE
if BLAS:
my_env["BLAS"] = BLAS
if USE_SYSTEM_NCCL:
my_env["NCCL_ROOT_DIR"] = NCCL_ROOT_DIR
my_env["NCCL_INCLUDE_DIR"] = NCCL_INCLUDE_DIR
my_env["NCCL_SYSTEM_LIB"] = NCCL_SYSTEM_LIB
if USE_CUDA:
my_env["CUDA_BIN_PATH"] = CUDA_HOME
extra_flags += ['--use-cuda']
if IS_WINDOWS:
my_env["NVTOOLEXT_HOME"] = NVTOOLEXT_HOME
if CUDA_NVCC_EXECUTABLE:
my_env["CUDA_NVCC_EXECUTABLE"] = CUDA_NVCC_EXECUTABLE
if USE_CUDA_STATIC_LINK:
extra_flags += ['--cuda-static-link']
if USE_FBGEMM:
extra_flags += ['--use-fbgemm']
if USE_ROCM:
extra_flags += ['--use-rocm']
if USE_NNPACK:
extra_flags += ['--use-nnpack']
if USE_CUDNN:
my_env["CUDNN_LIB_DIR"] = CUDNN_LIB_DIR
my_env["CUDNN_LIBRARY"] = CUDNN_LIBRARY
my_env["CUDNN_INCLUDE_DIR"] = CUDNN_INCLUDE_DIR
if USE_MIOPEN:
my_env["MIOPEN_LIB_DIR"] = MIOPEN_LIB_DIR
my_env["MIOPEN_LIBRARY"] = MIOPEN_LIBRARY
my_env["MIOPEN_INCLUDE_DIR"] = MIOPEN_INCLUDE_DIR
if USE_MKLDNN:
extra_flags += ['--use-mkldnn']
if USE_QNNPACK:
extra_flags += ['--use-qnnpack']
if USE_GLOO_IBVERBS:
extra_flags += ['--use-gloo-ibverbs']
if not RERUN_CMAKE:
extra_flags += ['--dont-rerun-cmake']
my_env["BUILD_TORCH"] = "ON"
my_env["BUILD_TEST"] = "ON" if BUILD_TEST else "OFF"
my_env["BUILD_CAFFE2_OPS"] = "ON" if BUILD_CAFFE2_OPS else "OFF"
my_env["INSTALL_TEST"] = "ON" if BUILD_TEST else "OFF"
my_env["USE_LEVELDB"] = "ON" if USE_LEVELDB else "OFF"
my_env["USE_LMDB"] = "ON" if USE_LMDB else "OFF"
my_env["USE_OPENCV"] = "ON" if USE_OPENCV else "OFF"
my_env["USE_TENSORRT"] = "ON" if USE_TENSORRT else "OFF"
my_env["USE_FFMPEG"] = "ON" if USE_FFMPEG else "OFF"
my_env["USE_DISTRIBUTED"] = "ON" if USE_DISTRIBUTED else "OFF"
my_env["USE_SYSTEM_NCCL"] = "ON" if USE_SYSTEM_NCCL else "OFF"
return my_env, extra_flags
def get_libtorch_env_with_flags():
my_env, extra_flags = get_common_env_with_flags()
return my_env, extra_flags
def get_pytorch_env_with_flags():
my_env, extra_flags = get_common_env_with_flags()
my_env["BUILD_BINARY"] = "ON" if BUILD_BINARY else "OFF"
my_env["BUILD_PYTHON"] = "ON"
my_env["NUM_JOBS"] = str(NUM_JOBS)
if not IS_WINDOWS:
if USE_NINJA:
my_env["CMAKE_GENERATOR"] = '-GNinja'
my_env["CMAKE_INSTALL"] = 'ninja install'
else:
my_env['CMAKE_GENERATOR'] = ''
my_env['CMAKE_INSTALL'] = 'make install'
if USE_NUMPY:
my_env["NUMPY_INCLUDE_DIR"] = NUMPY_INCLUDE_DIR
return my_env, extra_flags