文档
注册

GetReduceMaxMinCount

功能说明

获取ReduceMaxReduceMin连续场景下的最大/最小值以及相应的索引值。

函数原型

  • 获取ReduceMaxReduceMin连续场景下的最大值与最小值,以及相应的索引值。

    template <typename T> __aicore__ inline void GetReduceMaxMinCount(T &maxMinValue, T &maxMinIndex)

  • 获取ReduceMaxReduceMin连续场景下的最大值与最小值。

    template <typename T> __aicore__ inline void GetReduceMaxMinCount(T &maxMinValue)

参数说明

表1 模板参数说明

参数名

描述

T

ReduceMax/ReduceMin指令的数据类型,支持half/float。

表2 参数说明

参数名

输入/输出

描述

maxMinValue

输入

ReduceMax/ReduceMin指令的最大值/最小值。

maxMinIndex

输入

ReduceMax/ReduceMin指令的最值对应的索引值。

Atlas推理系列产品(Ascend 310P处理器)AI Core,参数不生效

Atlas A2训练系列产品/Atlas 800I A2推理产品,参数生效

返回值

ReduceMax/ReduceMin的连续场景下的最大/最小值以及相应的索引值。

支持的型号

Atlas推理系列产品(Ascend 310P处理器)AI Core

Atlas A2训练系列产品/Atlas 800I A2推理产品

约束说明

  • 针对Atlas A2训练系列产品/Atlas 800I A2推理产品,由于ReduceMax/ReduceMin的内部实现原因,直接调用GetReduceMaxMinCount接口无法获取到准确的索引值,验证时需要使用WholeReduceMax/WholeReduceMin接口来获取准确的索引值。
  • 索引maxMinIndex数据是按照ReduceMax/ReduceMin的数据类型进行存储的,比如ReduceMax/ReduceMin使用half类型时,maxMinIndex是按照half类型进行存储的,如果按照half格式进行读取,maxMinIndex的值是不对的,因此maxMinIndex的读取需要使用reinterpret_cast方法转换到整数类型,若输入数据类型是half,需要使用reinterpret_cast<uint16_t>,若输入是float,需要使用reinterpret_cast<uint32_t>。

调用示例

  1. 以ReduceMax指令为例,首先执行ReduceMax指令。
    LocalTensor<float> src;
    LocalTensor<float> work;
    LocalTensor<float> dst;
    int32_t mask = 64;
    ReduceMax(dst, src, work, mask, 1, 8, true); // 连续场景,srcRepStride = 8,且calIndex = true
  2. 获取上述ReduceMax指令的最值与索引值。
    针对Atlas A2训练系列产品/Atlas 800I A2推理产品,需要使用WholeReduceMax指令获取准确的索引值,然后再调用GetReduceMaxMinCount指令。
    LocalTensor<float> src;
    LocalTensor<float> dst;
    int32_t mask = 64;
    WholeReudceMax(dst, src, mask, 1, 1, 1, 8);
    float val = 0;   // 最值
    float idx = 0;   // 最值的索引值,与ReduceMax的结果相同
    GetReduceMaxMinCount<float>(val, idx);
    针对Atlas推理系列产品(Ascend 310P处理器)AI Core版本,则可在调用ReduceMax后直接调用GetReduceMaxMinCount指令获取其最大/最小值。
    LocalTensor<float> src;
    LocalTensor<float> work;
    LocalTensor<float> dst;
    int32_t mask = 64;
    ReduceMax(dst, src, work, mask, 1, 8, true);
    float val = 0;   // 最值
    GetReduceMaxMinCount<float>(val);
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词