mirror of
https://github.com/pytorch/pytorch.git
synced 2025-10-21 13:44:15 +08:00
Preferring dash over underscore in command-line options. Add `--command-arg-name` to the argument parser. The old arguments with underscores `--command_arg_name` are kept for backward compatibility.
Both dashes and underscores are used in the PyTorch codebase. Some argument parsers only have dashes or only have underscores in arguments. For example, the `torchrun` utility for distributed training only accepts underscore arguments (e.g., `--master_port`). The dashes are more common in other command-line tools. And it looks to be the default choice in the Python standard library:
`argparse.BooleanOptionalAction`: 4a9dff0e5a/Lib/argparse.py (L893-L895)
```python
class BooleanOptionalAction(Action):
def __init__(...):
if option_string.startswith('--'):
option_string = '--no-' + option_string[2:]
_option_strings.append(option_string)
```
It adds `--no-argname`, not `--no_argname`. Also typing `_` need to press the shift or the caps-lock key than `-`.
Pull Request resolved: https://github.com/pytorch/pytorch/pull/94505
Approved by: https://github.com/ezyang, https://github.com/seemethere
75 lines
1.6 KiB
Python
75 lines
1.6 KiB
Python
import os
|
|
import subprocess
|
|
import sys
|
|
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["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",
|
|
"torchgen.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",
|
|
"--tags-path",
|
|
"aten/src/ATen/native/tags.yaml",
|
|
"--gen-lazy-ts-backend",
|
|
]
|
|
)
|
|
|
|
|
|
def generate_build_files() -> None:
|
|
update_submodules()
|
|
gen_compile_commands()
|
|
run_autogen()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
generate_build_files()
|