除了向量vector之外,AI Engine还提供另一种数据类型累加器accum。累加器本质上是乘法器的输出,与vector类似,有固定的硬件单元与之对应。
AI Engine每个累加器位宽为384位,共有8个,如下图所示。累加器名称以am打头。
与vector类似,累加器的声明也采用数据类型加长度的方式声明,合法的数据类型与长度如下图所示。例如:
声明了一个长度为8(有8个lane)的累加器,每个累加器位宽为48位。可以看到累加器用accum声明。
累加器和向量之间是可以相互转换的。从硬件角度而言,这意味着数据可以直接从向量寄存器传递给累加器。反过来,数据也可以从累加器传递给向量寄存器。而实际上,累加的过程也正是将数据部分和由累加器传递给向量寄存器再继续累加的过程。两者之间的转换需要用到from_vector和to_vector。具体使用方法如下方代码所示。
kx = accx.to_vector<float>();
没有回复内容