vcadd
功能说明
累加src中的所有元素。根据mode控制位,将计算结果输出到dst或SPR.ACC_VAL(可通过 int64_t get_acc_val() 获取)。
如果mode为0,在每次迭代中,该接口将生成一个累加结果并写入dst,而SPR.ACC_VAL保持不变。
如果mode为1,该接口将仅在所有迭代结束后生成一个最终的累加结果,并将其写入SPR.ACC_VAL,而不会写入 dst。对于SPR.ACC_VAL,其值在vcadd接口执行完毕后保持不变,直到有另一个 mode为1的vcadd接口被执行时,其值才会先被清零,然后由mode为1的vcadd接口进一步更新。
result = sum([src])
以block(32Byte)为单位完成向量的累加,每次迭代计算结果为8个block(256Byte)的累加值。
该接口支持通过MASK控制哪些元素参与计算。
接口原型
// 相同接口的不同原型区别在于源地址和目的地址的数据类型不同 void vcadd(__ubuf__ half *dst, __ubuf__ half *src, uint8_t repeat, uint16_t dstRepeatStride, uint16_t srcBlockStride, uint16_t srcRepeatStride, bool mode); void vcadd(__ubuf__ float *dst, __ubuf__ float *src, uint8_t repeat, uint16_t dstRepeatStride, uint16_t srcBlockStride, uint16_t srcRepeatStride, bool mode);
参数说明
参数含义见表1 单目运算参数说明表。
参数名 |
说明 |
取值范围 |
|---|---|---|
mode |
|
[0, 1] |
数据类型 |
目的数据 |
源数据 |
||
|---|---|---|---|---|
dstBlockStride |
dstRepeatStride |
srcBlockStride |
srcRepeatStride |
|
f16 |
/ |
2B |
32B |
32B |
f32 |
/ |
4B |
32B |
32B |
流水类型
PIPE_V
父主题: 规约运算