概述 - 2022.1 简体中文

AI 引擎内核编码 最佳实践指南 (UG1079)

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

Versal® AI Core 系列可借助 AI 引擎提供突破性的人工智能 (AI) 推断加速,此 AI 引擎的计算性能较当前服务器级 CPU 高 100 倍。此系列应用范围广泛,包括用于云端动态工作负载以及超高带宽网络,同时还可提供高级安全性功能。AI 和数据科学家以及软硬件开发者均可充分利用高计算密度的优势来加速提升任何应用的性能。鉴于 AI 引擎所具备的高级信号处理计算能力,它十分适合用于高度优化的无线应用,例如,射频、5G、回程 (backhaul) 和其它高性能 DSP 应用。

注释: 该版本涵盖了与 AI 引擎紧密相关的必要硬件详细信息。利用 AI 引擎 API 进行软件编程和最优化的技能均为可扩展至新架构的技能。

AI 引擎是超长指令字 (VLIW) 处理器阵列,具有高度优化的单指令流多数据流 (SIMD) 矢量单元,专用于各种计算密集型应用,尤其是数字信号处理 (DSP)、5G 无线应用和 AI 技术(如机器学习 (ML))等。

AI 引擎阵列支持三种级别的并行度:

指令级并行度 (ILP)
通过 VLIW 架构,允许在单个时钟周期内执行多次运算。
SIMD
通过矢量寄存器允许并行计算多个(例如,8 个)元素。
多核
通过 AI 引擎阵列,支持并行执行最多 400 个 AI 引擎

指令级并行度包括标量操作:最高 2 次移动、2 次矢量读取(加载)、1 次矢量写入(存储)和 1 条可执行的矢量指令,总计每个时钟周期达 7 路 VLIW 指令。数据级并行度是通过矢量级操作来实现的,其中每个时钟周期可执行多组数据操作。

每个 AI 引擎均包含矢量和标量处理器、专用程序存储器、本地 32 KB 数据存储器、通过指令(取决于所在的行)访问自身的本地存储器和 3 个相邻的 AI 引擎。它还可访问 DMA 引擎和 AXI4 互连交换机,以通过串流来与其它 AI 引擎进行通信或者与可编程逻辑 (PL) 或 DMA 进行通信。请参阅 Versal ACAP AI 引擎架构手册(AM009) 以获取有关 AI 引擎阵列和接口的具体详细信息。

虽然对于 AI 引擎而言,大部分标准 C 语言代码均可编译,但代码可能需要重构才能充分利用硬件所提供的并行度。AI 引擎的优势在于,它能够在每个时钟周期内使用 2 个矢量执行乘累加 (MAC) 运算、为下一项运算加载 2 个矢量、存储来自上一项运算的单个矢量,并递增一个指针或执行另一次标量运算。称为内部函数的专用函数允许您以 AI 引擎矢量处理器和标量处理器为目标,并提供多个常用矢量函数和标量函数的实现,使您能够专注于处理目标算法。AI 引擎不仅包含矢量单元,还包含标量单元,可用于非线性函数和数据类型转换。

AI 引擎程序包含以 C++ 编写的数据流 graph(自适应数据流 graph)规范。此规范可使用 AI 引擎编译器进行编译并执行。自适应数据流 (ADF) graph 应用由多个节点和边缘组成,其中节点表示计算内核函数,边缘则表示数据连接。应用中的内核可编译为在 AI 引擎上运行,这些内核构成了 ADF graph 规范的基础构建块。ADF graph 属于 Kahn 进程网络,其中包含并行运行的 AI 引擎内核。AI 引擎内核在数据串流上执行运算。这些内核会耗用输入数据块并生成输出数据块。内核还可包含静态数据或运行时参数 (RTP) 实参,包括异步实参或同步实参。

下图显示了 ADF graph 的概念视图及其与处理器系统 (PS)、可编程逻辑 (PL) 和 DDR 存储器的对接接口。它包括:

AI 引擎
每个 AI 引擎都是一个 VLIW 处理器,其中包含一个标量单元、一个矢量单元、两个加载单元和一个存储单元。
AI 引擎内核
内核是以 AI 引擎中运行的 C/C++ 编写的。
ADF Graph
ADF graph 是具有单个 AI 引擎内核或多个 AI 引擎内核(以数据串流连接)的网络。它凭借如下特定构造来与 PL、全局存储器和 PS 进行交互,此类构造有:PLIO(graph 编程中的端口属性,用于建立往来可编程逻辑的串流连接)、GMIO(graph 编程中的端口属性,用于建立往来全局存储器的外部存储器映射连接)和 RTP。
图 1. ADF Graph 的概念综述

本文档聚焦 AI 引擎内核编程,除单内核编程外,还涵盖了多方面的内容,如内核之间的数据通信,这些方面的内容都是将应用分区为多个内核以达成整体系统性能所必不可少的概念。

如需了解有关 graph 的构造、编译和仿真以及硬件流程的更多详细信息,请参阅 Versal ACAP AI 引擎编程环境用户指南 (UG1076)