昇腾社区首页
中文
注册
开发者
下载

vcmax/vcmin

功能说明

vcmax:获取 256Byte 向量的元素最大值及其索引,其中 half 类型有128个元素,float 类型有64个元素。最大值及其索引的输出由 order 控制。

vcmin:获取 256Byte 向量的元素最小值及其索引,其中 half 类型有128个元素,float 类型有64个元素。最小值及其索引的输出由 order 控制。

上述接口均支持通过MASK控制哪些元素参与计算。

表1 地址与步长对齐单位

数据类型

order参数

描述目的数据参数

描述源数据参数

地址大小

dstBlockStride

dstRepeatStride

地址大小

srcBlockStride

srcRepeatStride

f16

2’b00

4B

/

4B

32B

32B

32B

2’b01

4B

/

4B

32B

32B

32B

2’b10

2B

/

2B

32B

32B

32B

2’b11

4B

/

4B

32B

32B

32B

f32

2’b00

8B

/

8B

32B

32B

32B

2’b01

8B

/

8B

32B

32B

32B

2’b10

4B

/

4B

32B

32B

32B

2’b11

4B

/

4B

32B

32B

32B

补充说明:以order为 2’b00 为例,地址大小为4B的含义是:最大值和其索引各占2B。dstRepeatStride含义是:单位是4B。

接口原型

// 相同接口的不同原型区别在于源地址和目的地址的数据类型不同
// vcmax
void vcmax(__ubuf__ half *dst, __ubuf__ half *src, uint8_t repeat, uint16_t dstRepeatStride, uint16_t srcBlockStride, uint16_t srcRepeatStride, Order_t order); 
void vcmax(__ubuf__ float *dst, __ubuf__ float *src, uint8_t repeat, uint16_t dstRepeatStride, uint16_t srcBlockStride, uint16_t srcRepeatStride, Order_t order);

// vcmin
void vcmin(__ubuf__ half *dst, __ubuf__ half *src, uint8_t repeat, uint16_t dstRepeatStride, uint16_t srcBlockStride, uint16_t srcRepeatStride, Order_t order); 
void vcmin(__ubuf__ float *dst, __ubuf__ float *src, uint8_t repeat, uint16_t dstRepeatStride, uint16_t srcBlockStride, uint16_t srcRepeatStride, Order_t order);

参数说明

参数含义见表1 单目运算参数说明表

表2 vcmax特有参数说明

参数名

说明

order

支持四种模式:

  • VALUE_INDEX(2'b00):依次输出最大值和其索引,dst[0] 为最大值,dst[1] 是索引,如果存在多个最大值,索引值为最小索引。
  • INDEX_VALUE(2'b01):依次输出索引和最大值,dst[0] 为索引,dst[1] 是最大值,如果存在多个最大值,索引值为最小索引。
  • ONLY_VALUE(2'b10):只输出最大值。
  • ONLY_INDEX(2'b11):只输出最大值的最小索引,索引数据类型为 uint32_t,与输入数据类型无关。

流水类型

PIPE_V