mirror of
https://github.com/zebrajr/pytorch.git
synced 2025-12-07 12:21:27 +01:00
Summary: Pull Request resolved: https://github.com/pytorch/pytorch/pull/68247 This splits `Functions.h`, `Operators.h`, `NativeFunctions.h` and `NativeMetaFunctions.h` into seperate headers per operator base name. With `at::sum` as an example, we can include: ```cpp <ATen/core/sum.h> // Like Functions.h <ATen/core/sum_ops.h> // Like Operators.h <ATen/core/sum_native.h> // Like NativeFunctions.h <ATen/core/sum_meta.h> // Like NativeMetaFunctions.h ``` The umbrella headers are still being generated, but all they do is include from the `ATen/ops' folder. Further, `TensorBody.h` now only includes the operators that have method variants. Which means files that only include `Tensor.h` don't need to be rebuilt when you modify function-only operators. Currently there are about 680 operators that don't have method variants, so this is potentially a significant win for incremental builds. Test Plan: Imported from OSS Reviewed By: mrshenli Differential Revision: D32596272 Pulled By: albanD fbshipit-source-id: 447671b2b6adc1364f66ed9717c896dae25fa272
68 lines
1.5 KiB
Python
68 lines
1.5 KiB
Python
import subprocess
|
|
import sys
|
|
import os
|
|
from typing import List
|
|
|
|
|
|
def run_cmd(cmd: List[str]) -> None:
|
|
print(f"Running: {cmd}")
|
|
result = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE,)
|
|
stdout, stderr = result.stdout.decode("utf-8").strip(), result.stderr.decode("utf-8").strip()
|
|
print(stdout)
|
|
print(stderr)
|
|
if result.returncode != 0:
|
|
print(f"Failed to run {cmd}")
|
|
exit(1)
|
|
|
|
|
|
def run_timed_cmd(cmd: List[str]) -> None:
|
|
run_cmd(["time"] + cmd)
|
|
|
|
|
|
def update_submodules() -> None:
|
|
run_cmd(["git", "submodule", "update", "--init", "--recursive"])
|
|
|
|
|
|
def gen_compile_commands() -> None:
|
|
os.environ["USE_NCCL"] = "0"
|
|
os.environ["USE_DEPLOY"] = "1"
|
|
os.environ["CC"] = "clang"
|
|
os.environ["CXX"] = "clang++"
|
|
run_timed_cmd([sys.executable, "setup.py", "--cmake-only", "build"])
|
|
|
|
|
|
def run_autogen() -> None:
|
|
run_timed_cmd(
|
|
[
|
|
sys.executable,
|
|
"-m",
|
|
"tools.codegen.gen",
|
|
"-s",
|
|
"aten/src/ATen",
|
|
"-d",
|
|
"build/aten/src/ATen",
|
|
"--per-operator-headers",
|
|
]
|
|
)
|
|
|
|
run_timed_cmd(
|
|
[
|
|
sys.executable,
|
|
"tools/setup_helpers/generate_code.py",
|
|
"--native-functions-path",
|
|
"aten/src/ATen/native/native_functions.yaml",
|
|
"--nn-path",
|
|
"aten/src",
|
|
]
|
|
)
|
|
|
|
|
|
def generate_build_files() -> None:
|
|
update_submodules()
|
|
gen_compile_commands()
|
|
run_autogen()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
generate_build_files()
|