算子接口(aclnn)
使用说明
为方便调用算子,提供一套基于C的API(以aclnn为前缀API),无需提供IR(Intermediate Representation)定义,方便高效构建模型与应用开发,该方式被称为“单算子API调用”,简称aclnn调用。
调用算子API时,需引用依赖的头文件和库文件,一般头文件默认在${INSTALL_DIR}/include/aclnnop,库文件默认在${INSTALL_DIR}/lib64,具体文件如下:
- 依赖的头文件:①方式1 (推荐):引用算子总头文件aclnn_ops_${ops_project}.h。②方式2:按需引用单算子API头文件aclnn_*.h。
- 依赖的库文件:按需引用算子总库文件libopapi_${ops_project}.so。
其中${INSTALL_DIR}表示CANN安装后文件路径;${ops_project}表示算子仓(如math、nn、cv、transformer),请配置为实际算子仓名。
接口列表
确定性简介:
- 配置说明:因CANN或NPU型号不同等原因,可能无法保证同一个算子多次运行结果一致。在相同条件下(平台、设备、版本号和其他随机性参数等),部分算子接口可通过
aclrtCtxSetSysParamOpt(参见《acl API(C)》)开启确定性算法,使多次运行结果一致。- 性能说明:同一个算子采用确定性计算通常比非确定性慢,因此模型单次运行性能可能会下降。但在实验、调试和调测等需要保证多次运行结果相同来定位问题的场景,确定性计算可以提升效率。
- 线程说明:同一线程中只能设置一次确定性状态,多次设置以最后一次有效设置为准。有效设置是指设置确定性状态后,真正执行了一次算子任务下发。如果仅设置,没有算子下发,只能是确定性变量开启但未下发给算子,因此不执行算子。 解决方案:暂不推荐一个线程多次设置确定性。该问题在二进制开启和关闭情况下均存在,在后续版本中会解决该问题。
算子接口列表如下:
| 接口名 | 说明 | 确定性说明(A2/A3) | 确定性说明(Ascend 950) |
|---|---|---|---|
| aclnnAllGatherMatmul | 完成AllGather通信与MatMul计算融合。 | 默认确定性实现 | 默认确定性实现 |
| aclnnAllGatherMatmulV2 | aclnnAllGatherMatmulV2接口是对aclnnAllGatherMatmul接口的功能拓展。 | 默认确定性实现 | 默认确定性实现 |
| aclnnAlltoAllAllGatherBatchMatMul | 完成AllToAll、AllGather集合通信与BatchMatMul计算融合、并行。 | 默认确定性实现 | - |
| aclnnAlltoAllMatmul | 完成AlltoAll通信与MatMul计算融合。 | 默认确定性实现 | 默认确定性实现 |
| aclnnAlltoAllQuantMatmul | 完成AlltoAll通信、量化计算、MatMul计算和反量化计算的融合。 | 默认确定性实现 | 默认确定性实现 |
| aclnnAlltoAllvGroupedMatMul | 完成路由专家AlltoAllv、Permute、GroupedMatMul融合并实现与共享专家MatMul并行融合。 | 默认确定性实现 | 默认确定性实现 |
| aclnnAlltoAllvQuantGroupedMatMul | 完成路由专家AlltoAllv、Permute、量化GroupedMatMul计算融合并实现与共享专家量化MatMul并行融合。 | - | 默认确定性实现 |
| aclnnApplyRotaryPosEmb | 将query和key两路算子融合成一路。执行旋转位置编码计算,计算结果执行原地更新。 | 默认确定性实现 | 默认确定性实现 |
| aclnnApplyRotaryPosEmbV2 | 将query和key两路算子融合成一路。执行旋转位置编码计算,计算结果执行原地更新。 | 默认确定性实现 | 默认确定性实现 |
| aclnnAttentionUpdate | 将各SP域PA算子的输出的中间结果lse,localOut两个局部变量结果更新成全局结果。 | 默认确定性实现 | 默认确定性实现 |
| aclnnBatchMatMulReduceScatterAlltoAll | BatchMatMulReduceScatterAllToAll是通算融合算子,实现BatchMatMul计算与ReduceScatter、AllToAll集合通信并行的算子。 | 默认确定性实现 | - |
| aclnnBlockSparseAttention | BlockSparseAttention通过BlockSparseMask指定每个Q块选择的KV块,实现高效的稀疏注意力计算。 | 默认确定性实现 | 默认确定性实现 |
| aclnnBlockSparseAttentionGrad | BlockSparseAttentionGrad通过BlockSparseMask指定每个Q块选择的KV块,实现高效的稀疏注意力计算。 | 默认确定性实现 | - |
| aclnnFusedCausalConv1d | 对序列执行因果一维卷积,沿序列维度使用缓存数据(长度为卷积核宽减1)对各序列头部进行padding,确保输出依赖当前及历史输入;卷积完成后,将当前序列尾部的数据(长度为卷积核宽减1)更新到缓存;在因果一维卷积输出的基础上,将原始输入加到输出上以实现残差连接。 | - | 默认确定性实现 |
| aclnnAttentionToFFN | 将Attention节点上数据发往FFN节点。 | 默认确定性实现 | - |
| aclnnChunkGatedDeltaRule | 完成chunk版的Gated Delta Rule计算。 | 默认确定性实现 | - |
| aclnnFFNToAttention | 将FFN节点上的token数据发往Attention节点。 | 默认非确定性实现 | - |
| aclnnDequantRopeQuantKvcache | 对输入张量进行dequant后,对尾轴进行切分,划分为q、k、vOut,对q、k进行旋转位置编码,并进行量化。 | 默认确定性实现 | - |
| aclnnDistributeBarrier | 完成通信域内的全卡同步,xRef仅用于构建Tensor依赖,接口内不对xRef做任何操作。 | 默认确定性实现 | 默认确定性实现 |
| aclnnDistributeBarrierV2 | 完成通信域内的全卡同步,xRef仅用于构建Tensor依赖,接口内不对xRef做任何操作。 | 默认确定性实现 | 默认确定性实现 |
| aclnnDenseLightningIndexerGradKLLoss | dense场景LightningIndexer的反向算子,再额外融合了Loss计算功能。 | 默认非确定性实现,支持配置开启 | - |
| aclnnDenseLightningIndexerSoftmaxLse | dense场景DenseLightningIndexerGradKlLoss算子计算Softmax输入的一个分支算子。 | 默认确定性实现 | 默认确定性实现 |
| aclnnFFN | 该FFN算子提供MoeFFN和FFN的计算功能。 | 默认非确定性实现,支持配置开启 | - |
| aclnnFFNV2 | 该FFN算子提供MoeFFN和FFN的计算功能。 | 默认非确定性实现,支持配置开启 | - |
| aclnnFFNV3 | 该FFN算子提供MoeFFN和FFN的计算功能。 | 默认非确定性实现,支持配置开启 | - |
| aclnnFlashAttentionScore | 训练场景下,使用FlashAttention算法实现self-attention(自注意力)的计算。 | 默认确定性实现 | 默认确定性实现 |
| aclnnFlashAttentionScoreV2 | 训练场景下,使用FlashAttention算法实现self-attention(自注意力)的计算。 | 默认确定性实现 | 默认确定性实现 |
| aclnnFlashAttentionScoreV3 | 训练场景下,使用FlashAttention算法实现self-attention(自注意力)的计算。对标竞品适配gptoss模型支持sink功能。 | 默认确定性实现 | 默认确定性实现 |
| aclnnFlashAttentionScoreV4 | 训练场景下,使用FlashAttention算法实现self-attention(自注意力)的计算。对标竞品适配gptoss模型支持sink功能。 | 默认确定性实现 | 默认确定性实现 |
| aclnnFlashAttentionScoreGrad | 训练场景下计算注意力的反向输出。 | 默认非确定性实现,支持配置开启 | - |
| aclnnFlashAttentionScoreGradV2 | 训练场景下计算注意力的反向输出,即aclnnFlashAttentionScoreV2的反向计算。 | 默认非确定性实现,支持配置开启 | - |
| aclnnFlashAttentionScoreGradV3 | 训练场景下计算注意力的反向输出,即aclnnFlashAttentionScoreV3的反向计算。 | 默认非确定性实现,支持配置开启 | - |
| aclnnFlashAttentionScoreGradV4 | 训练场景下计算注意力的反向输出,即FlashAttentionScoreV4的反向计算。该接口query、key、value参数支持多个长度相等或者长度不相等的sequence。 | 默认非确定性实现,支持配置开启 | 默认确定性实现 |
| aclnnFlashAttentionUnpaddingScoreGrad | 训练场景下计算注意力的反向输出,即aclnnFlashAttentionVarLenScore的反向计算。 | 默认非确定性实现,支持配置开启 | - |
| aclnnFlashAttentionUnpaddingScoreGradV2 | 训练场景下计算注意力的反向输出,即aclnnFlashAttentionVarLenScoreV2的反向计算。 | 默认非确定性实现,支持配置开启 | - |
| aclnnFlashAttentionUnpaddingScoreGradV3 | 训练场景下计算注意力的反向输出,即aclnnFlashAttentionVarLenScoreV3的反向计算。该接口相较于aclnnFlashAttentionUnpaddingScoreGradV2接口,新增queryRope、keyRope、dqRope和dkRope参数。 | 默认非确定性实现,支持配置开启 | - |
| aclnnFlashAttentionUnpaddingScoreGradV4 | 训练场景下计算注意力的反向输出。 | 默认非确定性实现,支持配置开启 | - |
| aclnnFlashAttentionUnpaddingScoreGradV5 | 训练场景下,使用FlashAttention算法实现self-attention(自注意力)的计算。增加sinkInOptional可选输入。 |
默认非确定性实现,支持配置开启 | - |
| aclnnFlashAttentionVarLenScore | 训练场景下,使用FlashAttention算法实现self-attention(自注意力)的计算。 | 默认确定性实现 | 默认确定性实现 |
| aclnnFlashAttentionVarLenScoreV2 | 训练场景下,使用FlashAttention算法实现self-attention(自注意力)的计算。 | 默认确定性实现 | 默认确定性实现 |
| aclnnFlashAttentionVarLenScoreV3 | 训练场景下,使用FlashAttention算法实现self-attention(自注意力)的计算。 | 默认确定性实现 | 默认确定性实现 |
| aclnnFlashAttentionVarLenScoreV4 | 训练场景下,使用FlashAttention算法实现self-attention(自注意力)的计算。 | 默认确定性实现 | 默认确定性实现 |
| aclnnFlashAttentionVarLenScoreV5 | 训练场景下,使用FlashAttention算法实现self-attention(自注意力)的计算。对标竞品适配gptoss模型支持sink功能。 | 默认确定性实现 | 默认确定性实现 |
| aclnnFusedInferAttentionScoreV4 | 适配Decode & Prefill场景的FlashAttention算子。 | 默认确定性实现 | - |
| aclnnFusedInferAttentionScoreV5 | 适配增量&全量推理场景的FlashAttention算子。 | 默认确定性实现 | 默认确定性实现 |
| aclnnGatherPaKvCache | 根据blockTables中的blockId值、seqLens中key/value的seqLen从keyCache/valueCache中将内存不连续的token搬运、拼接成连续的key/value序列。 | 默认确定性实现 | 默认确定性实现 |
| aclnnGroupedMatmulV5 | 实现分组矩阵乘计算,每组矩阵乘的维度大小可以不同。 | 默认确定性实现 | 默认确定性实现 |
| aclnnGroupedMatmulAdd | 实现分组矩阵乘计算,每组矩阵乘的维度大小可以不同。 | 默认确定性实现 | 默认确定性实现 |
| aclnnGroupedMatmulAddV2 | 实现分组矩阵乘计算后原地累加,每组矩阵乘的维度大小可以不同。 | 默认确定性实现 | |
| aclnnGroupedMatMulAlltoAllv | 完成路由专家GroupedMatMul、Unpermute、AlltoAllv融合并实现与共享专家MatMul并行融合。 | 默认确定性实现 | 默认确定性实现 |
| aclnnQuantGroupedMatMulAlltoAllv | 完成路由专家量化GroupedMatMul、Unpermute、AlltoAllv融合并实现与共享专家量化MatMul并行融合。 | - | 默认确定性实现 |
| aclnnGroupedMatmulFinalizeRouting | GroupedMatMul和MoeFinalizeRouting的融合算子。 | 默认非确定性实现,支持配置开启 | - |
| aclnnGroupedMatmulFinalizeRoutingV2 | GroupedMatmul和MoeFinalizeRouting的融合算子,GroupedMatmul计算后的输出按照索引做combine动作。 | 默认非确定性实现,支持配置开启 | - |
| aclnnGroupedMatmulFinalizeRoutingV3 | GroupedMatmul和MoeFinalizeRouting的融合算子,GroupedMatmul计算后的输出按照索引做combine动作。 | 默认非确定性实现,支持配置开启 | 默认确定性实现 |
| aclnnGroupedMatmulFinalizeRoutingWeightNz | GroupedMatMul和MoeFinalizeRouting的融合算子,GroupedMatmul计算后的输出按照索引做combine动作,支持输入Weight为AI处理器亲和数据排布格式(NZ)。 | 默认非确定性实现,支持配置开启 | - |
| aclnnGroupedMatmulFinalizeRoutingWeightNzV2 | GroupedMatmul和MoeFinalizeRouting的融合算子,GroupedMatmul计算后的输出按照索引做combine动作,支持w为AI处理器亲和数据排布格式(NZ)。 | 默认非确定性实现,支持配置开启 | 默认确定性实现 |
| aclnnGroupedMatmulSwigluQuant | 融合GroupedMatMul、Dequant、Swiglu和Quant。 | 默认确定性实现 | - |
| aclnnGroupedMatmulSwigluQuantV2 | 融合GroupedMatmul 、dequant、swiglu和quant。 | 默认确定性实现 | 默认确定性实现 |
| aclnnGroupedMatmulSwigluQuantWeightNZ | 融合GroupedMatMul、Dequant、Swiglu和Quant,输入权重Weight会被强制视为NZ格式。 | 默认确定性实现 | - |
| aclnnGroupedMatmulSwigluQuantWeightNzV2 | 融合GroupedMatMul、Dequant、Swiglu和Quant,输入权重Weight会被强制视为NZ格式。 | 默认确定性实现 | 默认确定性实现 |
| aclnnGroupedMatmulWeightNz | 实现分组矩阵乘计算,每组矩阵乘的维度大小可以不同,输入权重Weight会被强制视为NZ格式。 | 默认确定性实现 | 默认确定性实现 |
| aclnnIncreFlashAttentionV4 | 在全量推理场景的FlashAttention算子的基础上实现增量推理。 | 默认确定性实现 | - |
| aclnnInplaceAttentionWorkerScheduler | Attention和FFN分离部署场景下,Attention侧数据扫描算子。该算子接收来自FFNToAttention算子的输出数据,并对数据进行逐步扫描,确保数据准备就绪。 | 默认确定性实现 | 默认确定性实现 |
| aclnnInplaceFfnWorkerScheduler | Attention和FFN分离场景下,FFN侧数据扫描算子。该算子接收AttentionToFFN算子发送的数据,进行扫描并完成数据整理。 | 默认确定性实现 | 默认确定性实现 |
| aclnnInterleaveRope | 针对单输入 x 进行旋转位置编码。 | 默认确定性实现 | 默认确定性实现 |
| aclnnLightningIndexer | 稀疏attention前处理的计算,目的是选出关键的稀疏token位置。 | 默认确定性实现 | - |
| aclnnLightningIndexerGrad | 训练场景下,实现LightningIndexer反向,其中输入有Query, Key, Weights, Dy, Indices,反向主要利用正向计算的Indices从Key中提取TopK序列从而降低Matmul计算量。 | 默认非确定性实现,不支持配置开启 | |
| aclnnMaskedCausalConv1d | 对hidden层的token之间进行带mask的因果一维分组卷积操作。 | - | 默认确定性实现 |
| aclnnMaskedCausalConv1dBackward | 对hidden层的token之间进行一维分组卷积操作的反向梯度计算。 | - | 默认确定性实现 |
| aclnnMatmulAlltoAll | 完成MatMul计算与AlltoAll通信融合。 | 默认确定性实现 | 默认确定性实现 |
| aclnnMatmulAllReduce | 完成MatMul计算与AllReduce通信融合。 | 默认非确定性实现,支持配置开启 | 默认确定性实现 |
| aclnnMatmulAllReduceV2 | 完成MatMul计算与AllReduce通信融合。 | 默认非确定性实现,支持配置开启 | 默认确定性实现 |
| aclnnMatmulReduceScatter | 完成mm + reduce_scatter_base计算。 | 默认非确定性实现,支持配置开启 | 默认确定性实现 |
| aclnnMatmulReduceScatterV2 | aclnnMatmulReduceScatterV2接口是对aclnnMatmulReduceScatter接口的功能扩展。 | 默认非确定性实现,支持配置开启 | 默认确定性实现 |
| aclnnMlaPreprocess | Multi-Head Latent Attention前处理的计算 。 | 默认确定性实现 | - |
| aclnnMlaPreprocessV2 | 推理场景,Multi-Head Latent Attention前处理的计算。主要计算过程如下: | 默认确定性实现 | - |
| aclnnMlaProlog | Multi-Head Latent Attention前处理的计算 。 | 默认确定性实现 | - |
| aclnnMlaPrologV2WeightNz | Multi-Head Latent Attention前处理的计算 。 | 默认确定性实现 | - |
| aclnnMlaPrologV3WeightNz | Multi-Head Latent Attention前处理的计算 。 | 默认非确定性实现,支持配置开启 | 默认确定性实现 |
| aclnnMoeComputeExpertTokens | MoE计算中,通过二分查找的方式查找每个专家处理的最后一行的位置。 | 默认确定性实现 | 默认确定性实现 |
| aclnnMoeDistributeCombine | 当存在TP域通信时,先进行ReduceScatterV通信,再进行AlltoAllV通信,最后将接收的数据整合;当不存在TP域通信时,进行AlltoAllV通信,最后将接收的数据整合。 | 默认确定性实现 | 默认确定性实现 |
| aclnnMoeDistributeCombineV2 | 当存在TP域通信时,先进行ReduceScatterV通信,再进行AllToAllV通信,最后将接收的数据整合;当不存在TP域通信时,进行AllToAllV通信,最后将接收的数据整合。 | 默认确定性实现 | 默认确定性实现 |
| aclnnMoeDistributeCombineV3 | 当存在TP域通信时,先进行ReduceScatterV通信,再进行AlltoAllV通信,最后将接收的数据整合;当不存在TP域通信时,进行AlltoAllV通信,最后将接收的数据整合。 | 默认确定性实现 | 默认确定性实现 |
| aclnnMoeDistributeCombineV4 | 当存在TP域通信时,先进行ReduceScatterV通信,再进行AllToAllV通信,最后将接收的数据整合;当不存在TP域通信时,进行AllToAllV通信,最后将接收的数据整合。 | 默认确定性实现 | 默认确定性实现 |
| aclnnMoeDistributeCombineAddRmsNorm | 当存在TP域通信时,先进行ReduceScatterV通信,再进行AlltoAllV通信,最后将接收的数据整合;当不存在TP域通信时,进行AlltoAllV通信,最后将接收的数据整合,之后完成Add + RmsNorm融合。 | 默认确定性实现 | 默认确定性实现 |
| aclnnMoeDistributeCombineAddRmsNormV2 | 当存在TP域通信时,先进行ReduceScatterV通信,再进行AlltoAllV通信,最后将接收的数据整合;当不存在TP域通信时,进行AlltoAllV通信,最后将接收的数据整合,之后完成Add + RmsNorm融合。 | 默认确定性实现 | 默认确定性实现 |
| aclnnMoeDistributeDispatch | 对Token数据进行量化,当存在TP域通信时,先进行EP域的AllToAllV通信,再进行TP域的AllGatherV通信;当不存在TP域通信时,进行EP域的AllToAllV通信。 | 默认确定性实现 | 默认确定性实现 |
| aclnnMoeDistributeDispatchV2 | 对token数据进行量化,当存在TP域通信时,先进行EP域的AllToAllV通信,再进行TP域的AllGatherV通信;当不存在TP域通信时,进行EP域的AllToAllV通信。 | 默认确定性实现 | 默认确定性实现 |
| aclnnMoeDistributeDispatchV3 | 对token数据进行量化,当存在TP域通信时,先进行EP域的AllToAllV通信,再进行TP域的AllGatherV通信;当不存在TP域通信时,进行EP域的AllToAllV通信。 | 默认确定性实现 | 默认确定性实现 |
| aclnnMoeDistributeDispatchV4 | 对token数据进行量化,当存在TP域通信时,先进行EP域的AllToAllV通信,再进行TP域的AllGatherV通信;当不存在TP域通信时,进行EP域的AllToAllV通信。 | 默认确定性实现 | 默认确定性实现 |
| aclnnMoeFinalizeRouting | MoE计算中,最后处理合并MoE FFN的输出结果。 | 默认确定性实现 | - |
| aclnnMoeFinalizeRoutingV2 | MoE计算中,最后处理合并MoE FFN的输出结果,支持配置dropPadMode。 | 默认确定性实现 | 默认确定性实现 |
| aclnnMoeFinalizeRoutingV2Grad | aclnnMoeFinalizeRoutingV2的反向传播。 | 默认确定性实现 | 默认确定性实现 |
| aclnnMoeFusedTopk | MoE计算中,对输入x做Sigmoid计算,对计算结果分组进行排序,最后根据分组排序的结果选取前k个专家。 | 默认确定性实现 | - |
| aclnnMoeGatingTopK | MoE计算中,对输入x做Sigmoid计算,对计算结果分组进行排序,最后根据分组排序的结果选取前k个专家。 | 默认确定性实现 | 默认确定性实现 |
| aclnnMoeGatingTopKSoftmax | MoE计算中,对x的输出做Softmax计算,取TopK操作。 | 默认确定性实现 | 默认确定性实现 |
| aclnnMoeGatingTopKSoftmaxV2 | MoE计算中,如果renorm=0,先对x的输出做Softmax计算,再取TopK操作;如果renorm=1,先对x的输出做TopK操作,再进行Softmax操作。 | 默认确定性实现 | 默认确定性实现 |
| aclnnMoeInitRouting | MoE的routing计算,根据aclnnMoeGatingTopKSoftmax的计算结果做Routing处理。 | 默认确定性实现 | 默认确定性实现 |
| aclnnMoeInitRoutingV2 | 该算子对应MoE中的Routing计算,以MoeGatingTopKSoftmax算子的输出x和expert_idx作为输入,并输出Routing矩阵expanded_x等结果供后续计算使用。 | 默认确定性实现 | 默认确定性实现 |
| aclnnMoeInitRoutingV3 | MoE的routing计算,根据aclnnMoeGatingTopKSoftmaxV2的计算结果做routing处理,支持不量化和动态量化模式。 | 默认确定性实现 | 默认确定性实现 |
| aclnnMoeInitRoutingQuant | MoE的Routing计算,根据aclnnMoeGatingTopKSoftmax的计算结果做Routing处理,并对结果进行量化。 | 默认确定性实现 | - |
| aclnnMoeInitRoutingQuantV2 | MoE的Routing计算,根据aclnnMoeGatingTopKSoftmaxV2的计算结果做Routing处理。 | 默认确定性实现 | 默认确定性实现 |
| aclnnMoeInitRoutingV2Grad | aclnnMoeInitRoutingV2的反向传播,完成Tokens的加权求和。 | 默认确定性实现 | 默认确定性实现 |
| aclnnMoeTokenPermute | MoE的permute计算,根据索引indices将tokens广播并排序。 | 默认确定性实现 | 默认确定性实现 |
| aclnnMoeTokenPermuteGrad | aclnnMoeTokenPermute的反向传播计算。 | 默认确定性实现 | 默认确定性实现 |
| aclnnMoeTokenPermuteWithEp | MoE的permute计算,根据索引indices将tokens和可选probs广播后排序并按照rangeOptional中范围切片。 | 默认确定性实现 | - |
| aclnnMoeTokenPermuteWithEpGrad | aclnnMoeTokenPermuteWithEp的反向传播计算。 | 默认确定性实现 | - |
| aclnnMoeTokenPermuteWithRoutingMap | MoE的permute计算,将token和expert的标签作为routingMap传入,根据routingMaps将tokens和可选probsOptional广播后排序 | 默认确定性实现 | 默认确定性实现 |
| aclnnMoeTokenPermuteWithRoutingMapGrad | aclnnMoeTokenPermuteWithRoutingMap的反向传播。 | 默认确定性实现 | 默认确定性实现 |
| aclnnMoeTokenUnpermute | 根据sortedIndices存储的下标,获取permutedTokens中存储的输入数据;如果存在probs数据,permutedTokens会与probs相乘;最后进行累加求和,并输出计算结果。 | 默认确定性实现 | 默认确定性实现 |
| aclnnMoeTokenUnpermuteGrad | aclnnMoeTokenUnpermute的反向传播。 | 默认确定性实现 | 默认确定性实现 |
| aclnnMoeTokenUnpermuteWithEp | 根据sortedIndices存储的下标位置,去获取permutedTokens中的输入数据与probs相乘,并进行合并累加。 | 默认确定性实现 | - |
| aclnnMoeTokenUnpermuteWithEpGrad | aclnnMoeTokenUnpermuteWithEp的反向传播。 | 默认确定性实现 | - |
| aclnnMoeTokenUnpermuteWithRoutingMap | 对经过aclnnMoeTokenpermuteWithRoutingMap处理的permutedTokens,累加回原unpermutedTokens。 | 默认确定性实现 | 默认确定性实现 |
| aclnnMoeTokenUnpermuteWithRoutingMapGrad | aclnnMoeTokenUnpermuteWithRoutingMap的反向传播。 | 默认确定性实现 | 默认确定性实现 |
| aclnnMoeUpdateExpert | 本API支持负载均衡和专家剪枝功能。经过映射后的专家表和Mask可传入MoE层进行数据分发和处理。 | 默认确定性实现 | 默认确定性实现 |
| aclnnMhcPre | 基于一系列计算得到MHC架构中hidden层的HresH^{res}和HpostH^{post}投影矩阵以及Attention或MLP层的输入矩阵hinh^{in}。 | 默认确定性实现 | 默认确定性实现 |
| aclnnMhcPreBackward | aclnnMhcPre的反向传播。 | 默认确定性实现 | 默认确定性实现 |
| aclnnMhcPost | 基于一系列计算对mHC架构中上一层输出进行Post Mapping,对上一层的输入进行Res Mapping,然后对二者进行残差连接,得到下一层的输入。 | 默认确定性实现 | 默认确定性实现 |
| aclnnMhcPostBackward | mhc_post基于一系列计算对mHC架构中上一层输出进行Post Mapping,对上一层的输入进行Res Mapping,然后对二者进行残差连接,得到下一层的输入。该算子实现前述过程的反向。 | 默认确定性实现 | 默认确定性实现 |
| aclnnMhcSinkhornBackward | aclnnMhcSinkhorn的反向传播。 | - | 默认确定性实现 |
| aclnnNormRopeConcat | transfomer注意力机制中,针对query、key和Value实现归一化(Norm)、旋转位置编码(Rope)、特征拼接(Concat)。 | 默认确定性实现 | 默认确定性实现 |
| aclnnNormRopeConcatBackward | transfomer注意力机制中,针对query、key和Value实现归一化(Norm)、旋转位置编码(Rope)、特征拼接(Concat)融合算子功能反向推导。 | 默认非确定性实现,支持配置开启 | 默认确定性实现 |
| aclnnNsaCompress | 训练场景下,使用NSA Compress算法减轻long-context的注意力计算,实现在KV序列维度进行压缩。 | 默认确定性实现 | - |
| aclnnNsaCompressAttention | NSA中compress attention以及select topk索引计算。 | 默认确定性实现 | - |
| aclnnNsaCompressAttentionInfer | Native Sparse Attention推理过程中,Compress Attention的计算。 | 默认确定性实现 | - |
| aclnnNsaCompressGrad | aclnnNsaCompress算子的反向计算。 | 默认确定性实现 | - |
| aclnnNsaCompressWithCache | 实现Native-Sparse-Attention推理阶段的KV压缩。 | 默认确定性实现 | - |
| aclnnNsaSelectedAttention | 训练场景下,实现NativeSparseAttention算法中selected-attention(选择注意力)的计算。 | 默认确定性实现 | - |
| aclnnNsaSelectedAttentionGrad | 根据topkIndices对key和value选取大小为selectedBlockSize的数据重排,接着进行训练场景下计算注意力的反向输出。 | 默认非确定性实现,支持配置开启 | - |
| aclnnNsaSelectedAttentionInfer | Native Sparse Attention推理过程中,Selected Attention的计算。 | 默认确定性实现 | - |
| aclnnPromptFlashAttentionV3 | 全量推理场景的FlashAttention算子。 | 默认确定性实现 | - |
| aclnnQkvRmsNormRopeCache | 输入qkv融合张量,通过SplitVD拆分q、k、v张量,执行RmsNorm、ApplyRotaryPosEmb、Quant、Scatter融合操作,输出qOut、kCache、vCache、qBeforeQuant(可选)、kBeforeQuant(可选)、vBeforeQuant(可选)。 | 默认确定性实现 | - |
| aclnnQuantAllReduce | 实现quant + allReduce融合计算。 | 默认确定性实现 | 默认确定性实现 |
| aclnnQuantGroupedMatmulDequantWeightNZ | 对输入x进行量化,分组矩阵乘以及反量化,输入权重Weight会被强制视为NZ格式。 | 默认确定性实现 | - |
| aclnnQuantLightningIndexer | QuantLightningIndexer在LightningIndexer的基础上支持了Per-Token-Head量化输入。 | - | 默认确定性实现 |
| aclnnQuantMatmulAllReduce | 对量化后的入参x1、x2进行MatMul计算后,接着进行Dequant计算,接着与x3进行Add操作,最后做AllReduce计算。 | 默认非确定性实现,支持配置开启 | 默认确定性实现 |
| aclnnQuantMatmulAllReduceV2 | aclnnQuantMatmulAllReduceV2接口是对aclnnQuantMatmulAllReduce接口的功能扩展。 | 默认非确定性实现,支持配置开启 | 默认确定性实现 |
| aclnnQuantMatmulAllReduceV3 | aclnnQuantMatmulAllReduceV3接口是对aclnnQuantMatmulAllReduceV2接口的功能扩展。 | 默认非确定性实现,支持配置开启 | 默认确定性实现 |
| aclnnQuantMatmulAllReduceV4 | 兼容aclnnQuantMatmulAllReduceV3支持的功能,在此基础上新增perblock量化方式的支持。 | 默认非确定性实现,支持配置开启 | 默认确定性实现 |
| aclnnQuantMatmulAlltoAll | 对量化后的入参x1、x2进行MatMul计算后,接着进行Dequant计算,最后做AlltoAll通信。 | 默认确定性实现 | 默认确定性实现 |
| aclnnQuantGroupedMatmulDequant | 对输入x进行量化,分组矩阵乘以及反量化。 | 默认确定性实现 | 默认确定性实现 |
| aclnnQuantReduceScatter | 实现quant + reduceScatter融合计算。 | 默认确定性实现 | 默认确定性实现 |
| aclnnRainFusionAttention | RainFusionAttention稀疏注意力计算,支持灵活的块级稀疏模式,通过selectIdx指定每个Q块选择的KV块,实现高效的稀疏注意力计算。 | 默认确定性实现 | - |
| aclnnRecurrentGatedDeltaRule | 完成变步长的Recurrent Gated Delta Rule计算。 | 默认确定性实现 | 默认确定性实现 |
| aclnnRingAttentionUpdate | 将两次FlashAttention的输出根据其不同的softmax的max和sum更新。 | 默认确定性实现 | 默认确定性实现 |
| aclnnRingAttentionUpdateV2 | 指定softmax的输入排布,将两次FlashAttention的输出根据其不同的softmax的max和sum更新。 | 默认确定性实现 | 默认确定性实现 |
| aclnnRopeWithSinCosCache | 推理网络为了提升性能,将sin和cos输入通过cache传入,执行旋转位置编码计算。 | 默认确定性实现 | 默认确定性实现 |
| aclnnRopeWithSinCosCacheV2 | 对比V1增加cacheMode属性,指示cos和sin的拼接方式。 | 默认确定性实现 | 默认确定性实现 |
| aclnnRotaryPositionEmbedding | 执行单路旋转位置编码计算。 | 默认确定性实现 | 默认确定性实现 |
| aclnnRotaryPositionEmbeddingV2 | 执行单路旋转位置编码计算。本接口相较于aclnnRotaryPositionEmbedding,新增入参rotate。 | 默认确定性实现 | 默认确定性实现 |
| aclnnRotaryPositionEmbeddingGrad | 单路旋转位置编码aclnnRotaryPositionEmbedding的反向计算。 | 默认确定性实现 | 默认确定性实现 |
| aclnnScatterPaCache | 更新KCache中指定位置的key。 | 默认确定性实现 | 默认确定性实现 |
| aclnnScatterPaKvCache | 更新KvCache中指定位置的key和value。 | 默认确定性实现 | 默认确定性实现 |
| aclnnSparseFlashAttention | 根据sparse_indices选取重要性较高的key和value进行attention运算,得到attention_out输出。 | 默认确定性实现 | 默认确定性实现 |
| aclnnSparseFlashAttentionGrad | 根据topkIndices对key和value选取大小为selectedBlockSize的数据重排,接着进行训练场景下计算注意力的反向输出。 | 默认非确定性实现,支持配置开启 | 默认确定性实现 |
| aclnnSparseLightningIndexerGradKLLoss | LightningIndexer的反向算子,再额外融合了Loss计算功能。 | 默认非确定性实现,不支持配置开启 | 默认确定性实现 |
| aclnnSwinAttentionScoreQuant | 完成swin-transformer场景的Attention计算。 | 默认确定性实现 | - |
| aclnnSwinTransformerLnQkvQuant | Swin Transformer网络模型完成 Q、K、V 的计算。 | - | - |
| aclnnWeightQuantMatmulAllReduce | 对入参x2进行伪量化计算后,完成MatMul和AllReduce计算。 | 默认非确定性实现,支持配置开启 | 默认确定性实现 |
| aclnnKvRmsNormRopeCache | 对输入张量(kv)的尾轴,拆分出左半边用于rms_norm计算,右半边用于RoPE计算,再将计算结果分别scatter到两块cache中。 | 默认确定性实现 | 默认确定性实现 |
| aclnnFusedFloydAttention | 训练场景下,使用FloydAttention算法实现多维自注意力的计算。 | 默认确定性实现 | - |
| aclnnFusedFloydAttentionGrad | 训练场景下,计算Floyd注意力的反向输出,FloydAttn相较于传统FA主要是计算qk/pv注意力时会额外将seq作为batch轴从而转换为batchMatmul。 | 默认非确定性实现,不支持配置开启 | - |