pytorch/tools
vasiliy 382fbcc1e4 add the torch.float8_e8m0fnu dtype to PyTorch (#147466)
Summary:

Continuing the work from https://github.com/pytorch/pytorch/pull/146427

Adds the `torch.float8_e8m0fnu` dtype to PyTorch, as detailed in
https://github.com/pytorch/pytorch/issues/146414 . Please see the issue for a detailed definition of the format.  Example of basic functionality:

```python
import torch

# round trip
x0 = torch.randn(4, 4, dtype=torch.float32)
x1 = x0.to(torch.float8_e8m0fnu)  # RNE rounding
x2 = x1.to(torch.float32)  # 2 ** exponent

# creation with empty
x0 = torch.empty(4, 4, dtype=torch.float8_e8m0fnu)

# printing
print(x0)
```

Done in this PR:
* numerical correctness
* op coverage (except for `torch._scaled_mm`): create tensor, cast to/from float32
* printing a tensor works

For future PRs:
* performance optimizations for casting
* torch._scaled_mm
* PT2
* various cleanups (detailed in comments with issue numbers)

Test Plan:

```
pytest test/quantization/core/experimental/test_float8.py -s
```

Reviewers:

Subscribers:

Tasks:

Tags:

Pull Request resolved: https://github.com/pytorch/pytorch/pull/147466
Approved by: https://github.com/drisspg
2025-02-20 13:55:42 +00:00
..
alerts
amd_build [ROCm] CK SDPA - Move arch check to CK patch (#144777) 2025-01-23 04:12:25 +00:00
autograd [BE][Ez]: Apply FURB188: use str remove(pre|suf)fix (#146997) 2025-02-14 03:38:07 +00:00
bazel_tools
build/bazel Add networkx as bazel dep to fix CI failure (#143995) 2025-01-02 19:42:18 +00:00
build_defs
code_analyzer [3/N] Apply py39 ruff fixes (#142115) 2024-12-11 17:50:10 +00:00
code_coverage Revert "Use absolute path path.resolve() -> path.absolute() (#129409)" 2025-01-04 14:17:20 +00:00
config
coverage_plugins_package
dynamo
flight_recorder [fr][fix] Split MatchState and dynamic info for fr analysis downstream (#147439) 2025-02-19 22:09:16 +00:00
gdb Add gdb print methods support same as pytorch-lldb (#140935) 2024-11-19 01:28:30 +00:00
github PEP585 update - benchmarks tools torchgen (#145101) 2025-01-18 05:05:07 +00:00
iwyu
jit Revert "Use absolute path path.resolve() -> path.absolute() (#129409)" 2025-01-04 14:17:20 +00:00
linter [linter] Grep linter batches long command (#145950) 2025-01-29 21:23:27 +00:00
lite_interpreter c10::string_view -> std::string_view in more places (#142517) 2024-12-12 19:45:59 +00:00
lldb
onnx Revert "Use absolute path path.resolve() -> path.absolute() (#129409)" 2025-01-04 14:17:20 +00:00
packaging [BE][Ez]: ISC001 Auto concatenate implicit one line strings (#146408) 2025-02-04 19:07:04 +00:00
pyi add the torch.float8_e8m0fnu dtype to PyTorch (#147466) 2025-02-20 13:55:42 +00:00
rules
rules_cc [BE] Fix incompatible-std-redefinition warning (#141630) 2024-11-27 05:06:36 +00:00
setup_helpers Simplify handling of max jobs in CMake builds (#145820) 2025-01-31 00:55:39 +00:00
shared
stats [util] fetch logical count cpu (#147413) 2025-02-19 23:44:54 +00:00
test torchgen: support exception boundary for ExecuTorch functions (#144341) 2025-01-31 01:05:21 +00:00
testing [BE][Ez]: Apply FURB188: use str remove(pre|suf)fix (#146997) 2025-02-14 03:38:07 +00:00
__init__.py
bazel.bzl
BUCK.bzl
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 Nccl update to 2.25.1 for cuda 12.4-12.8 (#146073) 2025-02-19 03:52:26 +00:00
build_with_debinfo.py [inductor] Remove _get_grid_fn_str (#146800) 2025-02-10 23:14:30 +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 [BE][Ez]: FURB148 - remove useless enumerate calls (#145619) 2025-01-24 23:37:15 +00:00
generate_torch_version.py Revert "cpp_wrapper: Precompile device-specific header files (#144002)" 2025-02-11 00:42:22 +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 [Easy] add quotes to shell activation commands (#143902) 2024-12-27 19:17:46 +00:00
nvcc_fix_deps.py Revert "Use absolute path path.resolve() -> path.absolute() (#129409)" 2025-01-04 14:17:20 +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: