AI 引擎架构概述 - 2022.1 简体中文

Versal ACAP AI 引擎编程环境 用户指南 (UG1076)

Document ID
UG1076
Release Date
2022-05-25
Version
2022.1 简体中文

AI 引擎阵列编程要求充分理解要实现的算法、AI 引擎的功能以及各功能单元之间的整体数据流。AI 引擎阵列支持三种级别的并行度:

SIMD
通过矢量寄存器,允许并行计算多个元素。
指令级别
通过 VLIW 架构,允许在单个时钟周期内执行多项指令。
多核
通过 AI 引擎阵列,可在其中并行执行最多 400 个 AI 引擎

虽然对于 AI 引擎而言,大部分标准 C 语言代码均可编译,但代码可能需要大幅重构才能在 AI 引擎阵列上实现最优性能。AI 引擎的优势在于,它能够在每个时钟周期内执行矢量 MAC 运算、为下一项运算加载 2 个 256 位矢量、存储来自上一项运算的单个 256 位矢量并递增一个指针或执行另一次标量运算。AI 引擎编译器不会执行任何自动矢量化或基于编译指示的矢量化。代码必须重写后才能使用 SIMD 内部数据类型(例如,v8int32)和矢量内部函数(例如,mac(…)),而这些都必须在单个流水打拍循环内执行,才能达成最优性能。32 位标量 RISC 处理器具有一个 ALU、部分非线性函数和数据类型转换。每个 AI 引擎所能访问的存储器量是有限的,这表示大型数据集需要分区。

AI 引擎内核即 AI 引擎上运行的函数,这些函数构成数据流 graph 规范的基本构建块。数据流 graph 是 Kahn 进程网络,具有确定性行为,不依赖于各种计算延迟或通信延迟。AI 引擎内核声明为空的 C/C++ 函数,通过提取窗口实参或串流实参来建立 graph 连接。内核还可包含静态数据和运行时参数实参,包括异步实参或触发实参。每个内核都应在其自己的源文件内定义。

为了达成总体系统性能,必须广泛阅读了解有关架构、分区、AI 引擎数据流 graph 生成和数据流连接最优化等方面的知识,积累相关经验。如需了解更多详细信息,请参阅 Versal ACAP AI 引擎架构手册(AM009)

赛灵思提供了 DSP 和通信库,其中包含经最优化的代码,可用于 AI 引擎,应尽可能多加利用。其中提供的源代码也提供了强大的资源,供用户学习有关 AI 引擎内核编码的信息。