VTA 配置#

VTA 堆栈包含硬件加速堆栈和基于 TVM 的软件堆栈。VTA 引入了即用的灵活性:通过修改 3rdparty/vta-hw/config/vta_config.json 高级配置文件,用户可以改变张量固有形状、时钟频率、流水线、数据类型宽度和片上缓冲区大小。

参数概述#

下表解释了 vta_config.json 文件中列出的参数。

属性

格式

描述

TARGET

字符串

TVM 设备目标。

HW_VER

字符串

VTA 硬件版本号。

LOG_INP_WIDTH

Int (log2)

输入数据类型有符号整型宽度。

LOG_WGT_WIDTH

Int (log2)

权重数据类型有符号整型宽度。

LOG_ACC_WIDTH

Int (log2)

累加器(Accumulator)数据类型有符号整型宽度。

LOG_BATCH

Int (log2)

VTA 矩阵乘法 intrinsic 输入/输出维数 0。

LOG_BLOCK

Int (log2)

VTA 矩阵乘法内部维数

LOG_UOP_BUFF_SIZE

Int (log2)

Micro-op on-chip buffer in Bytes.

LOG_INP_BUFF_SIZE

Int (log2)

Input on-chip buffer in Bytes.

LOG_WGT_BUFF_SIZE

Int (log2)

Weight on-chip buffer in Bytes.

LOG_ACC_BUFF_SIZE

Int (log2)

Accumulator on-chip buffer in Bytes.

备注

当参数名称前面带有 LOG 时,这意味着它描述的值只能表示为 2 的幂。因此,用它们的 log2 值来描述这些参数。例如,为了描述输入数据类型的 8 位整型宽度,将 LOG_INP_WIDTH 设置为 3,即 8 的 log2。类似地,为了描述 64kB 的 micro-op buffer,将 LOG_UOP_BUFF_SIZE 设置为 16。

下面提供关于每个参数的额外细节:

  • TARGET:可以设置为 "pynq""ultra96""sim" (快速仿真器)或 "tsim" (cycle accurate sim with verilator)。

  • HW_VER:硬件版本,每次 VTA 硬件设计改变时增加。该参数用于唯一标识硬件位流。

  • LOG_BATCH:在形状 (A, B) x (B, C) 的乘法中等价于 A,或典型地,内部张量计算的 batch 维度。

  • LOG_BLOCK:相当于 B 和 C 的形状 (A, B) x (B, C) 的乘法,或者通常是内部张量计算的输入/输出通道维数。