昇腾社区首页
中文
注册

接口列表

融合算子简介

融合算子由多个独立的小算子融合而成,其功能与多个小算子功能等价,性能方面通常优于独立的小算子。用户可根据实际业务场景诉求,按具体算法自由融合向量(Vector)、矩阵(Cube)算子以达到性能上的收益。

例如大语言模型(Large Language Model, LLM)核心计算为Scaled dot product attention(基于矩阵乘法的注意力机制),其核心实现如下图。图中Matmul算子(Cube)、Scale算子(Vector)、Mask算子(Vector)、SoftMax算子(Vector)融合为一个大算子。

融合算子通常有如下优势:

  • 减少计算量:可以将多个算子合并为一个,简化计算过程,减少计算量,提高计算效率。
  • 减少内存占用:可以将多个算子的中间结果合并为一个,减少内存占用,提高内存利用率。
  • 优化数据流:可以减少数据在不同算子之间的传输,优化数据流,提高数据处理效率。
  • 简化代码实现:可以简化代码实现,减少代码量,提高代码可读性和可维护性。

融合算子归属领域

算子接口可被归属为如下领域,您可根据业务需要安装对应领域的算子二进制文件(Ascend-cann-kernels),无需全量安装,以提高应用开发效率,库文件安装指导请参见中“附录A:参考信息 > 参数说明 > --feature”。

  • aclnn_ops_infer:NN网络算子推理库
  • aclnn_ops_train:NN网络算子训练库
  • aclnn_math:数学算子库
  • aclnn_rand:随机数算子库

其中推理库依赖数学库,训练库依赖推理库、数学库与随机库。每个算子接口所属领域如下所示。

注意:表中标注的“代码开放”表示该算子接口已在Gitee cann-ops-adv仓提供了源码,您可以单击获取接口实现详情和样例。

aclnn api aclnn_ops_infer aclnn_ops_train aclnn_math aclnn_rand
(代码开放)
(代码开放)
(代码开放)
(代码开放)
(代码开放)
(代码开放)
(代码开放)
(代码开放)
(代码开放)
(代码开放)
(代码开放)
(代码开放)
(代码开放)
(代码开放)
(代码开放)
(代码开放)
(代码开放)
(代码开放)
(代码开放)
(代码开放)