算子接口(aclnn)
为方便调用算子,提供一套基于C的API(以aclnn为前缀API),无需提供IR(Intermediate Representation)定义,方便高效构建模型与应用开发,该方式被称为“单算子API调用”,简称aclnn调用。
算子接口列表如下:
| 接口名 | 说明 |
|---|---|
| aclnnAbs | 实现张量的绝对值运算。 |
| aclnnAcos&aclnnInplaceAcos | 对输入矩阵的每个元素进行反余弦操作后输出。 |
| aclnnAcosh&aclnnInplaceAcosh | 对输入Tensor中的每个元素进行反双曲余弦操作后输出。 |
| aclnnAdd&aclnnInplaceAdd | 完成加法计算。 |
| aclnnAddcdiv&aclnnInplaceAddcdiv | 完成加法计算。 |
| aclnnAddcmul&aclnnInplaceAddcmul | 执行 tensor1 与 tensor2 的逐元素乘法,将结果乘以标量值value并与输入self/selfRef做逐元素加法。 |
| aclnnAddLora | 为神经网络添加LoRA(Low-Rank Adaptation)层功能,通过低秩分解减少参数数量。 |
| aclnnAddr&aclnnInplaceAddr | 求一维向量vec1和vec2的外积得到一个二维矩阵,并将外积结果矩阵乘一个系数后和自身乘系数相加后输出。 |
| aclnnAll | 对于给定维度dim中的每一维,如果输入Tensor中该维度对应的所有元素计算为True,则返回True,否则返回False。 |
| aclnnAmax | 返回张量在指定维度(dim)上每个切片的最大值。 |
| aclnnAmin | 返回张量在指定维度(dim)上每个切片的最小值。 |
| aclnnAminmax | 返回输入张量在指定维度上每行的最小值和最大值。 |
| aclnnAminmaxAll | 返回输入张量在所有维度上的最小值和最大值。 |
| aclnnAminmaxDim | 返回输入张量在指定维度上的最小值和最大值。 |
| aclnnAny | 对于给定维度dim中的每一维,如果输入Tensor中该维度对应的任意元素计算为True,则返回True,否则返回False。 |
| aclnnArange | 从start起始到end结束按照step的间隔获取值,并保存到输出的1维张量,其中数据范围为[start,end)。 |
| aclnnArgMax | 返回张量在指定维度(dim)上的最大值的索引,并保存到out张量中。 |
| aclnnArgMin | 返回tensor中指定轴的最小值索引,并保存到out中。 |
| aclnnAsin&aclnnInplaceAsin | 对输入矩阵的每个元素进行反正弦操作后输出。 |
| aclnnAsinh&aclnnInplaceAsinh | 对输入Tensor中的每个元素进行反双曲正弦操作后输出。 |
| aclnnAtan&aclnnInplaceAtan | 对输入矩阵的每个元素进行反正切操作后输出。 |
| aclnnAtan2&aclnnInplaceAtan2 | 对输入张量self和other进行逐元素的反正切运算。 |
| aclnnAtanh&aclnnInplaceAtanh | 对输入Tensor中的每个元素进行反双曲正切操作后输出。 |
| aclnnBatchNormStats | 计算单卡输入数据的均值和标准差的倒数。 |
| aclnnBincount | 计算非负整数数组中每个数的频率。 |
| aclnnBitwiseNot | 输入为BOOL型tensor时,进行逻辑非运算;输入为INT型时进行按位非运算。 |
| aclnnBitwiseAndScalar | 计算输入tensor中每个元素和输入标量的按位与结果。 |
| aclnnBitwiseAndTensor | 输入为BOOL型tensor时,进行逻辑与运算;输入为INT型时,进行位与运算。 |
| aclnnBitwiseOrScalar&aclnnInplaceBitwiseOrScalar | 计算输入张量self中每个元素和输入标量other的按位或。 |
| aclnnBitwiseOrTensor&aclnnInplaceBitwiseOrTensor | 计算张量self中每个元素与other张量中对应位置的元素的按位或。 |
| aclnnBitwiseXorScalar&aclnnInplaceBitwiseXorScalar | 计算输入张量self中每个元素和输入标量other的按位异或,输入self和other必须是整数或布尔类型,对于布尔类型,计算逻辑异或。 |
| aclnnBitwiseXorTensor&aclnnInplaceBitwiseXorTensor | 计算输入张量self中每个元素与输入张量other中对应位置元素的按位异或,输入self和other必须是整数或布尔类型,对于布尔类型,计算逻辑异或。 |
| aclnnCast | 实现张量数据类型转换。 |
| aclnnCat | 将tensors中所有tensor按照维度dim进行级联。 |
| aclnnCeil&aclnnInplaceCeil | 返回输入tensor中每个元素向上取整的结果。 |
| aclnnChannelShuffle | 将(*, C, H, W)张量的channels分成g个组,然后将每个通道组中的通道进行随机重排,最后将所有通道合并输出,同时保持最终输出张量的shape和输入张量保持一致。 |
| aclnnCircularPad2d | 使用输入循环填充输入tensor的最后两维。 |
| aclnnCircularPad3d | 使用输入循环填充输入tensor的最后三维。 |
| aclnnCircularPad2dBackward | circular_pad2d的反向传播, 前向计算参考aclnnCircularPad2d。 |
| aclnnCircularPad3dBackward | aclnnCircularPad3d的反向传播。 |
| aclnnClamp | 将输入的所有元素限制在[min,max]范围内,如果min为None,则没有下限,如果max为None,则没有上限。 |
| aclnnComplex | 输入两个Shape和Dtype一致的Tensor:real和imag。 |
| aclnnConstantPadNd | 对输入的张量self,以pad参数为基准进行数据填充,填充值为value。 |
| aclnnContiguous | 将张量在内存上连续化,此算子暂无文档。 |
| aclnnCos&aclnnInplaceCos | 对输入矩阵的每个元素进行余弦操作后输出。 |
| aclnnCosh&aclnnInplaceCosh | 双曲函数,根据公式返回一个新的tensor。结果的形状与输入tensor相同。 |
| aclnnCummax | 计算self中的累积最大值,并返回最大值以及对应的索引。 |
| aclnnCummin | 计算self中的累积最小值,并返回最小值以及对应的索引。 |
| aclnnCumprod&aclnnInplaceCumprod | 新增aclnnCumprod接口,cumprod函数用于计算输入张量在指定维度上的累积乘积。 |
| aclnnCumsum | 对输入张量self的元素,按照指定维度dim依次进行累加,并将结果保存到输出张量out中。 |
| aclnnCumsumV2 | 对输入张量self的元素,按照指定维度dim依次进行累加,并将结果保存到输出张量out中。 |
| aclnnDiagFlat | 生成对角线张量。如果输入self为一维张量,则返回二维张量,self里元素为对角线值;如果输入self是二维及以上张量,则先进行扁平化(化简为一维张量),再转化为第一种场景处理。 |
| aclnnDiv&aclnnInplaceDiv | 完成除法计算。 |
| aclnnDot | 计算两个一维张量的点积结果。 |
| aclnnEqScalar&aclnnInplaceEqScalar | 计算self中的元素的值与other的值是否相等,将self每个元素与other的值的比较结果写入out中。 |
| aclnnEqTensor&aclnnInplaceEqTensor | 计算两个Tensor中的元素是否相等,返回一个Tensor,self=other的为True(1.),否则为False(0.)。 |
| aclnnEqual | 计算两个Tensor是否有相同的大小和元素,返回一个Bool类型。 |
| aclnnErf&aclnnInplaceErf | 返回输入Tensor中每个元素对应的误差函数的值。 |
| aclnnErfc&aclnnInplaceErfc | 返回输入Tensor中每个元素对应的误差互补函数的值。 |
| aclnnExp&aclnnInplaceExp | 返回一个新的张量,该张量的每个元素都是输入张量对应元素的指数。 |
| aclnnExpand | 将输入张量self广播成指定size的张量。 |
| aclnnExpm1&aclnnInplaceExpm1 | 以输入的self为指数,计算自然常数e的幂,并对指数计算结果进行减1计算。 |
| aclnnExp2&aclnnInplaceExp2 | self每个元素作为基数2的幂完成计算。 |
| aclnnExpSegsum | 进行分段和计算。生成对角线为0的半可分矩阵,且上三角为-inf。 |
| aclnnEye | 返回一个二维张量,该张量的对角线上元素值为1,其余元素值为0。 |
| aclnnFlatten | 将输入Tensor,基于给定的axis,扁平化为一个2D的Tensor。 |
| aclnnFloor&aclnnInplaceFloor | 返回输入Tensor中每个元素向下取整,并将结果回填到输入Tensor中。 |
| aclnnFloorDivide&aclnnInplaceFloorDivide | 完成除法计算,对余数向下取整。 |
| aclnnFloorDivides&aclnnInplaceFloorDivides | 完成除法计算,对余数向下取整。 |
| aclnnFmodScalar&aclnnInplaceFmodScalar | 返回 self除以other的余数。 |
| aclnnFmodTensor&aclnnInplaceFmodTensor | 返回self除以other的余数。 |
| aclnnFrac&aclnnInplaceFrac | 计算输入Tensor中每个元素的小数部分后输出。 |
| aclnnGcd | 对给定的self和other计算element-wise维度的最大公约数,其中self和other都需要为整数。 |
| aclnnGer | 实现self和vec2的外积。 |
| aclnnGeScalar&aclnnInplaceGeScalar | 判断输入Tensor中的每个元素是否大于等于other Scalar的值,返回一个Bool类型的Tensor,对应输入Tensor中每个位置的大于等于判断是否成立。 |
| aclnnGlobalAveragePool | 传入一个输入张量X,并在同一通道中的值上应用平均池化。 |
| aclnnGlobalMaxPool | 输入一个张量,并对同一通道中的值取最大值。 |
| aclnnGtScalar&aclnnInplaceGtScalar | 判断输入Tensor中的每个元素是否大于other Scalar的值,返回一个Bool类型的Tensor,对应输入Tensor中每个位置的大于判断是否成立。 |
| aclnnGroupedBiasAddGrad | 分组偏置加法(GroupedBiasAdd)的反向传播。 |
| aclnnHansDecode | 对压缩后的张量基于PDF进行解码,同时基于mantissa(尾数)重组恢复张量。 |
| aclnnHansEncode | 对张量的指数位所在字节实现PDF统计,按PDF分布统计进行无损压缩。 |
| aclnnHardtanh&aclnnInplaceHardtanh | 将输入的所有元素限制在[clipValueMin,clipValueMax]范围内,若元素大于clipValueMax则限制为clipValueMax,若元素小于clipValueMin则限制为clipValueMin,否则等于元素本身。 |
| aclnnIm2col | 图像到列,滑动局部窗口数据转为列向量,拼接为大张量。从批处理输入张量中提取滑动窗口。 |
| aclnnInplaceCopy | 将src中的元素复制到selfRef张量中并返回selfRef。 |
| aclnnInplaceFillDiagonal | 以fillValue填充tensor对角线。 |
| aclnnInplaceFillScalar | 对tensor填充指定标量。 |
| aclnnInplaceFillTensor | 对selfRef张量填充value, value是张量。 |
| aclnnInplaceMaskedFillScalar | 用value填充selfRef里面与mask矩阵中值为true的位置相对应的元素。 |
| aclnnInplaceMaskedFillTensor | 用value填充selfRef里面与mask矩阵中值为true的位置相对应的元素。 |
| aclnnInplaceOne | 返回形状和类型相同的张量,所有元素都设置为1。 |
| aclnnInplaceZero | 将selfRef张量填充为全零。 |
| aclnnIsClose | 返回一个带有布尔元素的新张量,判断给定的self和other是否彼此接近,如果值接近,则返回True,否则返回False。 |
| aclnnIsFinite | 判断张量中哪些元素是有限数值,即不是inf、-inf或nan。 |
| aclnnIsInf | 判断张量中哪些元素是无限大值,即是inf、-inf。 |
| aclnnIsInScalarTensor | 检查element中的元素是否等于testElement。 |
| aclnnIsNegInf | 判断输入张量的元素是否为负无穷。 |
| aclnnIsPosInf | 判断输入张量的元素是否为正无穷。 |
| aclnnKlDiv | 计算KL散度。 |
| aclnnLerp&aclnnInplaceLerp | 根据给定的权重,在起始和结束Tensor之间进行线性插值,返回插值后的Tensor。 |
| aclnnLerps&aclnnInplaceLerps | 根据给定的权重,在起始和结束Tensor之间进行线性插值,返回插值后的Tensor。 |
| aclnnLeScalar&aclnnInplaceLeScalar | 判断输入self中的元素值是否小于等于other的值,并将self的每个元素的值与other值的比较结果写入out中。 |
| aclnnLeTensor&aclnnInplaceLeTensor | 计算self中的元素值是否小于等于other的值,将self每个元素与other值的比较结果写入out中。 |
| aclnnLinspace | 生成一个等间隔数值序列。 |
| aclnnLog&aclnnInplaceLog | 完成自然对数的计算 |
| aclnnLog2&aclnnInplaceLog2 | 完成以2为底的对数计算 |
| aclnnLog10&aclnnInplaceLog10 | 完成输入以10为底的对数计算 |
| aclnnLog1p&aclnnInplaceLog1p | 对输入Tensor完成log1p运算。 |
| aclnnLogicalAnd&aclnnInplaceLogicalAnd | 完成给定输入张量元素的逻辑与运算。0被视为False,非0被视为True。 |
| aclnnLogicalNot&aclnnInplaceLogicalNot | 计算给定输入Tensor的逐元素逻辑非。如果未指定输出类型,输出Tensor是bool类型。 |
| aclnnLogicalOr&aclnnInplaceLogicalOr | 完成给定输入张量元素的逻辑或运算。当两个输入张量为非bool类型时,0被视为False,非0被视为True。 |
| aclnnLogSumExp | 返回输入tensor指定维度上的指数之和的对数。 |
| aclnnLtScalar&aclnnInplaceLtScalar | 判断输入self中的每个元素是否小于输入other的值,返回一个Bool类型的Tensor。 |
| aclnnLtTensor&aclnnInplaceLtTensor | 判断输入self中的每个元素是否小于输入other中的元素,返回一个Bool类型的Tensor。 |
| aclnnMaskedSelect | 根据一个布尔掩码张量(mask)中的值选择输入张量(self)中的元素作为输出,形成一个新的一维张量。 |
| aclnnMatmulCompressDequant | 进行l@r矩阵乘计算时,可先通过msModelSlim工具对r矩阵进行无损压缩,减少r矩阵的内存占用大小,然后通过本接口完成无损解压缩,矩阵乘,反量化计算。 |
| aclnnMaxDim | 返回Tensor指定维度的最大值及其索引位置。 |
| aclnnMaskedScale | 完成elementwise计算。 |
| aclnnMax | 返回Tensor所有元素中的最大值。 |
| aclnnMaximum | 计算两个张量中每个元素的最大值,并返回一个新的张量。 |
| aclnnMaxN | 对输入tensor列表中每个输入tensor对应元素求max。 |
| aclnnMaxV2 | 按指定维度对输入tensor求元素最大值。 |
| aclnnMean | 按指定维度对Tensor求均值。 |
| aclnnMeanV2 | 按指定维度对Tensor求均值。 |
| aclnnMin | 返回Tensor所有元素中的最小值。 |
| aclnnMinDim | 返回self中指定维度的最小值及其索引位置。 |
| aclnnMinimum | 计算两个张量中每个元素的最小值,并返回一个新的张量。 |
| aclnnMinN | 对输入tensor列表中每个输入tensor对应元素求min。 |
| aclnnMul&aclnnInplaceMul | 完成tensor与tensor间的乘法计算。 |
| aclnnMuls&aclnnInplaceMuls | 完成tensor与scalar间的乘法计算。 |
| aclnnNanToNum&aclnnInplaceNanToNum | 将输入中的NaN、正无穷大和负无穷大值分别替换为nan、posinf、neginf指定的值。 |
| aclnnNeg&aclnnInplaceNeg | 对输入的每个元素完成相反数计算。 |
| aclnnNeScalar&aclnnInplaceNeScalar | 计算selfRef中的元素的值与other的值是否不相等。 |
| aclnnNeTensor&aclnnInplaceNeTensor | 计算self(selfRef)中的元素的值与other的值是否不相等。 |
| aclnnNpuFormatCast | 完成ND←→NZ的转换功能。 |
| aclnnOneHot | aclnnOneHot |
| aclnnPdist | 计算输入self中每对行向量的p范数距离。 |
| aclnnPdistForward | 计算输入self中每对行向量的p范数距离。 |
| aclnnPermute | 对tensor的任意维度进行调换。如输入self是shape为[2, 3, 5]的tensor,dims为(2, 0, 1),则输出是shape为[5, 2, 3]的tensor。 |
| aclnnPowScalarTensor | exponent每个元素作为input对应元素的幂完成计算。 |
| aclnnPowTensorScalar&aclnnInplacePowTensorScalar | exponent每个元素作为input对应元素的幂完成计算。 |
| aclnnPowTensorTensor&aclnnInplacePowTensorTensor | exponent每个元素作为input对应元素的幂完成计算。 |
| aclnnProd | 回输入tensor中所有元素的乘积。 |
| aclnnProdDim | 返回输入tensor给定维度上每行的乘积。 |
| aclnnRange | 从start起始到end结束按照step的间隔取值。 |
| aclnnReal | 为输入张量的每一个元素取实数部分。 |
| aclnnReciprocal&aclnnInplaceReciprocal | 返回一个具有每个输入元素倒数的新张量。 |
| aclnnReduceLogSum | 返回给定维度中输入张量每行的和再取对数。 |
| aclnnReduceNansum | 将tensor中NaN处理为0后,返回输入tensor给定维度上的和。 |
| aclnnReduceSum | 返回给定维度中输入张量每行的和。 |
| aclnnReflectionPad1d | 使用输入边界的反射填充输入tensor。 |
| aclnnReflectionPad2d | 使用输入边界的反射填充输入tensor。 |
| aclnnReflectionPad3d | 3D反射填充。 |
| aclnnRemainderScalarTensor | 将scalar self进行broadcast成和tensor other一样shape的tensor以后,其中的每个元素都转换为除以other的对应元素以后得到的余数。 |
| aclnnRemainderTensorScalar&aclnnInplaceRemainderTensorScalar | 将tensor self中的每个元素都转换为除以scalar other以后得到的余数。 |
| aclnnRemainderTensorTensor&aclnnInplaceRemainderTensorTensor | 将tensor self和tensor other进行broadcast成一致的shape后,其中的每个元素都转换为除以other的对应元素以后得到的余数。 |
| aclnnRepeat | 对输入tensor沿着repeats中对每个维度指定的复制次数进行复制。 |
| aclnnReplicationPad1d | 使用输入边界填充输入tensor的最后一维。 |
| aclnnReplicationPad2d | 使用输入边界填充输入tensor的最后两维。 |
| aclnnReplicationPad3d | 使用输入边界填充输入tensor的最后三维。 |
| aclnnReplicationPad1dBackward | replication_pad1d的反向传播。 |
| aclnnReplicationPad2dBackward | replication_pad2d的反向传播, 前向计算参考aclnnReplicationPad2d。 |
| aclnnReplicationPad3dBackward | 计算aclnnReplicationPad3d的反向传播。 |
| aclnnReflectionPad1dBackward | reflection_pad1d的反向传播,前向计算参考aclnnReflectionPad1d。 |
| aclnnReflectionPad2dBackward | reflection_pad2d的反向传播,前向计算参考aclnnReflectionPad2d。 |
| aclnnReflectionPad3dBackward | 计算aclnnReflectionPad3d api的反向传播。 |
| aclnnRingAttentionUpdate | RingAttentionUpdate算子功能是将两次FlashAttention的输出根据其不同的softmax的max和sum更新。 |
| aclnnRoll | 沿给定尺寸和维度移动Tensor中的数据。 |
| aclnnRound&aclnnInplaceRound | 将输入的值舍入到最接近的整数,若该值与两个整数距离一样则向偶数取整。 |
| aclnnRoundDecimals&aclnnInplaceRoundDecimals | 将输入Tensor的元素四舍五入到指定的位数。 |
| aclnnRsqrt&aclnnInplaceRsqrt | 求input(Tensor)每个元素的平方根的倒数。 |
| aclnnRsub | 完成减法计算。 |
| aclnnScale | 参见算子文档。 |
| aclnnSearchSorted | 在一个已排序的张量(sortedSequence)中查找给定tensor值(self)应该插入的位置。 |
| aclnnSign | 对输入的tensor逐元素进行Sign符号函数的运算并输出结果tensor。 |
| aclnnSignBitsPack | 将float16类型或者float32类型的1位Adam打包为uint8。 |
| aclnnSignBitsUnpack | 将uint8类型1位Adam拆包为float32或者float16。 |
| aclnnSilentCheck | SilentCheckV2算子功能主要根据输入特征值(val),与绝对阈值、相对阈值比较,来识别是否触发静默检测故障。 |
| aclnnSin&aclnnInplaceSin | 对输入Tensor完成sin运算。 |
| aclnnSinc&aclnnInplaceSinc | 对输入Tensor完成sinc运算。 |
| aclnnSinh&aclnnInplaceSinh | 对输入Tensor完成sinh运算。 |
| aclnnSinkhorn | 计算Sinkhorn距离,可以用于MoE模型中的专家路由。 |
| aclnnSlice | 在指定维度dim上,根据给定的范围[start,end]和步长step,从输入张量self中提取子张量out。 |
| aclnnSliceV2 | 根据给定的维度axes、范围[starts,ends]和步长steps,从输入张量self中提取张量out。 |
| aclnnSort | 将输入tensor中的元素根据指定维度进行升序/降序, 并且返回对应的index值。 |
| aclnnSplitTensor | 将输入self沿dim轴按照splitSections大小均匀切分。 |
| aclnnSplitWithSize | 将输入self沿dim轴切分至splitSize中每个元素的大小。 |
| aclnnSqrt&aclnnInplaceSqrt | 完成非负数平方根计算,负数情况返回nan。 |
| aclnnSquare | 为输入张量的每一个元素计算平方值。 |
| aclnnStack | 沿着新维度连接张量序列。 |
| aclnnStackBallQuery | 见算子文档。 |
| aclnnStd | 计算指定维度(dim)的标准差,这个dim可以是单个维度,维度列表或者None。 |
| aclnnStdMeanCorrection | 计算样本标准差和均值。 |
| aclnnStridedSliceAssignV2 | StridedSliceAssign是一种张量切片赋值操作,它可以将张量inputValue的内容,赋值给目标张量varRef中的指定位置。 |
| aclnnSub&aclnnInplaceSub | 完成减法计算,被减数按alpha进行缩放。 |
| aclnnSum | 返回输入tensors列表中每个输入tensor依次做add求和。 |
| aclnnSWhere | 根据条件选取self或other中元素并返回(支持广播)。 |
| aclnnTan&aclnnInplaceTan | 它计算输入张量self中每个元素的正切值,并将结果存储在输出张量out中。 |
| aclnnTanh&aclnnInplaceTanh | 激活函数。返回与输入tensor shape相同的tensor,对输入tensor进行elementwise的计算。 |
| aclnnTanhBackward | aclnnTanh的反向。 |
| aclnnTransConvolutionWeight | 需要和aclnnCalculateConvolutionWeightSize接口配套使用,用于创建一个对于Convolution算子计算性能亲和的weight Tensor。 |
| aclnnTransformBiasRescaleQkv | TransformBiasRescaleQkv 算子是一个用于处理多头注意力机制中查询(Query)、键(Key)、值(Value)向量的接口。 |
| aclnnTransMatmulWeight | 需要和aclnnCalculateMatmulWeightSize、aclnnCalculateMatmulWeightSizeV2接口配套使用,用于创建一个对于Matmul算子计算性能亲和的weight Tensor。 |
| aclnnTriangularSolve | 求解一个具有方形上或下三角形可逆矩阵A和多个右侧b的方程组。 |
| aclnnTrunc&aclnnInplaceTrunc | 对输入Tensor完成trunc运算(将数字的小数部分截去,返回整数部分)。 |
| aclnnUnfoldGrad | 实现Unfold算子的反向功能,计算相应的梯度。 |
| aclnnVar | 返回输入Tensor指定维度的值求得的方差。 |
| aclnnVarMean | 返回输入Tensor指定维度的值求得的均值及方差。 |
| aclnnXLogYScalarOther&aclnnInplaceXLogYScalarOther | 计算self * log(other)的结果。 |
| aclnnXLogYScalarSelf | 计算self * log(other)的结果。 |
| aclnnXLogYTensor&aclnnInplaceXLogYTensor | 计算self * log(other)的结果。 |
| aclRfft1D | 对输入张量self进行RFFT(傅里叶变换)计算,输出是一个包含非负频率的复数张量。 |
| aclStft | 计算输入在滑动窗口内的傅里叶变换。 |