pytorch/tools
Laith Sakka e444cd24d4 Remove guard_size_oblivious from default contiguity python check, and add aten.sym_is_contiguous. (#159197)
This might cause some new DDEs on call sites that do not use is_contiguous_or_false() or sym_is_contiguous()
but want to find those call sites to handle this properly by calling  is_contiguous_or_false() and not is_contiguous() explitly when appropriate.
I had to fix one issue after removing the implicit size oblivious reasoning. here is context

we defined in this https://github.com/pytorch/pytorch/pull/157472 sym_is_contiguous to be the function computing contiguity for dynamic shapes in c++. It returns a symbolic expression that represents contiguity and guaranteed not to throw a DDE.

when people call is_contiguous we do sym_is_contiguous().guard_bool()
when people call is_contiguous_or_false we do sym_is_contiguous().guard_or_false()

one issue not handled well was this path
```
c10::SymBool TensorImpl::sym_is_contiguous_custom(
    at::MemoryFormat memory_format) const {
  if (C10_UNLIKELY(matches_python_custom(SizesStridesPolicy::CustomStrides))) {
    return pyobj_slot_.load_pyobj_interpreter()->is_contiguous(
        this, memory_format);
  }

  return sym_is_contiguous_default(memory_format);
}
```
namely if we call sym_is_contiguous_custom but we have matches_python_custom(SizesStridesPolicy::CustomStrides) return true , then we used to call is_contiguous(this, memory_format);

This used to go through the load_pyobj_interpreter and end up calling the python is_contiguous call which used implicit size oblivious reasoning.
once we removed that implicit size oblivious reasoning, the right thing we want is to call
return pyobj_slot_.load_pyobj_interpreter()->sym_is_contiguous(this, memory_format);
otherwise we would get DDE even if the caller is doing sym_is_contiguous.

so I had to define it for pyinterpreter, and then I had to override it for nested tensors.

Pull Request resolved: https://github.com/pytorch/pytorch/pull/159197
Approved by: https://github.com/ezyang
2025-08-16 09:15:58 +00:00
..
alerts [BE][Easy] do not install yanked types-pkg-resources in lint environment (#156462) 2025-06-20 16:00:43 +00:00
amd_build Add a stable TORCH_LIBRARY to C shim (#148124) 2025-03-11 19:12:46 +00:00
autograd Remove guard_size_oblivious from default contiguity python check, and add aten.sym_is_contiguous. (#159197) 2025-08-16 09:15:58 +00:00
bazel_tools [BE] fix typos in tools/ (#156082) 2025-06-17 19:25:50 +00:00
build/bazel [CI] update flake8 and mypy lint dependencies (#158720) 2025-07-29 08:05:56 +00:00
build_defs [BE] fix typos in tools/ (#156082) 2025-06-17 19:25:50 +00:00
code_analyzer [BE] fix typos in tools/ (#156082) 2025-06-17 19:25:50 +00:00
code_coverage [BE] fix typos in tools/ (#156082) 2025-06-17 19:25:50 +00:00
config [BE] fix typos in tools/ (#156082) 2025-06-17 19:25:50 +00:00
coverage_plugins_package [BE] fix PYPROJECT linting errors in test/ and tools/ (#156021) 2025-06-20 06:19:05 +00:00
dynamo [dynamo] lintrunner for gb_registry adds/updates (#158460) 2025-07-23 21:02:54 +00:00
flight_recorder [FR] Don't check incomplete ranks for printing (#160195) 2025-08-14 18:19:45 +00:00
gdb
github [BE][CI] bump ruff to 0.9.0: string quote styles (#144569) 2025-02-24 19:56:09 +00:00
iwyu [BE][CI] bump ruff to 0.9.0: string quote styles (#144569) 2025-02-24 19:56:09 +00:00
jit Revert "Use absolute path path.resolve() -> path.absolute() (#129409)" 2025-01-04 14:17:20 +00:00
linter [Linter] Expanding the scope of detecting device-bias code. (#159949) 2025-08-09 09:41:16 +00:00
lite_interpreter Move use of c10::string_view to std::string_view (#152509) 2025-06-25 01:57:49 +00:00
lldb [BE] Remove torch deploy | remove torch deploy specific files (#158290) 2025-07-30 01:36:03 +00:00
packaging [BE][EZ] Delete remains of split-build logic (#159990) 2025-08-07 01:59:30 +00:00
pyi [BE] remove duplicates in generated torch._VF.__all__ (#157365) 2025-07-01 15:43:20 +00:00
rules
rules_cc
setup_helpers Help fix numpy detection in cross compiled layouts (#137084) 2025-07-29 12:08:56 +00:00
shared
stats Track monitor (#156907) 2025-07-18 22:54:13 +00:00
test [inductor] Fix set_linter's handling of f-strings for Python 3.12 and up (fix #159056) (#159252) 2025-07-31 12:56:09 +00:00
testing [BE]: ruff PLC0207 - use maxsplit kwarg (#160107) 2025-08-08 03:14:59 +00:00
__init__.py
bazel.bzl Migrate c10/macros/cmake_macros.h.in to torch/headeronly (#158035) 2025-07-15 19:52:59 +00:00
BUCK.bzl [BE] Cleanup old ExecuTorch codegen and runtime code (#154165) 2025-06-07 06:54:12 +00:00
BUCK.oss
build_libtorch.py [BE][Easy] use pathlib.Path instead of dirname / ".." / pardir (#129374) 2024-12-29 17:23:13 +00:00
build_pytorch_libs.py Don't build nccl when distributed is disabled (#160086) 2025-08-08 17:19:16 +00:00
build_with_debinfo.py [build] modernize build-frontend: python setup.py develop/install -> [uv ]pip install --no-build-isolation [-e ]. (#156027) 2025-07-09 11:24:27 +00:00
download_mnist.py Fix broken URLs (#152237) 2025-04-27 09:56:42 +00:00
extract_scripts.py mypy 1.16.0 (#155821) 2025-06-14 18:18:43 +00:00
gen_flatbuffers.sh
gen_vulkan_spv.py [BE][Ez]: FURB148 - remove useless enumerate calls (#145619) 2025-01-24 23:37:15 +00:00
generate_torch_version.py [BE][Easy] do not install yanked types-pkg-resources in lint environment (#156462) 2025-06-20 16:00:43 +00:00
generated_dirs.txt
git_add_generated_dirs.sh
git_reset_generated_dirs.sh
nightly_hotpatch.py
nightly.py [BE][Easy] respect os.environ in subprocess calls in tools/nightly.py (#159572) 2025-08-01 20:40:31 +00:00
nvcc_fix_deps.py [BE] fix typos in tools/ (#156082) 2025-06-17 19:25:50 +00:00
optional_submodules.py [BE] Make Eigen an optional dependency (#155955) 2025-06-21 03:02:02 +00:00
README.md
render_junit.py
substitute.py
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.

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: