-
Notifications
You must be signed in to change notification settings - Fork 21.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
New Custom Ops Documentation landing page (#127400)
We create a new landing page for PyTorch custom ops (suggested by jansel). All of our error messages will link here, and I'll work with the docs team to see if we can boost SEO for this page. NB: the landing page links some non-searchable webpages. Two of those (the Python custom ops tutorial and C++ custom ops tutorial) will turn into actual webpages when PyTorch 2.4 comes around. I'll make the third one (the Custom Operators Manual) once it stabilizes (we continously add new things to it and the length means that we might want to create a custom website for it to make the presentation more ingestable). Test Plan: - view docs preview. Pull Request resolved: #127400 Approved by: https://github.com/jansel ghstack dependencies: #127291, #127292
- Loading branch information
1 parent
49ad903
commit 1abcac9
Showing
4 changed files
with
79 additions
and
24 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
.. _custom-ops-landing-page: | ||
|
||
PyTorch Custom Operators Landing Page | ||
===================================== | ||
|
||
PyTorch offers a large library of operators that work on Tensors (e.g. :func:`torch.add`, | ||
:func:`torch.sum`, etc). However, you may wish to bring a new custom operation to PyTorch | ||
and get it to work with subsystems like :func:`torch.compile`, autograd, and :func:`torch.vmap`. | ||
In order to do so, you must register the custom operation with PyTorch via the Python | ||
:ref:`torch-library-docs` or C++ TORCH_LIBRARY APIs. | ||
|
||
TL;DR | ||
----- | ||
|
||
How do I author a custom op from Python? | ||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||
|
||
.. | ||
[comment] TODO(rzou): The following will be a link to a tutorial on the PyTorch tutorials site in 2.4 | ||
Please see the `Python Custom Operators tutorial <https://colab.research.google.com/drive/1xCh5BNHxGnutqGLMHaHwm47cbDL9CB1g#scrollTo=gg6WorNtKzeh>`_ | ||
|
||
|
||
How do I integrate custom C++ and/or CUDA code with PyTorch? | ||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||
|
||
.. | ||
[comment] TODO(rzou): The following will be a link to a tutorial on the PyTorch tutorials site in 2.4 | ||
Please see the `Custom C++ and CUDA Operators tutorial <https://docs.google.com/document/d/1-LdJZBzlxiF0Tm-8NfbyFvRJaofdwRgLcycXGmlIpS0>`_ | ||
|
||
|
||
For more details | ||
^^^^^^^^^^^^^^^^ | ||
|
||
Please see `The Custom Operators Manual (gdoc) <https://docs.google.com/document/d/1_W62p8WJOQQUzPsJYa7s701JXt0qf2OfLub2sbkHOaU>`_ | ||
(we're working on moving the information to our docs site). We recommend that you | ||
first read one of the tutorials above and then use the Custom Operators Manual as a reference; | ||
it is not meant to be read head to toe. | ||
|
||
When should I create a Custom Operator? | ||
--------------------------------------- | ||
If your operation is expressible as a composition of built-in PyTorch operators | ||
then please write it as a Python function and call it instead of creating a | ||
custom operator. Use the operator registration APIs to create a custom op if you | ||
are calling into some library that PyTorch doesn't understand (e.g. custom C/C++ code, | ||
a custom CUDA kernel, or Python bindings to C/C++/CUDA extensions). | ||
|
||
Why should I create a Custom Operator? | ||
-------------------------------------- | ||
|
||
It is possible to use a C/C++/CUDA kernel by grabbing a Tensor's data pointer | ||
and passing it to a pybind'ed kernel. However, this approach doesn't compose with | ||
PyTorch subsystems like autograd, torch.compile, vmap, and more. In order | ||
for an operation to compose with PyTorch subsystems, it must be registered | ||
via the operator registration APIs. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters