CANN/asc-devkit:SoftMax结果调整接口 AdjustSoftMaxRes【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit产品支持情况Ascend 950PR/Ascend 950DT支持Atlas A3 训练系列产品/Atlas A3 推理系列产品支持Atlas A2 训练系列产品/Atlas A2 推理系列产品支持Atlas 200I/500 A2 推理产品不支持Atlas 推理系列产品AI Core支持Atlas 推理系列产品Vector Core不支持Atlas 训练系列产品不支持Kirin X90支持Kirin 9030支持功能说明本接口用于调整SoftMax的计算结果为指定的值。主要用于对SoftMax相关计算结果做后处理。当输入的max中存在指定的值的时候会调整对应的softmaxres中的结果为输入的自定义的值。以上调整方式为按行进行即当max某一行的值为某个值时调整当前softmaxres对应一行的值都为输入的值。为方便理解通过Python脚本实现的方式表达其计算公式如下其中res是输入也是输出max\from\to\res_shape都为输入。def adjust_softmax_res(res, max, from, to, res_shape): for i in range(res_shape[0]): if max[i] from: for j in res_shape[1]: res[i][j] to return函数原型template typename T1, typename T2, bool isDataFormatNZ false, uint8_t stepSizeMode 0 __aicore__ inline bool AdjustSoftMaxRes(const LocalTensorT1 softMaxRes, const LocalTensorT2 maxTensor, const uint32_t from, const T1 to, const SoftMaxShapeInfo softmaxShapeInfo)参数说明表1模板参数说明参数名描述T1softMaxRes的数据类型。支持的数据类型为half、float。T2maxTensor的数据类型。支持的数据类型为half、float。isDataFormatNZ当前输入输出的数据格式是否为NZ格式默认数据格式为ND即默认取值为false。stepSizeModemaxTensor取元素的步进长度的模式。参数取值如下0默认值每个BlockSize32字节内取第一个元素的数值与输入from的数值作对比。即maxTensor的数据类型为float时按照输入shape为(m, 8)的格式每8个数取一个数maxTensor的数据类型为half时按照输入shape为(m, 16)的格式每16个数取一个数。非0取maxTensor每个元素的数值与输入from的数值作对比。即按照输入shape为(m, 1)的格式每次取一个元素的数值与输入from的数值作对比。该参数取值非0时仅支持maxTensor为ND格式。表2接口参数说明参数名输入/输出描述softMaxRes输入/输出既是源操作数也是目的操作数。类型为LocalTensor支持的TPosition为VECIN/VECCALC/VECOUT。LocalTensor数据结构的定义请参考LocalTensorlast轴长度需要32Byte对齐。一般为softmax计算的输出结果。maxTensor输入源操作数。类型为LocalTensor支持的TPosition为VECIN/VECCALC/VECOUT。softmax计算过程中reducemax的结果。maxTensor的last轴长度固定为32Byte即一个datablock长度。该datablock中的所有数据为同一个值。比如half数据类型下该datablock中的16个数均为相同的reducemax的值。非last轴的长度与softMaxRes保持一致。from输入源操作数类型为uint32_t。需要判断的maxTensor中的值。需要注意的是由于maxTensor中的值均为浮点数类型因此此处需要填入的值为浮点数类型对应十六进制的值。比如当需要判断maxTensor是否有1.0这个值时from值需要填入1.0对应的十六进制值0x3f800000。to输入源操作数类型和softMaxRes的数据类型保持一致。需要往softMaxRes中填充的值。softmaxShapeInfo输入softMaxRes的shape信息具体定义如下方代码所示其中参数的含义为srcM非尾轴长度的乘积。srcK尾轴长度必须32Byte对齐。oriSrcM原始非尾轴长度的乘积。oriSrcK原始尾轴长度。需要注意目前仅支持ND输入。struct SoftMaxShapeInfo { uint32_t srcM; uint32_t srcK; uint32_t oriSrcM; uint32_t oriSrcK; };返回值说明bool类型当返回true时表示maxTensor中存在需要判断的值若返回false则表示maxTensor中不存在需要判断的值。约束说明操作数地址对齐要求请参见通用地址对齐约束。当参数softmaxShapeInfo中srcM ! oriSrcM或者srcK ! oriSrcK时开发者需要对GM上的原始输入(oriSrcM, oriSrcK)在M或K方向补齐数据到(srcM, srcK)补齐的数据会参与部分运算在输入输出复用的场景下API的计算结果会覆盖srcTensor中补齐的原始数据在输入输出不复用的场景下API的计算结果会覆盖dstTensor中对应srcTensor补齐位置的数据。调用示例本样例中需要对SoftMax计算结果做后处理判断maxTensor中是否存在0xFF7FFFFF如果存在刷新对应结果为0。本样例中实现的是固定shape为输入x[32, 8]输出y[32, 32]的AdjustSoftMaxResCustom算子。输入softMaxRes的shape大小为[32, 8]maxTensor的shape大小为[32,8]数据类型均为float。// srcLocalsoftmax计算结果 AscendC::SoftMax(srcLocal, ...) // maxLocalsoftmax中间结果reducemax的结果 // FROM判断maxLocal中是否存在值等于FROM的元素 // TO当maxLocal中存在值等于FROM的元素时srcLocal中对应行的元素将被替换为TO // srcShape描述srcLocal的shape信息 AscendC::SoftMaxShapeInfo srcShape {height, width, height, width}; AscendC::AdjustSoftMaxResfloat, float(srcLocal, maxLocal, FROM, TO, srcShape);结果示例如下输入数据(srcLocal) [ 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 ] 输入数据(maxLocal) [ 7. 7. 7. 7. 7. 7. 7. 7. 15. 15. 15. 15. 15. 15. 15. 15. 23. 23. 23. 23. 23. 23. 23. 23. 31. 31. 31. 31. 31. 31. 31. 31. 39. 39. 39. 39. 39. 39. 39. 39. 47. 47. 47. 47. 47. 47. 47. 47. 55. 55. 55. 55. 55. 55. 55. 55. 63. 63. 63. 63. 63. 63. 63. 63. 71. 71. 71. 71. 71. 71. 71. 71. 79. 79. 79. 79. 79. 79. 79. 79. 87. 87. 87. 87. 87. 87. 87. 87. 95. 95. 95. 95. 95. 95. 95. 95. 103. 103. 103. 103. 103. 103. 103. 103. 111. 111. 111. 111. 111. 111. 111. 111. 119. 119. 119. 119. 119. 119. 119. 119. 127. 127. 127. 127. 127. 127. 127. 127. 135. 135. 135. 135. 135. 135. 135. 135. 143. 143. 143. 143. 143. 143. 143. 143. 151. 151. 151. 151. 151. 151. 151. 151. 159. 159. 159. 159. 159. 159. 159. 159. 167. 167. 167. 167. 167. 167. 167. 167. 175. 175. 175. 175. 175. 175. 175. 175. 183. 183. 183. 183. 183. 183. 183. 183. 191. 191. 191. 191. 191. 191. 191. 191. 199. 199. 199. 199. 199. 199. 199. 199. 207. 207. 207. 207. 207. 207. 207. 207. 215. 215. 215. 215. 215. 215. 215. 215. 223. 223. 223. 223. 223. 223. 223. 223. 231. 231. 231. 231. 231. 231. 231. 231. 239. 239. 239. 239. 239. 239. 239. 239. 247. 247. 247. 247. 247. 247. 247. 247. 255. 255. 255. 255. 255. 255. 255. 255. ] 输出数据(srcLocal) [ 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 0.0005766128 0.001567396 0.004260624 0.011581578 0.031481992 0.08557693 0.23262219 0.63233274 ]【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考