下载
中文
注册

接口列表

融合算子简介

融合算子是将多个独立的“小算子”融合成一个“大算子”,多个小算子的功能和大算子的功能等价,而大算子在性能、内存等方面往往优于独立的小算子。用户可以根据实际业务场景诉求,自由融合向量(Vector)、矩阵(Cube)算子以达到性能或内存收益。

例如大语言模型(Large Language Model, LLM)核心计算为Scaled dot product attention,其核心实现如下图。图中Matmul算子(Cube)、Scale算子(Vector)、Mask算子(Vector)、SoftMax算子(Vector)融合为一个大算子。

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

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

融合算子归属领域

说明:当前版本中部分融合算子在Gitee cann-ops-adv仓提供了源码,您可以单击Link获取代码开放的融合算子详情介绍。

算子接口可被归属为如下领域:

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

其中推理库依赖数学库,训练库依赖推理库、数学库与随机库。

每个算子接口所属领域如下所示。

aclnn api aclnn_ops_infer aclnn_ops_train aclnn_math aclnn_rand
aclnnAddLayerNorm
aclnnAddLayerNormGrad
aclnnAddRmsNorm
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