AI 引擎架构提供了乘法指令,可对输入实参执行额外运算。AI 引擎 API 提供了多种类型的变体,包括可封装现有矢量的变体、可封装元素引用的累加器的变体,以及可传递到乘法函数中的变体,而无需为每一种可能的组合添加一种变体。随后,此 API 将根据硬件支持把各项运算合并为单一指令,或者先对矢量应用运算然后再执行乘法。
前乘运算是一种特殊的空运算,仅返回其封装的原始对象。其中包括:
-
op_abs
-
op_add
-
op_conj
-
op_max
-
op_min
-
op_none
-
op_sub
注释: 前乘运算应配合算术运算一起使用,例如,
aie::mul
和 aie::mac
。这些运算并非旨在独立使用。以下示例旨在演示如何对矢量 a 的绝对值执行逐元素乘法以及如何对矢量 b 执行共轭。
aie::accum<cacc48,16> foo(aie::vector<int16,16> a, aie::vector<cint16,16> b){
aie::accum<cacc48,16> ret;
ret = aie::mul(aie::op_abs(a), aie::op_conj(b));
return ret;
}