032bed95cd
Various C++ code fixes in LSAN integration ( #165818 )
...
This PR extracts the C++ code fixes from #154584 , which are fixes in enabling LSAN.
Pull Request resolved: https://github.com/pytorch/pytorch/pull/165818
Approved by: https://github.com/ezyang
2025-10-18 17:59:23 +00:00
f06e669f6c
refactor: replace runtime_error with TORCH_CHECK for better error handling ( #163628 )
...
Fixes some parts of issue #148114
@pytorchbot label "topic: not user facing"
@FFFrog PTAL
Pull Request resolved: https://github.com/pytorch/pytorch/pull/163628
Approved by: https://github.com/albanD
2025-10-16 11:09:48 +00:00
331b7cc054
Fix double dispatch to Python for detach ( #163671 )
...
This fixes #71725 .
Differential Revision: [D83857880](https://our.internmc.facebook.com/intern/diff/D83857880 )
Pull Request resolved: https://github.com/pytorch/pytorch/pull/163671
Approved by: https://github.com/ezyang , https://github.com/albanD
2025-10-15 17:24:50 +00:00
36871622f1
[2/N] Mark unused parameters in C++ code ( #165121 )
...
This is follow-up of #164912 to mark unused C++ parameters to improve code readability.
Pull Request resolved: https://github.com/pytorch/pytorch/pull/165121
Approved by: https://github.com/Skylion007
2025-10-15 03:04:39 +00:00
267348fe7f
Revert "Fix double dispatch to Python for detach ( #163671 )"
...
This reverts commit a3e3efe474bef63940ded803e78bb2a382681f1e.
Reverted https://github.com/pytorch/pytorch/pull/163671 on behalf of https://github.com/seemethere due to We should've reverted this when we decided to revert https://github.com/pytorch/pytorch/pull/164691 since they were actually stacked ([comment](https://github.com/pytorch/pytorch/pull/163671#issuecomment-3400009953 ))
2025-10-14 03:55:36 +00:00
ecb53078fa
Turn some const strings into constexpr in C++ code ( #165203 )
...
This PR turns more const strings into constexpr.
Pull Request resolved: https://github.com/pytorch/pytorch/pull/165203
Approved by: https://github.com/Skylion007
2025-10-13 20:25:20 +00:00
a3e3efe474
Fix double dispatch to Python for detach ( #163671 )
...
This fixes #71725 .
Differential Revision: [D83857880](https://our.internmc.facebook.com/intern/diff/D83857880 )
Pull Request resolved: https://github.com/pytorch/pytorch/pull/163671
Approved by: https://github.com/ezyang , https://github.com/albanD
2025-10-13 16:10:17 +00:00
f975bd58af
Revert "Warn if AccumulateGrad stream does not match producer node stream ( #165065 )"
...
This reverts commit a70ef954b919e990ebaba715b4072e76352867bf.
Reverted https://github.com/pytorch/pytorch/pull/165065 on behalf of https://github.com/izaitsevfb due to breaks lint ([comment](https://github.com/pytorch/pytorch/pull/165065#issuecomment-3391387386 ))
2025-10-10 17:29:29 +00:00
a70ef954b9
Warn if AccumulateGrad stream does not match producer node stream ( #165065 )
...
Pull Request resolved: https://github.com/pytorch/pytorch/pull/165065
Approved by: https://github.com/ngimel
ghstack dependencies: #162815
2025-10-10 16:46:01 +00:00
24d69c57cb
Add view support for library custom Function ( #164520 )
...
Pull Request resolved: https://github.com/pytorch/pytorch/pull/164520
Approved by: https://github.com/soulitzer , https://github.com/ezyang
2025-10-09 16:17:48 +00:00
71aefd5595
[reland] Allow setting grad_dtype on leaf tensors ( #164751 )
...
ghstack-source-id: e44b3941530be83a630ec93f1478eec741ffca2e
Pull-Request-resolved: https://github.com/pytorch/pytorch/pull/162815
Fixes #ISSUE_NUMBER
Relanding due to internal weirdness. Separate PR to codev w/o ghstack.
Pull Request resolved: https://github.com/pytorch/pytorch/pull/164751
Approved by: https://github.com/albanD
2025-10-08 20:23:13 +00:00
97463d4cf3
Revert "Fix double dispatch to Python for detach ( #163671 )"
...
This reverts commit c32118dc3e50505fd285e6e448a90883fce11535.
Reverted https://github.com/pytorch/pytorch/pull/163671 on behalf of https://github.com/izaitsevfb due to breaks export tests ([comment](https://github.com/pytorch/pytorch/pull/163671#issuecomment-3379281422 ))
2025-10-08 01:46:45 +00:00
c32118dc3e
Fix double dispatch to Python for detach ( #163671 )
...
This fixes #71725 .
Differential Revision: [D83857880](https://our.internmc.facebook.com/intern/diff/D83857880 )
Pull Request resolved: https://github.com/pytorch/pytorch/pull/163671
Approved by: https://github.com/ezyang , https://github.com/albanD
2025-10-07 23:34:37 +00:00
56d66ac0d7
Make custom op alias check consistent ( #164576 )
...
Pull Request resolved: https://github.com/pytorch/pytorch/pull/164576
Approved by: https://github.com/soulitzer
2025-10-07 02:05:09 +00:00
af32d16a71
Add pure view support in autograd Function ( #164736 )
...
This is the same as https://github.com/pytorch/pytorch/pull/164467
But it needs to be co-deved due to internal insanity.
Pull Request resolved: https://github.com/pytorch/pytorch/pull/164736
Approved by: https://github.com/soulitzer
2025-10-06 18:21:05 +00:00
9fff8155c3
[2/N] Fix clang-tidy readability checks ( #164652 )
...
This PR applies clang-tidy readability checks to jit sources and all headers in the code base.
`readability-redundant-inline-specifier` is suppressed because it incurs too many changes. `readability-redundant-inline-specifier` is used to detect redundant inline specifiers on function and variable declarations. There are many in-class method definitions that are marked inline.
Pull Request resolved: https://github.com/pytorch/pytorch/pull/164652
Approved by: https://github.com/Skylion007
2025-10-06 01:06:01 +00:00
331191ce4b
Revert "[BE] Make PyObjectSlot use a global PyInterpreter ( #162659 )"
...
This reverts commit 29cbcbac4215e0d9070a1b7a07ddaec9a36bbd08.
Reverted https://github.com/pytorch/pytorch/pull/162659 on behalf of https://github.com/izaitsevfb due to reverted internally, see [D83214133](https://www.internalfb.com/diff/D83214133 ) ([comment](https://github.com/pytorch/pytorch/pull/162659#issuecomment-3369348172 ))
2025-10-05 21:39:57 +00:00
2c5ed6e7c0
Revert "[2/N] Fix clang-tidy readability checks ( #164652 )"
...
This reverts commit 3c5ca685d6f5b6f3971c0cd20a054aa355610419.
Reverted https://github.com/pytorch/pytorch/pull/164652 on behalf of https://github.com/izaitsevfb due to need to revert due to a conflict with revert of https://github.com/pytorch/pytorch/pull/162659 ([comment](https://github.com/pytorch/pytorch/pull/164652#issuecomment-3369346707 ))
2025-10-05 21:36:57 +00:00
3c5ca685d6
[2/N] Fix clang-tidy readability checks ( #164652 )
...
This PR applies clang-tidy readability checks to jit sources and all headers in the code base.
`readability-redundant-inline-specifier` is suppressed because it incurs too many changes. `readability-redundant-inline-specifier` is used to detect redundant inline specifiers on function and variable declarations. There are many in-class method definitions that are marked inline.
Pull Request resolved: https://github.com/pytorch/pytorch/pull/164652
Approved by: https://github.com/Skylion007
2025-10-05 07:05:11 +00:00
f46bb04dcc
Revert "Add pure view support in autograd Function ( #164467 )"
...
This reverts commit 10335ffb2cce26c99958d055f415a16c1d14bc35.
Reverted https://github.com/pytorch/pytorch/pull/164467 on behalf of https://github.com/facebook-github-bot due to Diff reverted internally ([comment](https://github.com/pytorch/pytorch/pull/164467#issuecomment-3368152304 ))
2025-10-04 11:42:46 +00:00
6f6a919366
Revert "Make custom op alias check consistent ( #164576 )"
...
This reverts commit e438db254602cf39ba536aed0590b4144c019ee8.
Reverted https://github.com/pytorch/pytorch/pull/164576 on behalf of https://github.com/facebook-github-bot due to Diff reverted internally ([comment](https://github.com/pytorch/pytorch/pull/164467#issuecomment-3368152304 ))
2025-10-04 11:42:45 +00:00
5103ecc5d8
[1/N] Fix clang-tidy readability checks ( #164561 )
...
Check all `.cpp` files except `jit` files for readability thoroughly.
Pull Request resolved: https://github.com/pytorch/pytorch/pull/164561
Approved by: https://github.com/Skylion007
2025-10-04 09:40:38 +00:00
7d570129e0
Fix custom autograd Function memory leak when saving mutated view ( #164407 )
...
Fixes https://github.com/pytorch/pytorch/issues/160317
Pull Request resolved: https://github.com/pytorch/pytorch/pull/164407
Approved by: https://github.com/albanD
2025-10-04 00:47:12 +00:00
3ddf2018d0
Revert "Support setting grad_dtype on leaf tensors ( #162815 )"
...
This reverts commit dca73982c53e9f99f96246b5d9ed9bab83c7423f.
Reverted https://github.com/pytorch/pytorch/pull/162815 on behalf of https://github.com/yangw-dev due to break internal test D83850533, see more details below ([comment](https://github.com/pytorch/pytorch/pull/162815#issuecomment-3367498501 ))
2025-10-03 23:14:28 +00:00
e438db2546
Make custom op alias check consistent ( #164576 )
...
Pull Request resolved: https://github.com/pytorch/pytorch/pull/164576
Approved by: https://github.com/soulitzer
ghstack dependencies: #164467
2025-10-03 21:42:11 +00:00
10335ffb2c
Add pure view support in autograd Function ( #164467 )
...
Fix https://github.com/pytorch/pytorch/issues/73604
Pull Request resolved: https://github.com/pytorch/pytorch/pull/164467
Approved by: https://github.com/ezyang , https://github.com/soulitzer
2025-10-03 21:42:11 +00:00
dca73982c5
Support setting grad_dtype on leaf tensors ( #162815 )
...
`grad_dtype` is a new attribute on Tensor to control gradient dtype:
- Access/setting is leaf-only.
- grad_dtype is respected when (1) when assigning to .grad, and (2) in the engine after the previous node produces incoming gradients for AccumulateGrad. (See table below for details)
- Not setting grad_dtype preserves the current behavior. Accessing it returns `t.dtype`
- `grad_dtype` cannot be set when there is already a `.grad` present and the dtypes conflict.
| `grad_dtype` setting | Setting `.grad` manually | Incoming gradient from autograd engine |
|-----------------------|--------------------------|-----------------------------------------|
| **Default (tensor’s dtype)** | `.grad` must match tensor’s dtype | Engine casts incoming grad to tensor’s dtype |
| **Set to specific dtype** | `.grad` must match that dtype | Engine casts incoming grad to the specified dtype |
| **Set to `None`** | `.grad` may be any dtype | Engine does not cast; accepts incoming grad dtype as-is |
Pull Request resolved: https://github.com/pytorch/pytorch/pull/162815
Approved by: https://github.com/albanD
2025-10-02 23:09:07 +00:00
115af42e9d
Fix readibility checks in TIDY and apply them ( #164475 )
...
Fixes #ISSUE_NUMBER
Pull Request resolved: https://github.com/pytorch/pytorch/pull/164475
Approved by: https://github.com/albanD , https://github.com/Skylion007
Co-authored-by: Aaron Gokaslan <aaronGokaslan@gmail.com >
2025-10-02 20:34:49 +00:00
c6329524d8
Revert "Add magic TORCH_MAKE_PYBIND_ENUM_FASTER macro ( #163527 )"
...
This reverts commit 50c0550f5a5b1e35885d892081a7d5115d8b4489.
Reverted https://github.com/pytorch/pytorch/pull/163527 on behalf of https://github.com/swolchok due to breaking import torch in debug builds, see #164297 ([comment](https://github.com/pytorch/pytorch/pull/163527#issuecomment-3361919142 ))
2025-10-02 15:42:42 +00:00
bac0f289a3
Add methods to access data and unpack_hook on SavedVariable ( #164358 )
...
Pull Request resolved: https://github.com/pytorch/pytorch/pull/164358
Approved by: https://github.com/albanD
2025-10-02 13:05:16 +00:00
cc5d74c366
Revert "[BE] Remove HermeticPyObjectTLS and Simplify PythonOpRegistrationTrampoline ( #163464 )"
...
This reverts commit 94195a37ae4eae9c486a81b0f67725c8970f74d6.
Reverted https://github.com/pytorch/pytorch/pull/163464 on behalf of https://github.com/facebook-github-bot due to Diff reverted internally ([comment](https://github.com/pytorch/pytorch/pull/163464#issuecomment-3353307034 ))
2025-09-30 18:20:20 +00:00
46ec0664e3
Remove unused PyIntXXX, THPUtils_newReal_BOOL, THPQXXX macros ( #164056 )
...
The removed macros are not used in other places of the `pytorch` GitHub org.
Pull Request resolved: https://github.com/pytorch/pytorch/pull/164056
Approved by: https://github.com/albanD
2025-09-30 13:48:25 +00:00
50c0550f5a
Add magic TORCH_MAKE_PYBIND_ENUM_FASTER macro ( #163527 )
...
See comment on the macro definition. In short, pybind11 3.x
added `py::native_enum`, and also had to add overhead for that new way
to bind enums on the critical path for calling functions that take
regular old `py::enum_`s as arguments (for example, `__eq__`).
Differential Revision: [D82873169](https://our.internmc.facebook.com/intern/diff/D82873169/ )
Pull Request resolved: https://github.com/pytorch/pytorch/pull/163527
Approved by: https://github.com/ezyang
2025-09-26 17:59:22 +00:00
94195a37ae
[BE] Remove HermeticPyObjectTLS and Simplify PythonOpRegistrationTrampoline ( #163464 )
...
Removes HermeticPyObjectTLS as we no longer need since torch deploy is no longer supported. PythonOpRegistrationTrampoline is also drastically simplified as and being prepped for removal in a future PR.
Pull Request resolved: https://github.com/pytorch/pytorch/pull/163464
Approved by: https://github.com/albanD , https://github.com/Skylion007
2025-09-25 23:30:50 +00:00
6fa3715c12
Expose Kineto event metadata in PyTorch Profiler events ( #161624 )
...
## Overview
This PR allows the profiler users to access `Kineto` and `TorchOp` metadata in JSON string format through a new `metadata_json` attribute in `FunctionEvent` objects, which is triggered through a new `expose_kineto_event_metadata` flag in `ExperimentalConfig`.
## Testing
A unit test was added to validate functionality.
## Documentation
Added/updated function doc strings where appropriate.
## Example output
```python
import torch
from torch.profiler import profile
with profile(experimental_config=torch._C._profiler._ExperimentalConfig(expose_kineto_event_metadata=True)) as prof:
res = torch.mm(torch.rand(1024, 1024), torch.rand(1024, 1024))
for event in prof.events():
print(f'name: {event.key}, metadata: {event.metadata_json}')
```
```
name: aten::rand, metadata: "Ev Idx": 0
name: aten::empty, metadata: "Ev Idx": 1
name: aten::uniform_, metadata: "Ev Idx": 2
name: aten::rand, metadata: "Ev Idx": 3
name: aten::empty, metadata: "Ev Idx": 4
name: aten::uniform_, metadata: "Ev Idx": 5
name: aten::mm, metadata: "Ev Idx": 6
name: aten::resolve_conj, metadata: "Ev Idx": 7
name: aten::resolve_conj, metadata: "Ev Idx": 8
name: aten::resolve_conj, metadata: "Ev Idx": 9
```
Pull Request resolved: https://github.com/pytorch/pytorch/pull/161624
Approved by: https://github.com/sraikund16
2025-09-25 14:58:30 +00:00
00059db034
Revert "[RELAND] Always build USE_DISTRIBUTED ( #160449 ) and Make distributed modules importable even when backend not built ( #159889 ) ( #162594 )"
...
This reverts commit 09cb34c1dce8fe1b880bbf3115d8ddad3401d871.
Reverted https://github.com/pytorch/pytorch/pull/162594 on behalf of https://github.com/malfet due to reverted internally and now can be safely reverted in OSS ([comment](https://github.com/pytorch/pytorch/pull/162594#issuecomment-3334176367 ))
2025-09-25 13:47:46 +00:00
ab2ce3c50e
[Code Clean] Replace std::runtime_error with TORCH_CHECK ( #163264 )
...
Related ISSUE: https://github.com/pytorch/pytorch/issues/148114
Pull Request resolved: https://github.com/pytorch/pytorch/pull/163264
Approved by: https://github.com/albanD , https://github.com/cyyever
2025-09-25 11:28:51 +00:00
7d710403b0
Reapply "Make functionalization ViewMeta
serializable with pickle. ( #143712 )" ( #163769 )
...
### Summary:
NOTE: This is a re-export of https://github.com/pytorch/pytorch/pull/161994 ; the changes between these two PRs is exclusively to the buck/build files
(Summary from #161994 )
Attempted rebase of https://github.com/pytorch/pytorch/pull/143712 .
This reverts commit 6c713ccb5e0df227dd5b630057cbccd373cbe7d6.
cc voznesenskym penguinwu EikanWang jgong5 Guobing-Chen XiaobingSuper zhuhaozhe blzheng wenzhe-nrv jiayisunx chenyang78 kadeng chauhang amjames Lucaskabela
imported-using-ghimport
Test Plan: Imported from OSS
Differential Revision: D81524507
Pulled By: Lucaskabela
Pull Request resolved: https://github.com/pytorch/pytorch/pull/163769
Approved by: https://github.com/dolpm
Co-authored-by: Brian Hirsh <hirsheybar@fb.com >
2025-09-25 10:27:37 +00:00
29cbcbac42
[BE] Make PyObjectSlot use a global PyInterpreter ( #162659 )
...
This pr gets rid of the pyobj_interpreter_ variable from PyObjectSlot and saves a word in the process
Gonna ask for review from @huydhn as there are some changes to CI.
Testing: imported internally and the failed android build seems to work now!
Pull Request resolved: https://github.com/pytorch/pytorch/pull/162659
Approved by: https://github.com/albanD , https://github.com/huydhn
2025-09-25 08:53:19 +00:00
6b5ad5f211
[Kineto] Add list of string parsing for profiler ( #163593 )
...
Summary:
We add the parsing for list of string. This is needed for AOTInductor
profiling for input information of Triton kernels.
Test Plan:
Included in commit.
test_profiler_op_event_kwargs_list_of_strings
Reviewers:
Subscribers:
Tasks:
Tags:
Pull Request resolved: https://github.com/pytorch/pytorch/pull/163593
Approved by: https://github.com/sraikund16
2025-09-23 22:45:49 +00:00
09cb34c1dc
[RELAND] Always build USE_DISTRIBUTED ( #160449 ) and Make distributed modules importable even when backend not built ( #159889 ) ( #162594 )
...
Summary:
Original: D81957844 and D81957923
Also, https://github.com/pytorch/pytorch/pull/162142 is patched in as well
#buildall
Test Plan:
sandcastle and oss ci
Rollback Plan:
Reviewed By: H-Huang
Pull Request resolved: https://github.com/pytorch/pytorch/pull/162594
Approved by: https://github.com/H-Huang , https://github.com/dcci
2025-09-22 21:12:18 +00:00
edafc902d7
Revert "[BE] Make PyObjectSlot use a global PyInterpreter ( #162659 )"
...
This reverts commit d1993c27ae59842c887d549a3f8936fbcd769498.
Reverted https://github.com/pytorch/pytorch/pull/162659 on behalf of https://github.com/wdvr due to reverted internally, please see D82771705 @PaliC ([comment](https://github.com/pytorch/pytorch/pull/162659#issuecomment-3317110247 ))
2025-09-22 06:22:37 +00:00
f0078941cf
Revert "[RELAND] Always build USE_DISTRIBUTED ( #160449 ) and Make distributed modules importable even when backend not built ( #159889 ) ( #162594 )"
...
This reverts commit 6c334885d48725197b5d35e2c1543efc0f4198d0.
Reverted https://github.com/pytorch/pytorch/pull/162594 on behalf of https://github.com/wdvr due to reverted internally - @ezyang see D82281294 ([comment](https://github.com/pytorch/pytorch/pull/162594#issuecomment-3317017530 ))
2025-09-22 05:39:07 +00:00
5599f487ef
Fully native DTensor.__new__ ( #162508 )
...
Move the entirety of `__new__` into C++, saving a layer of disable_dynamo and making progress toward all-C++.
Pull Request resolved: https://github.com/pytorch/pytorch/pull/162508
Approved by: https://github.com/ezyang
ghstack dependencies: #161695
2025-09-21 18:36:05 +00:00
51152efa67
Remove autograd code for Python < 3.9 ( #163313 )
...
As PyTorch is moving to Python 3.10, it is safe to remove code for Python < 3.9.
Pull Request resolved: https://github.com/pytorch/pytorch/pull/163313
Approved by: https://github.com/ezyang
2025-09-21 15:35:06 +00:00
c91f59b1a0
Fix performance regression when indexing by Numpy arrays ( #163280 )
...
Benchmark script:
```
import time
import numpy as np
import torch
def main() -> None:
for i in range(10):
block_indices = np.arange(16384, dtype=np.int32)
block_indices = block_indices.reshape(-1).clip(max=255)
batch_indices = np.zeros(16384, dtype=np.int64)
virtual_batches = 32
block_table = torch.randn(32, 256)
start = time.perf_counter()
block_table[batch_indices, block_indices].view(virtual_batches, -1)
end = time.perf_counter()
time_elapsed_ms = (end - start) * 1000
print(f"Function execution time: {time_elapsed_ms:.1f}ms")
if __name__ == "__main__":
main()
```
Before:
```
(a) [ezyang@devvm006.dkl0 ~/local/b/pytorch] python ben.py
Function execution time: 28.5ms
Function execution time: 12.9ms
Function execution time: 12.6ms
Function execution time: 13.5ms
Function execution time: 12.0ms
Function execution time: 13.4ms
Function execution time: 12.9ms
Function execution time: 12.9ms
Function execution time: 13.1ms
Function execution time: 13.0ms
```
After:
```
Function execution time: 17.8ms
Function execution time: 2.5ms
Function execution time: 1.3ms
Function execution time: 2.5ms
Function execution time: 2.3ms
Function execution time: 1.3ms
Function execution time: 2.4ms
Function execution time: 2.5ms
Function execution time: 2.5ms
Function execution time: 2.4ms
```
Signed-off-by: Edward Z. Yang <ezyang@meta.com >
Pull Request resolved: https://github.com/pytorch/pytorch/pull/163280
Approved by: https://github.com/SherlockNoMad , https://github.com/cyyever
2025-09-19 05:02:58 +00:00
76a841fd47
Port OpSchema.__post_init__ and OpSchema._recompute_comparison_key to C++ ( #161695 )
...
I initially didn't see good results porting this, but it was apparently because of pybind11 function calling overhead. (pybind11's object-handling primitives seem fine enough.) I'm interested in setting up nanobind, but this demonstrates it's not blocking.
Differential Revision: [D81530102](https://our.internmc.facebook.com/intern/diff/D81530102 )
Pull Request resolved: https://github.com/pytorch/pytorch/pull/161695
Approved by: https://github.com/ezyang
2025-09-19 04:07:30 +00:00
d1993c27ae
[BE] Make PyObjectSlot use a global PyInterpreter ( #162659 )
...
This pr gets rid of the pyobj_interpreter_ variable from PyObjectSlot and saves a word in the process
Gonna ask for review from @huydhn as there are some changes to CI.
Pull Request resolved: https://github.com/pytorch/pytorch/pull/162659
Approved by: https://github.com/albanD , https://github.com/huydhn
2025-09-17 16:40:55 +00:00
a63221a335
Fix TODO in make_tensor_for_subclass_helper ( #162336 )
...
The constructor does accept a DataPtr (had to fix the DataPtr variant not accepting a SymInt, though).
Pull Request resolved: https://github.com/pytorch/pytorch/pull/162336
Approved by: https://github.com/ezyang
ghstack dependencies: #162298
2025-09-17 06:46:34 +00:00
559e8d1c20
[doc]: Small typos ( #162982 )
...
Small typo fixes
Pull Request resolved: https://github.com/pytorch/pytorch/pull/162982
Approved by: https://github.com/ezyang , https://github.com/zou3519
2025-09-16 17:42:19 +00:00