下载
中文
注册

接口列表

融合算子简介

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

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

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

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

融合算子归属领域

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

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

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

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

aclnn api aclnn_ops_infer aclnn_ops_train aclnn_math aclnn_rand
aclnnAddLayerNorm
aclnnAddLayerNormGrad
aclnnAddRmsNorm
aclnnAddRmsNormQuant
aclnnAddRmsNormDynamicQuant
aclnnAllGatherMatmul
aclnnAlltoAllAllGatherBatchMatMul
aclnnApplyRotaryPosEmb
aclnnBatchMatMulReduceScatterAlltoAll
aclnnBidirectionLSTM
aclnnBidirectionLSTMV2
aclnnDeepNorm
aclnnDeepNormGrad
aclnnDynamicQuant
aclnnDynamicQuantV2
aclnnEinsum
aclnnFFN(代码开放)
aclnnFFNV2(代码开放)
aclnnFFNV3(代码开放)
aclnnFlashAttentionScore(代码开放)
aclnnFlashAttentionScoreGrad(代码开放)
aclnnFlashAttentionScoreGradV2(代码开放)
aclnnFlashAttentionScoreV2(代码开放)
aclnnFlashAttentionUnpaddingScoreGrad(代码开放)
aclnnFlashAttentionUnpaddingScoreGradV2(代码开放)
aclnnFlashAttentionVarLenScore(代码开放)
aclnnFlashAttentionVarLenScoreV2(代码开放)
aclnnFusedInferAttentionScore(代码开放)
aclnnFusedInferAttentionScoreV2(代码开放)
aclnnGroupedMatmul
aclnnGroupedMatmulV2
aclnnGroupedMatmulV3
aclnnGroupedMatmulV4
aclnnGroupedMatMulAllReduce
aclnnIncreFlashAttention(代码开放)
aclnnIncreFlashAttentionV2(代码开放)
aclnnIncreFlashAttentionV3(代码开放)
aclnnIncreFlashAttentionV4(代码开放)
aclnnInplaceMatmulAllReduceAddRmsNorm
aclnnInplaceQuantMatmulAllReduceAddRmsNorm
aclnnInplaceQuantScatter
aclnnInplaceWeightQuantMatmulAllReduceAddRmsNorm
aclnnInstanceNorm
aclnnMatmulAllReduce
aclnnMatmulAllReduceV2
aclnnMatmulAllReduceAddRmsNorm
aclnnMatmulReduceScatter
aclnnMoeComputeExpertTokens
aclnnMoeFinalizeRouting
aclnnMoeFinalizeRoutingV2
aclnnMoeFinalizeRoutingV2Grad
aclnnMoeGatingTopKSoftmax
aclnnMoeGatingTopKSoftmaxV2
aclnnMoeInitRouting
aclnnMoeInitRoutingV2
aclnnMoeInitRoutingV2Grad
aclnnMoeInitRoutingQuant
aclnnMoeInitRoutingQuantV2
aclnnMoeTokenPermute
aclnnMoeTokenPermuteGrad
aclnnMoeTokenUnpermute
aclnnMoeTokenUnpermuteGrad
aclnnMrgbaCustom
aclnnMultiScaleDeformableAttentionGrad
aclnnMultiScaleDeformableAttnFunction
aclnnPromptFlashAttention(代码开放)
aclnnPromptFlashAttentionV2(代码开放)
aclnnPromptFlashAttentionV3(代码开放)
aclnnQuantMatmulAllReduce
aclnnQuantMatmulAllReduceV2
aclnnQuantMatmulAllReduceV3
aclnnQuantMatmulAllReduceAddRmsNorm
aclnnRingAttentionUpdate
aclnnRmsNorm
aclnnRmsNormGrad
aclnnSwinAttentionScoreQuant
aclnnSwinTransformerLnQkvQuant
aclnnWeightQuantBatchMatmulV2
aclnnWeightQuantBatchMatmulV3
aclnnWeightQuantMatmulAllReduce
aclnnWeightQuantMatmulAllReduceAddRmsNorm
aclRfft1D
aclStft