OpPlugin

TorchNPU 的昇腾 NPU 算子适配子仓

简体中文 | English

版本配套 · 安装 · 算子开发 · API 参考 · 贡献与交流 · TorchNPU 主仓

C++ Python Platform: Ascend NPU TorchNPU submodule License: BSD-3-Clause GitCode repository

简介

OpPlugin 是 TorchNPU 的算子适配子仓,为 PyTorch 原生算子和 TorchNPU 自定义算子提供昇腾 NPU 适配实现。

TorchNPU 通过 third_party/op-plugin 子模块集成本仓,将算子适配代码编译到 torch_npu 软件包中。OpPlugin 的编译和运行依赖 TorchNPU;使用算子时,安装配套的 TorchNPU 即可,无需单独安装 OpPlugin 软件包。

核心功能

  • 算子适配: 对接 CANN 算子接口,实现 PyTorch 原生算子与 TorchNPU 自定义算子的 NPU 计算。
  • 配置与代码生成: 通过 YAML 配置管理算子接口、版本适配及前反向绑定,并支持结构化适配代码生成。
  • 开发与验证: 提供算子适配指南、自定义算子扩展示例和测试用例,支持算子开发与验证。

版本配套

OpPlugin 随对应版本的 TorchNPU 集成和发布,环境配套和支持策略统一参考 TorchNPU:

  • 版本配套:PyTorch、TorchNPU、CANN 和 Python 的配套关系。
  • 支持说明:版本支持状态与生命周期。

使用历史版本时,请切换到对应分支阅读文档。

安装

使用已有算子

按照 TorchNPU 安装指南准备驱动、固件、CANN、PyTorch 和 TorchNPU。安装后,可通过 TorchNPU 快速开始验证 NPU 环境。

源码编译

需要修改或新增算子时,可选择以下方式:

  • 从 TorchNPU 主仓构建: 按照 TorchNPU 源码安装指南获取源码和子模块,在 third_party/op-plugin 中开发并随主仓编译。
  • 从 OpPlugin 本仓构建: 按照 OpPlugin 源码编译指南准备环境,并使用 ci/build.sh 与指定版本的 TorchNPU 协同编译。

本仓构建脚本会获取 TorchNPU 源码,将本地算子适配代码集成到其中,最终在 dist/ 下生成 torch_npu wheel 包。Python 版本和 TorchNPU 分支需按目标版本配套选择。

算子开发

开发任务 参考文档
配置算子接口、版本适配、前反向绑定与结构化适配 API 适配开发流程
通过 OpPlugin 适配 Ascend C 自定义算子 TorchNPU 算子适配指南
通过 C++ extensions 构建自定义算子扩展 自定义算子扩展示例
查阅和补充算子测试用例 测试目录

API 参考

TorchNPU 自定义 API提供接口功能、函数原型、参数说明、支持约束和调用示例。具体接口的版本和硬件支持范围以对应 API 文档为准。

目录结构

├── ci                    # 构建与测试脚本
├── codegen               # 算子适配代码生成
├── docs                  # 安装、安全和 API 文档
├── examples              # 自定义算子扩展示例
├── op_plugin             # 算子适配实现
│   ├── config            # 算子接口与适配配置
│   ├── ops               # 算子实现
│   │   ├── aclops        # aclop 算子适配
│   │   └── opapi         # aclnn 算子适配
│   └── python            # Python 相关实现
├── test                  # 算子测试用例
└── torchnpugen            # TorchNPU 代码生成工具

贡献与交流

OpPlugin 复用 TorchNPU 贡献指南中的开发流程和贡献规范。涉及本仓的代码、测试和文档修改,请向 OpPlugin 提交 PR。

算子适配问题或建议请提交 OpPlugin Issues;TorchNPU 框架相关问题请提交 TorchNPU Issues。

OpPlugin 由 Ascend for PyTorch 社区的 Core SIG负责设计、实现与维护,欢迎参与交流和贡献。

安全声明

使用本仓前,请阅读 OpPlugin 安全声明。TorchNPU 的通用安全加固与运行要求请参见 TorchNPU 安全声明。

免责声明

致OpPlugin插件使用者

  • 本插件仅供调试和开发使用,使用者需自行承担使用风险,并理解以下内容:
    • 数据处理及删除:用户在使用本插件过程中产生的数据属于用户责任范畴。建议用户在使用完毕后及时删除相关数据,以防信息泄露。
    • 数据保密与传播:使用者了解并同意不得将通过本插件产生的数据随意外发或传播。对于由此产生的信息泄露、数据泄露或其他不良后果,本插件及其开发者概不负责。
    • 用户输入安全性:用户需自行保证输入的命令行的安全性,并承担因输入不当而导致的任何安全风险或损失。对于输入命令行不当所导致的问题,本插件及其开发者概不负责。
  • 免责声明范围:本免责声明适用于所有使用本插件的个人或实体。使用本插件即表示您同意并接受本声明的内容,并愿意承担因使用该功能而产生的风险和责任,如有异议请停止使用本插件。
  • 在使用本工具之前,请谨慎阅读并理解以上免责声明的内容。对于使用本插件所产生的任何问题或疑问,请及时联系开发者。

License

OpPlugin 的使用许可证,请参见 LICENSE。

致谢

感谢来自社区的每一个 PR,欢迎开发者向 OpPlugin 贡献代码、测试和文档!