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

vaxpy

功能说明

当 src0、src1 和 dst 类型相同时(均为 half 或 float),以 block(32Byte)为单位完成以下计算,一次完成8个 block 的计算。

计算源数据逐元素乘以标量 a 后与目的数据逐元素相加,计算公式如下:
each_element_of([dst]) = a * each_element_of([src]) + each_element_of([dst])
当 src 和 a 为 half 类型,dst 为 float 类型时,src 取低4个 block,合计 64 个 half 数。高4个 block 被忽略,与 a 相乘后,与 dst 的64个f loat(8个block)相加。
each_element_of([dst]) = a * each_element_of([src(低4个 block 的64个 half)]) + each_element_of([dst])

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

接口原型

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

void vaxpy(__ubuf__ float *dst, __ubuf__ float *src, float a, uint8_t repeat, uint16_t dstBlockStride, uint16_t srcBlockStride, uint16_t dstRepeatStride, uint16_t srcRepeatStride);

void vaxpy(__ubuf__ float *dst, __ubuf__ half *src, half a, uint8_t repeat, uint16_t dstBlockStride, uint16_t srcBlockStride, uint16_t dstRepeatStride, uint16_t srcRepeatStride);

参数说明

参数含义见 表2 双目运算参数说明

流水类型

PIPE_V