pytorch/tools
Eli Uriegas b247f87845 tools: Add a tool to build wheels for multiple python versions (#143361)
Adds a tool to build bdist_wheels sequentially for multiple different
python versions (if specified).

The goal of this tool is to eventually be able to utilize this in our
binary build runs to significantly reduce the amount of time we take to
build packages by utilizing a local ccache from the first build.

Tested locally using the following:
```
$ ccache -C # clear cache
# -p could actually reference any python interpreter
$ python tools/packaging/build_wheel.py \
	-p /home/eliuriegas/.local/share/uv/python/cpython-3.12.7-linux-x86_64-gnu/bin/python3.12 \
	-p /home/eliuriegas/.local/share/uv/python/cpython-3.13.0-linux-x86_64-gnu/bin/python3.13 \
	-d dist-multi/
...
2024-12-17 10:48:11,365 - INFO - Build time (3.12.7): 571.440689s
2024-12-17 10:48:11,365 - INFO - Build time (3.13.0): 191.147503s
```

Signed-off-by: Eli Uriegas <eliuriegas@meta.com>
Pull Request resolved: https://github.com/pytorch/pytorch/pull/143361
Approved by: https://github.com/malfet, https://github.com/atalman
2024-12-17 21:56:06 +00:00
..
alerts
amd_build Revert "[ROCm] CK Flash Attention Backend (#138947)" 2024-12-17 16:46:57 +00:00
autograd [gen_autograd_functions] rename some variables (#143166) 2024-12-16 23:18:55 +00:00
bazel_tools
build/bazel Bump certifi from 2024.2.2 to 2024.7.4 in /tools/build/bazel (#130173) 2024-10-28 15:44:49 -07:00
build_defs
code_analyzer [3/N] Apply py39 ruff fixes (#142115) 2024-12-11 17:50:10 +00:00
code_coverage [3/N] Apply py39 ruff fixes (#142115) 2024-12-11 17:50:10 +00:00
config
coverage_plugins_package
dynamo
flight_recorder [fr] recognize all_reduce_barrier as a valid op (#143354) 2024-12-17 21:09:18 +00:00
gdb Add gdb print methods support same as pytorch-lldb (#140935) 2024-11-19 01:28:30 +00:00
github
iwyu
jit [3/N] Apply py39 ruff fixes (#142115) 2024-12-11 17:50:10 +00:00
linter [3/N] Apply py39 ruff fixes (#142115) 2024-12-11 17:50:10 +00:00
lite_interpreter c10::string_view -> std::string_view in more places (#142517) 2024-12-12 19:45:59 +00:00
lldb
onnx [3/N] Apply py39 ruff fixes (#142115) 2024-12-11 17:50:10 +00:00
packaging tools: Add a tool to build wheels for multiple python versions (#143361) 2024-12-17 21:56:06 +00:00
pyi [3/N] Apply py39 ruff fixes (#142115) 2024-12-11 17:50:10 +00:00
rules
rules_cc [BE] Fix incompatible-std-redefinition warning (#141630) 2024-11-27 05:06:36 +00:00
setup_helpers [3/N] Apply py39 ruff fixes (#142115) 2024-12-11 17:50:10 +00:00
shared
stats Fix unused Python variables outside torch/ and test/ (#136359) 2024-12-11 17:10:23 +00:00
test [3/N] Apply py39 ruff fixes (#142115) 2024-12-11 17:50:10 +00:00
testing Fix missing tests on test tool lint job (#143052) 2024-12-12 20:29:32 +00:00
__init__.py
bazel.bzl
BUCK.bzl
BUCK.oss
build_libtorch.py [BE] Rectify some references to caffe2 (#140204) 2024-11-09 14:14:20 +00:00
build_pytorch_libs.py Fix access to _msvccompiler from newer distutils (#141363) 2024-11-25 01:50:47 +00:00
build_with_debinfo.py Improve build_with_deb_info (#138290) 2024-10-18 18:50:12 +00:00
download_mnist.py
extract_scripts.py [3/N] Apply py39 ruff fixes (#142115) 2024-12-11 17:50:10 +00:00
gen_flatbuffers.sh
gen_vulkan_spv.py
generate_torch_version.py Add torch.version.xpu (#139466) 2024-11-09 13:31:21 +00:00
generated_dirs.txt
git_add_generated_dirs.sh
git_reset_generated_dirs.sh
nightly_hotpatch.py [3/N] Apply py39 ruff fixes (#142115) 2024-12-11 17:50:10 +00:00
nightly.py [3/N] Apply py39 ruff fixes (#142115) 2024-12-11 17:50:10 +00:00
nvcc_fix_deps.py
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: