算子接口(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 计算输入在滑动窗口内的傅里叶变换。