开发者
下载

简介

概述

  • 本算子库提供的算子均为CANN内置算子,您可以直接调用;如需自定义算子,请参考Ascend C算子开发完成算子开发。
  • CANN算子源码已在Gitcode CANN开源项目开放,您可以进一步了解算子开发和贡献流程。

CANN(Compute Architecture for Neural Networks)提供了一系列丰富且经过深度优化、硬件亲和的高性能算子,可直接应用于AI业务,为网络在AI处理器上的加速计算奠定了基础。

算子库在CANN架构中的位置如图1所示,主要包含如下算子库:

  • Math库:数值计算类算子库,提供不同维度的数值处理与计算算子,例如Add、Abs等,覆盖张量形态变换、基础数学运算、随机数生成等场景。
  • NN库:神经网络类算子(Neural Network),提供深度学习模型中常见的计算算子,例如卷积、矩阵乘、激活函数、归一化等。
  • CV库:计算机视觉类算子(Computer Vision),提供图像处理和目标检测算子,例如GridSample等。
  • Transformer库:大模型计算类算子,提供Transformer核心算子,例如Attention类、LayerNorm类、通算融合类(简称MC2)等。
  • RAS库:安全和维测类算子(Reliability, Availability and Serviceability),提供可靠性、可用性和可维护性等能力,包含安全、加密以及维测相关算子。
  • Opbase库:所有算子库依赖的基础框架库,提供基础调度能力(如aclTensor创建/释放、workspace复用等)和公共依赖能力。
图1 算子库架构图

如需调用算子库中的算子,CANN提供了多种调用方式,请根据实际情况选择。

  • aclnn API:针对全量算子,提供了一套相应的C API,方便Host侧调用,简称单算子API(或者算子Host API)调用方式,调用流程如图2所示。
  • PyTorch API:针对非PyTorch原生但常见的大模型算子,提供了一套兼容PyTorch原生风格的torch_extension API。该API借助JIT机制(torch.utils.cpp_extension.load)在首次调用时即时编译C++ Kernel Wrapper,将PyTorch函数桥接到aclnn API。同时,它还通过GE Converter支持TorchAir图模式。
  • GE图模式调用:通过算子Ascend IR(Intermediate Representation)定义,以构图方式实现算子调用,调用原理参见图开发编程指南,这里不详细阐述。
图2 aclnn API调用流程

使用说明

  • V版本演进:功能演进过程中,算子或算子API可能会存在多个V版本,使用时请选择最高V版本(高版本默认兼容低版本能力)。
  • 对于算子文档中未声明支持的场景(如产品型号、数据类型、数据格式、数据维度等),不推荐开发者使用,当前版本不保证算子调用效果。
  • 昇腾虚拟化实例:当前版本融合类算子暂不支持该功能。融合类算子是指由多个独立基础“小算子”(如向量Vector、矩阵Cube等)融合而成,其功能与多个小算子等效,而性能通常更优,例如Flash Attention、通算融合算子(简称MC2算子)等。

使用向导

阅读手册正文前,请先熟悉向导表,了解手册大纲和章节作用,以帮助您快速了解算子分类、适用场景等信息。

表1 使用向导

使用场景

操作指引

说明

算子库依赖哪些头文件/库文件

头文件和库文件说明

介绍不同方式调用算子依赖的头文件或库文件。

算子库基础领域知识

基本概念

介绍算子的基本概念、术语及关键技术,帮助用户更好地理解算子文档。

算子API调用时依赖哪些公共接口

公共接口

调用算子接口时依赖的公共Meta接口,如创建aclTensor、aclScalar、aclIntArray等。

算子库中有哪些aclnn API

Math类接口

数学计算类算子库,提供Add、Abs等算子对应的C API。

NN类接口

Neural Network,即神经网络类算子库,提供Matmul等算子对应的C API。

目前该类算子API在整个算子库中占最大比重。

CV类接口

Computer Vision,即计算机视觉类算子库,提供GridSample等算子对应的C API。

Transformer类接口

大模型计算类算子库,提供FlashAttention、MC2(通算融合)、MoE(Mixture of Experts)等算子对应的C API。

RAS类接口

安全和维测类算子(Reliability, Availability and Serviceability),提供可靠性、可用性和可维护性等能力,包含安全、加密以及维测相关算子。

算子库有哪些Torch扩展接口

算子接口(torch_extension)

针对非PyTorch原生但常见的大模型算子,提供PyTorch API。通过JIT即时编译C++ Kernel Wrapper,将PyTorch函数桥接到aclnn API,同时通过GE Converter支持TorchAir图模式。

算子库中Ascend IR算子规格信息

Ascend IR算子规格说明

罗列了基于Ascend IR定义的算子信息。

算子库相关知识

附录

  • 提供开发aclnn API依赖的nnopbase接口
  • 提供算子开发过程中依赖的op_common接口
  • 介绍算子性能提升方法
  • 算子调用过程中常见FAQ和案例