概述 - 2022.1 简体中文

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

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

Versal® 自适应计算加速平台 (ACAP) 将标量引擎 (Scalar Engine)、自适应引擎 (Adaptable Engine) 和智能引擎 (Intelligent Engine) 与领先的存储器和交互技术有机结合,从而为任何应用提供强大的异构加速功能。最重要的是,Versal ACAP 硬件和软件是专为数据科学家和软硬件开发者开展编程和优化工作而提供的。Versal ACAP 受到诸多工具、软件、资源库、IP、中间件和框架的广泛支持,适用于所有业界标准的设计流程。

基于 TSMC 7 nm FinFET 工艺技术构建的 Versal 产品服务组合提供了一个前所未有的平台,它将软件可编程性和特定领域的硬件加速与自适应能力有机结合在一起,以满足当今快速创新节奏的需求。该产品服务组合包含 6 大器件系列,其架构是专为跨不同市场的各种应用(从云、网络、无线通信到边缘计算和端点)提供可缩放性和 AI 推断功能而构建的。

Versal 架构将不同类型的引擎与丰富的连接和通信功能以及片上网络 (NoC) 相结合,从而支持实现覆盖整个器件的无缝式存储器映射访问。智能引擎包括适用于自适应推断和高级信号处理计算的 SIMD VLIW AI 引擎以及用于定点、浮点和复杂 MAC 运算的 DSP 引擎。自适应引擎将可编程逻辑块与存储器有机结合,其架构专为应对高计算密度需求而设计。标量引擎包含 Arm® Cortex®-A72Cortex-R5F 处理器,支持计算密集型任务。

AI 引擎

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

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

AI 引擎是硬化的块,可提供多级并行处理能力,包括指令级并行处理和数据级并行处理。指令级并行处理包括标量操作:最高 2 次移动、2 次矢量读取(加载)、1 次矢量写入(存储)和 1 条可执行的矢量指令,总计每个时钟周期达 7 路 VLIW 指令。数据级并行处理是通过矢量级操作来实现的,其中每个时钟周期可执行多组数据操作。每个 AI 引擎都包含矢量处理器和标量处理器、专用程序存储器、本地 32 KB 数据存储器、支持访问三个相邻方向内任一方向的本地存储器。它还可访问 DMA 引擎和 AXI4 互连开关,以通过流传输来与其它 AI 引擎进行通信或者与可编程逻辑 (PL) 或 DMA 进行通信。请参阅 Versal ACAP AI 引擎架构手册(AM009) 以获取有关 AI 引擎阵列和接口的具体详细信息。

AI 引擎内核

每个 AI 引擎内核都是 1 个使用专用内部调用编写的 C/C++ 程序,专用于处理 VLIW 矢量处理器。AI 引擎内核代码是使用 AI 引擎编译器 (aiecompiler) 编译的,此编译器包含在 Vitis™ 核开发套件内。AI 引擎编译器可编译内核以生成在 AI 引擎处理器上运行的 ELF 文件。AI 引擎架构概述 提供了内核编程的高层次综述、工具以及可供 AI 引擎内核编程参考的文档。

AI 引擎 graph

AI 引擎程序包含以 C++ 编写的数据流 graph 规范。此规范可使用 AI 引擎编译器进行编译并执行。自适应数据流 (ADF) graph 应用由多个节点和边缘组成,其中节点表示计算内核函数,边缘则表示数据连接。应用中的内核经编译可在 AI 引擎上或器件的 PL 区域中运行。AI 引擎编程简介 提供了 AI 引擎编程模型的概述、ADF graph 的简介、以及 AI 引擎 graph 的编译和仿真简介。

控制 AI 引擎 graph

运行时 graph 控制 API 描述了可用于在运行时控制和更新 AI 引擎 graph 的各种控制 API。graph 控制 API 可用于对从外部控制器执行的 graph 以及在平台环境内运行的 graph 进行初始化、运行、更新和控制。此平台可包括仅限仿真的平台、可连接到 PL 内核的可扩展目标平台或者用于裸机应用的固定平台。

此外部控制器可以是在嵌入式处理器系统 (PS) 的其中某个处理器上运行的主机代码。PS 主机应用编程 描述了创建主机应用来控制系统的 graph 和 PL 内核的进程。在硬件上部署设计时,您可安装驱动以简化通过 PS 上运行的主机应用来初始化和控制 graph 的执行的操作,或者在器件启动时加载并运行 AI 引擎 graph。

AI 引擎编译器在编译 AI 引擎设计 graph 与内核代码的过程中,会生成应用专用的 AI 引擎控制代码。AI 引擎控制代码可以:

  • 控制 AI 引擎内核的初始加载。
  • 运行 graph 以进行多次迭代、更新与 graph 关联的运行时参数 (RTP)、退出并复位 AI 引擎
    注释: 每个 graph 均可包含多个内核、输入端口和输出端口。所谓 graph 的连接,指的是在内核之间、内核与输入端口之间或者内核与输出端口之间的连接(等同于数据流 graph 中的信号线),并且可作为连接来加以配置。如果 graph 所耗用的数据样本数量与 graph 中内核所期望的数据窗口或数据串流相等,并且所生成的数据样本数量与 graph 中所有内核的输出时所期望的数据窗口或数据串流相同,即表示 graph 完成一轮迭代运行。

Vitis 核开发套件可提供 xilinx_vck190_base_202210_1 平台和 xilinx_vck190_base_dfx_202210_1 平台,用于以 VCK190 评估板为目标来构建、仿真、调试和部署您的 AI 引擎设计。它支持开发包含 AI 引擎与 PL 内核的设计,设计中所含的主机应用的目标为 PS 中的 Arm 处理器上运行的 Linux 操作系统。在此平台上开发的设计可使用硬件仿真流程来加以验证。这些设计也可在 VCK190 评估板上运行。

编写 AI 引擎设计示例

AI 引擎编程简介 为您分步演示了使用 Vitis 工具创建、编译和仿真 AI 引擎示例中所涉及的步骤。

后续几章中描述了可用于内核之间的数据通信的 API、在运行时控制和更新 graph 的 API、基于您的设计要求来约束 graph 的 graph 构造,以及与 Versal 架构区域的其余部分、标量引擎和自适应引擎进行交互的 graph 构造。

程序编译和仿真

编译 AI 引擎 graph 应用 详细描述了 AI 引擎编译器提供的不同类型的编译、可传入的选项和输入文件以及期望的输出。您可以独立编译 graph 与内核,也可以将其编译包含在更大的系统设计内,并通过设计中的设置,在运行时捕获和剖析事件追踪数据。

AI 引擎 graph 应用仿真 详细描述了 AI 引擎仿真器以及用于功能仿真的 x86 仿真器。AI 引擎仿真器用于将 graph 应用作为独立实体来进行仿真,或者将其作为更大的系统设计的硬件仿真的一部分来进行仿真。

仿真期间对 AI 引擎 graph 应用进行性能分析 描述了如何在运行硬件仿真构建或硬件构建时,通过执行事件追踪来提取性能数据。此数据可用于对 AI 引擎内核与 graph 进行进一步的最优化。

映射器/布线器方法论 描述了在编译器和/或布线器阶段处理 AI 引擎编译器内的故障时要使用的编译器和布线器方法。

AI 引擎 graph 作为 Versal ACAP 系统设计的一部分进行集成和部署

先前步骤中开发的 AI 引擎内核与 graph 可作为更大的 Versal ACAP 系统设计的一部分来使用,此系统设计可由 AI 引擎内核、HLS PL 内核、RTL 内核与主机应用组成。Vitis 编译器负责构建此更大的系统。

使用 Vitis 工具流程来集成应用 中所述,您可使用命令行方法来构建系统,或者使用基于 GUI 的方法,如 使用 Vitis IDE 中所述。任一方法都允许您执行仿真来验证设计、在交互式调试环境中调试设计,以及构建设计以供部署在硬件上。

使用 Vitis 工具流程来集成应用 还介绍了赛灵思的 Dynamic Function eXchange (DFX) 平台部署流程,如 以 DFX 平台为目标 中所述。DFX 流程允许您在运行时将 xclbin 加载或者重新加载到 DFX 区域内,从而复位 AI 引擎设计和 PL 内核。

在硬件中利用 AI 引擎对设计进行剖析和调试

在硬件上对 AI 引擎 graph 应用进行性能分析 描述了在硬件中运行设计时,如何执行事件追踪来剖析和提取性能数据。

调试 AI 引擎应用 为您演示了如何从命令行或者从 Vitis IDE 运行和使用调试环境。系统性能的评估以及应用调试是达成应用目标的关键步骤。

AI 引擎硬件剖析和调试方法论 描述了在硬件中利用 AI 引擎 graph 来运行 Versal 设计时可使用的五阶段式剖析和调试方法论。