AI 引擎数据类型 - 2023.2 简体中文

AI 引擎内核与计算图编程指南 (UG1079)

Document ID
UG1079
Release Date
2023-12-04
Version
2023.2 简体中文

AI 引擎标量单元支持位宽为 8、16 和 32 位的有符号和无符号整数,并支持部分单精度浮点用于执行特定运算。

AI 引擎矢量单元支持位宽为 8、16 和 32 位的整数和复数整数以及实数和复数单精度浮点值。它还支持含位宽 48 位和 80 位元素的累加器矢量数据类型。内部函数(例如,绝对值、加法、减法、比较、乘法和 MAC 运算)使用这些矢量数据类型来运算。矢量数据是使用如下命名约定来命名的:元素数、实数或复数、矢量类型或累加器类型以及位宽,如下所示:

aie::vector<[c]([u]int|float)(SizeofElement),NumLanes>
aie::accum<[c](acc|accfloat)(SizeofElements),NumLanes>

可选规范包括:

NumLanes
表示矢量中的元素数量,可取值:2、4、8、16、32、64 或 128。
c
表示将实数和虚数部分打包在一起的复杂数据。
int
表示整数矢量数据值。
float
表示单精度浮点值。
acc
表示累加器矢量数据值。
u
表示无符号。仅存在无符号 int8 矢量。
SizeofElement
表示矢量数据类型元素的大小。
  • 1024 位整数矢量类型是包含 8 位、16 位或 32 位矢量元素的矢量类型。这些矢量包含 16、32、64 或 128 条通道。
  • 512 位整数矢量类型是包含 8 位、16 位、32 位码或 64 位矢量元素的矢量类型。这些矢量包含 4、8、16、32 或 64 条通道。
  • 256 位整数矢量类型是包含 8 位、16 位、32 位、64 位或 128 位矢量元素的矢量类型。这些矢量包含 1、2、4、8、16 或 32 条通道。
  • 128 位整数矢量类型是包含 8 位、16 位或 32 位矢量元素的矢量类型。这些矢量包含 2、4、8 或 16 条通道。
  • 累加器数据类型位 80 位或 48 位元素的矢量类型。这些矢量包含 2、4、8 或 16 条通道。

矢量数据类型的数据总宽度可为 128 位、256 位、512 位或 1024 位。累加器数据类型的数据总宽度可为 320/384 位或 640/768 位。

例如,v16int32 是含 16 个元素的 32 位整数矢量。矢量的每个元素都被称为一条通道。妥善利用寄存器,使用必要的最小位宽即可改善性能。

图 1. aie::vector<int32,16>