GetReduceRepeatMaxMinSpr(ISASI)【免费下载链接】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 推理产品xAtlas 推理系列产品 AI Core√Atlas 推理系列产品 Vector CorexAtlas 训练系列产品x功能说明头文件路径为basic_api/kernel_operator_vec_reduce_intf.h。本接口用于获取调用ReduceRepeatMAX/MIN时所有repeat内的最值及其索引或获取调用ReduceMax/ReduceMin得到的最值。计算结果以全局变量形式存储可以随时调用获取。函数原型获取调用ReduceRepeatMAX/MIN时所有repeat内的最值及其索引或获取调用ReduceMax/ReduceMin得到的最值此时获取的索引不准确。该函数原型仅支持如下型号Ascend 950PR/Ascend 950DTAtlas A3 训练系列产品/Atlas A3 推理系列产品Atlas A2 训练系列产品/Atlas A2 推理系列产品template typename T __aicore__ inline void GetReduceRepeatMaxMinSpr(T maxMinValue, T maxMinIndex)获取调用ReduceRepeatMAX/MIN时所有repeat内的最值或获取调用ReduceMax/ReduceMin得到的最值。该函数原型仅支持Atlas 推理系列产品 AI Core。template typename T __aicore__ inline void GetReduceRepeatMaxMinSpr(T maxMinValue)参数说明表 1模板参数说明参数名描述T操作数数据类型。表 2参数说明参数名输入/输出描述maxMinValue输出调用ReduceRepeatMAX/MIN时所有repeat内的最值或调用ReduceMax/ReduceMin得到的最值。maxMinIndex输出调用ReduceRepeatMAX/MIN时所有repeat内的最值索引。数据类型操作数支持的数据类型为half/float。返回值说明无约束说明仅支持ReduceRepeatMAX/MIN、ReduceMax、ReduceMin的连续计算场景即调用上述归约接口时参数需满足srcRepStride8、srcBlkStride1。不支持获取归约接口使用Mask Counter模式时的结果。用于ReduceMax/ReduceMin场景时仅可获取准确最值不能获取对应的准确索引如需准确索引以ReduceMax/ReduceMin自身输出为准。索引maxMinIndex按操作数数据类型存储比如操作数使用half类型时maxMinIndex是按照half类型进行存储的如果按照half格式进行读取maxMinIndex的值是不对的因此maxMinIndex的读取需要使用reinterpret_cast方法转换到整数类型若输入数据类型是half需要使用reinterpret_castuint16_t*若输入是float需要使用reinterpret_castuint32_t*。操作数数据类型T需要与所使用的归约接口目的操作数数据类型一致否则会导致精度错误。调用示例具体可参考ReduceRepeat系列归约指令样例。调用ReduceRepeatMAX后所有repeat内的最大值及索引。针对如下型号Ascend 950PR/Ascend 950DTAtlas A3 训练系列产品/Atlas A3 推理系列产品Atlas A2 训练系列产品/Atlas A2 推理系列产品AscendC::LocalTensorfloat src; AscendC::LocalTensorfloat dst; int32_t mask 64; float val 0; // 最大值 float idx 0; // 最大值索引 AscendC::ReduceRepeatAscendC::ReduceType::MAX(dst, src, mask, 1, 1, 1, 8); AscendC::GetReduceRepeatMaxMinSprfloat(val, idx); // 保证和ReduceRepeat的调用次序而且要配对调用针对Atlas 推理系列产品 AI CoreAscendC::LocalTensorfloat src; AscendC::LocalTensorfloat dst; int32_t mask 64; AscendC::ReduceRepeatAscendC::ReduceType::MAX(dst, src, mask, 1, 1, 1, 8); float val 0; // 最大值 AscendC::GetReduceRepeatMaxMinSprfloat(val); // 保证和ReduceRepeat的调用次序而且要配对调用调用ReduceMax后获取最大值。针对如下型号GetReduceRepeatMaxMinSpr仅用于获取最大值不能用于获取ReduceMax对应的准确索引。Ascend 950PR/Ascend 950DTAtlas A3 训练系列产品/Atlas A3 推理系列产品Atlas A2 训练系列产品/Atlas A2 推理系列产品AscendC::LocalTensorfloat src; AscendC::LocalTensorfloat work; AscendC::LocalTensorfloat dst; int32_t mask 64; AscendC::ReduceMax(dst, src, work, mask, 1, 8, true); // 连续场景srcRepStride 8且calIndex true float val 0; // 最大值 float idx 0; // 不用于获取ReduceMax对应的准确索引 AscendC::GetReduceRepeatMaxMinSprfloat(val, idx); // 保证和ReduceMax的调用次序而且要配对调用针对Atlas 推理系列产品 AI Core版本可在调用ReduceMax后直接调用GetReduceRepeatMaxMinSpr指令获取最大值。AscendC::LocalTensorfloat src; AscendC::LocalTensorfloat work; AscendC::LocalTensorfloat dst; int32_t mask 64; AscendC::ReduceMax(dst, src, work, mask, 1, 8, true); float val 0; // 最大值 AscendC::GetReduceRepeatMaxMinSprfloat(val); // 保证和ReduceMax的调用次序而且要配对调用【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考