blob: 8ca94f934cb8cbbc4842e7a729f4e72890c5d6b5 [file] [log] [blame] [view]
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](autograd) - Code generation for autograd. This
includes definitions of all our derivatives.
* [jit](jit) - Code generation for JIT
* [shared](shared) - Generic infrastructure that scripts in
tools may find useful.
* [module_loader.py](shared/module_loader.py) - Makes it easier
to import arbitrary Python files in a script, without having to add
them to the PYTHONPATH first.
Legacy infrastructure (we should kill this):
* [cwrap](cwrap) - Implementation of legacy code generation for THNN/THCUNN.
This is used by nnwrap.
Build system pieces:
* [setup_helpers](setup_helpers) - Helper code for searching for
third-party dependencies on the user system.
* [build_pytorch_libs.py](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](build_libtorch.py) - Script for building
libtorch, a standalone C++ library without Python support. This
build script is tested in CI.
* [fast_nvcc](fast_nvcc) - Mostly-transparent wrapper over nvcc that
parallelizes compilation when used to build CUDA files for multiple
architectures at once.
* [fast_nvcc.py](fast_nvcc/fast_nvcc.py) - Python script, entrypoint to the
fast nvcc wrapper.
Developer tools which you might find useful:
* [clang_tidy.py](clang_tidy.py) - Script for running clang-tidy
on lines of your script which you changed.
* [extract_scripts.py](extract_scripts.py) - Extract shell scripts from
`.github/workflows/*.yml` into a specified dir, on which
[run_shellcheck.sh](run_shellcheck.sh) can be run. Exits with nonzero status
if any of the extracted scripts contain [GitHub Actions expressions][]: `${{
<expression> }}`
* [git_add_generated_dirs.sh](git_add_generated_dirs.sh) and
[git_reset_generated_dirs.sh](git_reset_generated_dirs.sh) -
Use this to force add generated files to your Git index, so that you
can conveniently run diffs on them when working on code-generation.
(See also [generated_dirs.txt](generated_dirs.txt) which
specifies the list of directories with generated files.)
* [mypy_wrapper.py](mypy_wrapper.py) - Run `mypy` on a single file using the
appropriate subset of our `mypy*.ini` configs.
* [run_shellcheck.sh](run_shellcheck.sh) - Find `*.sh` files (recursively) in
the directories specified as arguments, and run [ShellCheck][] on all of them.
* [test_history.py](test_history.py) - Query S3 to display history of a single
test across multiple jobs over time.
* [trailing_newlines.py](trailing_newlines.py) - Take names of UTF-8 files from
stdin, print names of nonempty files whose contents don't end in exactly one
trailing newline, exit with status 1 if no output printed or 0 if some
filenames were printed.
* [translate_annotations.py](translate_annotations.py) - Read [Flake8][] or
[clang-tidy][] warnings (according to a `--regex`) from a `--file`, convert
to the JSON format accepted by [pytorch/add-annotations-github-action], and
translate line numbers from `HEAD` back in time to the given `--commit` by
running `git diff-index --unified=0` appropriately.
Important if you want to run on AMD GPU:
* [amd_build](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](amd_build/build_amd.py) - Top-level entry
point for HIPifying our codebase.
Tools which are only situationally useful:
* [docker](docker) - Dockerfile for running (but not developing)
PyTorch, using the official conda binary distribution. Context:
https://github.com/pytorch/pytorch/issues/1619
* [download_mnist.py](download_mnist.py) - Download the MNIST
dataset; this is necessary if you want to run the C++ API tests.
* [run-clang-tidy-in-ci.sh](run-clang-tidy-in-ci.sh) - Responsible
for checking that C++ code is clang-tidy clean in CI on Travis
[clang-tidy]: https://clang.llvm.org/extra/clang-tidy/
[flake8]: https://flake8.pycqa.org/en/latest/
[github actions expressions]: https://docs.github.com/en/actions/reference/context-and-expression-syntax-for-github-actions#about-contexts-and-expressions
[pytorch/add-annotations-github-action]: https://github.com/pytorch/add-annotations-github-action
[shellcheck]: https://github.com/koalaman/shellcheck