mirror of
https://github.com/pytorch/pytorch.git
synced 2026-10-28 18:56:51 +08:00
The fix-cpp-build branch is a major restructuring that: - Drops Exhale (which auto-generated API docs but caused OOM in CI) in favor of hand-written RST pages using Breathe directives - Reorganizes notes into a hierarchical API reference with proper categories - Adds new content: XPU docs, stable ABI docs, DeviceGuard/Stream docs - Always runs Doxygen instead of gating on an env var Pull Request resolved: https://github.com/pytorch/pytorch/pull/174096 Approved by: https://github.com/janeyx99, https://github.com/seemethere, https://github.com/albanD
2.2 KiB
2.2 KiB
myst
| myst | ||||||
|---|---|---|---|---|---|---|
|
Operator Registration
The library API provides macros and classes for registering custom operators with PyTorch's dispatcher.
Macros
TORCH_LIBRARY
Example:
TORCH_LIBRARY(myops, m) {
m.def("add(Tensor self, Tensor other) -> Tensor", &add_impl);
m.def("mul(Tensor self, Tensor other) -> Tensor");
m.impl("mul", torch::kCPU, &mul_cpu_impl);
m.impl("mul", torch::kCUDA, &mul_cuda_impl);
}
TORCH_LIBRARY_IMPL
Example:
TORCH_LIBRARY_IMPL(myops, XLA, m) {
m.impl("mul", &mul_xla_impl);
}
TORCH_LIBRARY_FRAGMENT
Example:
// In file1.cpp
TORCH_LIBRARY(myops, m) {
m.def("add(Tensor self, Tensor other) -> Tensor", &add_impl);
}
// In file2.cpp
TORCH_LIBRARY_FRAGMENT(myops, m) {
m.def("mul(Tensor self, Tensor other) -> Tensor", &mul_impl);
}
Classes
Library
Example:
TORCH_LIBRARY(myops, m) {
// Define with implementation
m.def("add(Tensor self, Tensor other) -> Tensor", &add_impl);
// Define schema only
m.def("mul(Tensor self, Tensor other) -> Tensor");
// Provide backend-specific implementations
m.impl("mul", torch::kCPU, &mul_cpu_impl);
m.impl("mul", torch::kCUDA, &mul_cuda_impl);
}
CppFunction
:members:
:no-link:
OrderedDict
:members:
:undoc-members:
Functions
The library API provides builder methods on the Library class for registering
operators. See the Library class documentation above for the full API including
def(), impl(), and fallback() methods.
Dispatch Keys
Common dispatch keys used with torch::dispatch():
torch::kCPU- CPU backendtorch::kCUDA- CUDA backendtorch::kAutograd- Autograd backendtorch::kMeta- Meta tensor backend