vmla指令抽象。
z = x * y + z, x、y 按元素相乘,相乘的结果与z按元素相加。
目前支持:
type = f16, f16 = f16 * f16 + f16.
type = f32, f32 = f32 * f32 + f32.
type = fmix, f32 = f16 * f16 + f32, 其中Xn,Xm向量使用64个元素的f16数据用于计算,源向量仅使用低4个block,4个高block被忽略。Xd是64个元素的包含8个block的f32数据,同时作为目标向量和第三个源向量。
class Vmla(x, y, z)
参数名 |
输入/输出 |
数据类型 |
说明 |
---|---|---|---|
x |
输入 |
tensor变量 |
输入x向量tensor,支持FP16,FP32。 |
y |
输入 |
tensor变量 |
输入y向量tensor,支持FP16,FP32。 |
z |
输出 |
tensor变量 |
输出向量tensor,支持FP16,FP32。 |
vector指令输入输出数据的tensor均在“UB”空间中。
ub_x, ub_y, ub_z = Tensor("UB"), Tensor("UB"), Tensor("UB") ub_x.load(gm_x) ub_y.load(gm_y) out = vmla(ub_x, ub_y, ub_z)()