pytorch/tools
Mengwei Liu 5c8a9803c8 [torchgen] Support multiple namespace in NativeFunctions.h (#79733)
Summary:
This is a follow up to #78015. This PR
* introduces namespace logic for generating `NativeFunctions.h`.
* adds helper function to extract namespace from string
* relaxes the constraint on the levels we support for custom kernel namespace to 2

Test Plan:
Yaml entry:
```
- func: unsqueeze.out(Tensor(a) self, int dim, *, Tensor(a!) out) -> Tensor(a!)
  variants: function
  device_check: NoCheck
  dispatch:
    CPU: custom_1::custom_2::unsqueeze
```

Generated `NativeFunctions.h`:

```
namespace custom_1 {
namespace custom_2 {
namespace native {
    TORCH_API at::Tensor & unsqueeze(const at::Tensor & self, int64_t dim, at::Tensor & out);
} // namespace native
} // namespace custom_2
} // namespace custom_1

```

Differential Revision: D37198111

Pull Request resolved: https://github.com/pytorch/pytorch/pull/79733
Approved by: https://github.com/bdhirsh
2022-07-08 21:56:52 +00:00
..
amd_build
autograd reinstate size and shape returning symints (#79560) 2022-07-08 01:17:33 +00:00
bazel_tools [bazel] Add --config=shell for easier debugging (#79350) 2022-06-25 02:00:40 +00:00
build_defs Consolidate all python targets in the tools folder (#80408) 2022-06-29 23:27:47 +00:00
code_analyzer
code_coverage
config
coverage_plugins_package
fast_nvcc
gdb
iwyu
jit Consolidate all python targets in the tools folder (#80408) 2022-06-29 23:27:47 +00:00
linter [lint] create a workflow consistency linter (#80200) 2022-07-05 17:08:06 +00:00
lite_interpreter Consolidate all python targets in the tools folder (#80408) 2022-06-29 23:27:47 +00:00
lldb
onnx
pyi Remove split functional wrapper (#74727) 2022-07-08 19:21:22 +00:00
rules
setup_helpers Consolidate all python targets in the tools folder (#80408) 2022-06-29 23:27:47 +00:00
shared
stats [ci] simplify sccache stats uploading (#80806) 2022-07-07 05:12:20 +00:00
test [torchgen] Support multiple namespace in NativeFunctions.h (#79733) 2022-07-08 21:56:52 +00:00
testing [GHA] Add warning when S3 stats for sharding aren't found (#80176) 2022-06-24 04:14:10 +00:00
__init__.py
bazel.bzl
BUCK.bzl Consolidate all python targets in the tools folder (#80408) 2022-06-29 23:27:47 +00:00
BUCK.oss Consolidate all python targets in the tools folder (#80408) 2022-06-29 23:27:47 +00:00
build_libtorch.py
build_pytorch_libs.py
cpuinfo_target_definition.bzl
download_mnist.py
extract_scripts.py
gen_flatbuffers.sh
gen_vulkan_spv.py Consolidate all python targets in the tools folder (#80408) 2022-06-29 23:27:47 +00:00
generate_torch_version.py
generated_dirs.txt
git_add_generated_dirs.sh
git_reset_generated_dirs.sh
miniz_target_definition.bzl
nightly.py
nvcc_fix_deps.py
perf_kernel_defs.bzl [caffe2/perfkernels] Avoid native.host_info() in build files (#80812) 2022-07-06 22:52:59 +00:00
pytorch.version
README.md
render_junit.py
sgx_aten_target_definitions.bzl
sgx_caffe2_target_definitions.bzl [caffe2/perfkernels] Avoid native.host_info() in build files (#80812) 2022-07-06 22:52:59 +00:00
sgx_target_definitions.bzl
substitute.py
target_definitions.bzl
update_masked_docs.py
vscode_settings.py

This folder contains a number of scripts which are used as part of the PyTorch build process. This directory also doubles as a Python module hierarchy (thus the __init__.py).

Overview

Modern infrastructure:

  • autograd - Code generation for autograd. This includes definitions of all our derivatives.
  • jit - Code generation for JIT
  • shared - Generic infrastructure that scripts in tools may find useful.
    • module_loader.py - Makes it easier to import arbitrary Python files in a script, without having to add them to the PYTHONPATH first.

Build system pieces:

  • setup_helpers - Helper code for searching for third-party dependencies on the user system.
  • build_pytorch_libs.py - cross-platform script that builds all of the constituent libraries of PyTorch, but not the PyTorch Python extension itself.
  • build_libtorch.py - Script for building libtorch, a standalone C++ library without Python support. This build script is tested in CI.
  • fast_nvcc - Mostly-transparent wrapper over nvcc that parallelizes compilation when used to build CUDA files for multiple architectures at once.
    • fast_nvcc.py - Python script, entrypoint to the fast nvcc wrapper.

Developer tools which you might find useful:

Important if you want to run on AMD GPU:

  • amd_build - HIPify scripts, for transpiling CUDA into AMD HIP. Right now, PyTorch and Caffe2 share logic for how to do this transpilation, but have separate entry-points for transpiling either PyTorch or Caffe2 code.
    • build_amd.py - Top-level entry point for HIPifying our codebase.

Tools which are only situationally useful: