用途:在 Ascend C 算子(op_host/op_kernel、tiling、CANN 构建链)实现就绪后,将其接入 torch_npu 并在 PyTorch 中可用,包括文件放置、Host 注册、编译打包、安装与验证。优先最小侵入、可复现构建;已有算子仓库时默认在其工程内完成接入,仅在需要时参考或使用 op-plugin。
接入路线:torch.library / TORCH_LIBRARY[_IMPL] 为正式接入主路线,适合需要 schema、torch.ops.* 调用与长期维护;Pybind 适合快速把 C++ 函数暴露给 Python 联调,不是完整算子注册路线;op-plugin / OpCommand 适合底层图算子已存在、只需补 PyTorch host wrapper;图模式/入图(如 TorchAir)当前仅做基础提醒,不作默认主线。
接入模式:Pattern A 无 workspace(参考 add),Pattern B 有 workspace 和/或 tiling(参考 matmul_leakyrelu),Pattern C 复用已有算子(OpCommand)。三者可共存,能复用系统已有能力时优先复用。
使用方式:先做预检查确认 torch_npu 可用(import torch, torch_npu;torch.npu.is_available());Plan A 在算子工程 framework/ 或新建 {op_name}_extension/ 内接入,Plan B 以 op-plugin 为工作区,host/registration .cpp 放 op_plugin/ops/ 合适子目录,其余放 example/。构建用 python setup.py bdist_wheel,安装用 cd dist && pip install --force-reinstall *.whl,测试用 cd test && python test.py。
限制与注意:默认不改算子本体实现(op_host/、op_kernel/、tiling、json、infershape),仅在用户明确要求或接入层无法绕过时修改;每次接入需提供 test/ 下冒烟测试脚本;容器内环境需通过 docker exec/podman exec 驱动,每次显式 source CANN set_env.sh 并激活 venv;验证尽量在项目目录外执行,避免误导入本地源码;OpCommand::Attr 整型参数建议统一 int64_t;可选张量用 Tensor? 配合空 .Input();注册库应通过 torch.ops.load_library 加载而非 import _C。版本矩阵、SOC_VERSION 等细节见 references/reference.md。