开发者
资源
[object Object]

本文档基于C++ extensions方式,torch_npu单算子API进行自定义NPU算子适配开发的完整流程,流程涵盖了算子定义、算子适配、ATen IR注册绑定。本样例重点阐述结构化内核适配方法,该方法适用于aclnn接口与ATen IR语义一致,且适配层逻辑仅需负责output tensor申请的场景。

[object Object][object Object]

在开始之前,请确保您已完成以下环境的安装。

  1. 请参考《》安装昇腾NPU驱动和CANN软件(包含Toolkit、ops和NNAL包),并配置环境变量。
  2. 请参考《》完成PyTorch框架的安装。
[object Object]
[object Object]
[object Object]
[object Object]
  1. 算子适配层c++代码目录(csrc)中,通过[object Object]文件完成结构化适配的配置。

    • [object Object]:PyTorch侧暴露的算子签名(ATen IR格式)。

    • [object Object]:指定输出张量的形状(size)和数据类型(dtype)由哪个输入张量推导(例如self或grad)。

    • [object Object]:指定实际调用的底层aclnn接口名称。

    具体示例如下:

    [object Object]
  2. [object Object]目录下的[object Object]文件中,读取so文件。

    [object Object]
[object Object]

完成了算子适配开发后,即可实现C++ extensions的方式调用自定义算子。

  1. 完成自定义算子工程创建、算子开发及编译部署流程,具体可参考《》。

  2. 下载示例代码。

    [object Object]
  3. 完成算子适配,具体可参考

  4. 执行如下命令,完成编译、安装、测试。

    [object Object]

    得到结果如下即为执行成功。

    [object Object]