Vitis 软件平台的新功能

2022.2

Vitis 软件平台 2022.2 版的亮点:

Versal® AI 引擎 (AIE) 阵列的最新 Vitis™ 库功能

  • DSP 库功能 – 功能提升
  • Solver 库功能
  • 视觉库功能
  • 超声波库功能

Versal AI Core 和 AI Edge 系列的设计流程增强

  • 在 AI 引擎阵列中控制内核的相对位置,提升性能和利用率
  • AIE x86 仿真器增强,在 x86 仿真器中增强了死锁条件的建模
  • AIE API 增强,增加了基数 3/5 FFT 和矩阵‘x’矢量 API
  • 增强了 Versal 设计的分析和调试功能,支持死锁检测、更大规模的跟踪数据收集以及 RTL/Python 测试台
  • 在 Vitis 中为异构设计提供了新的仿真选项

Vitis 新增功能(类别)

展开以下部分,进一步了解 Vitis 软件平台 2022.2 的最新特性与增强功能。如需了解有关支持平台、改变行为以及已知问题的相关信息,请参阅针对 应用加速流程嵌入式软件开发流程提供的 Vitis 软件平台 2022.2 的版本说明。

DSP 库功能

  • AI 引擎上的超级采样率 (SSR) FIR 滤波器执行方案现在支持系数重新加载特性和动态点大小
  • 为目标是 AI 引擎阵列的 FFT 函数新增 FFT 开窗元件

求解器库函数

  • 正交旋转 (QR) 分解
  • Cholesky 分解

视觉库功能

  • 针对 AI 引擎阵列的四个新视频功能

超声波库函数

  • 帮助构建医疗超声设计的各种功能
  • 能够通过添加约束来控制 AI 引擎阵列中内核的相对位置,有助于用户提高性能和利用率
  • 改进了 x86 仿真器中 AIE 死锁条件的建模
  • 新增 AIE API,增加了基数 3/5 FFT 和矩阵‘x’矢量 API
  • 在硬件仿真中生成 AI 引擎分析报告
  • 使用 Xilinx 系统调试器 (XSDB) 对 AI 引擎设计以及基于 PL 的设计进行死锁检测
  • Xilinx 运行时 (XRT) 控制了 AI 引擎事件跟踪通过 PLIO 的连续卸载
  • 支持 x86 主机上面向软件仿真的 PS 应用
  • 硬件仿真可以使用 SystemC 功能模型而不是 RTL
  • 允许用户使用简单的 RTL 测试台或基于 Python 脚本的流量生成器仿真 AI 引擎内核
  • AI 引擎的状态可以在使用 Vitis™ 分析仪进行硬件仿真时分析

Vitis 环境 2022.2 全新仿真选项:处理器系统 x86 仿真和 AI 引擎 x86 仿真:可编程逻辑仿真可使用 x86 仿真器执行。

1670184-vitis-simulation-flow

Versal AI 引擎设计的特点

  • 能够为 AI 引擎 DSP 库模块设计添加图形约束,从而可提高利用率和性能
  • 为 AI 引擎设计提供周期近似仿真的新功能
  • AI 引擎图形导入模块可自动检测运行时参数 (RTP) 端口
  • 增强并增加了 DSP 库模块

一般功能

  • 为使用 PL 及 AIE 阵列的异构系统设计提供了硬件验证流程支持
  • Vitis Model Composer Hub 模块已更新,现在支持异构设计
    • 自动检测有效的 AI 引擎、HDL 和 HLS 子系统
  • 增强的硬件验证流程以支持仅包含 HDL 模块的设计和包含适用于 Versal 平台的 HDL-to-AI 引擎 → HDL 模块的设计
  • 增强了“任务级并行”编码风格支持
    • 可提高 C 语言仿真速度及 QoR
  • 其它性能及时序增强
    • 提高了猝发推断能力
    • 自动推断 Unroll、Pipeline、Array_Partition 和 inline 编译指示以实现更好的性能​
    • 提高了定时精度,能够以更高的频率更完美地完成时序收敛
  • 其它特性
    • 分析和调试:在 C 代码中插入的 printf,现在即使在 RTL 中综合之后也支持
    • 易用性:新的性能语法可自动实现给定的事务处理时间间隔
    • FFT 和 FIR IP 现在支持 HLS::stream 接口
2022.1

Vitis 软件平台 2022.1 版的亮点:

面向 Versal® ACAP 和 AI 引擎的 Vitis™ 流程提升

  • 支持 XIlinx 基础 DFX 平台,该平台具有一个静态区域和一个 DFX 区域
  • AIE 分析不仅支持失速/死锁检测,而且还可在 Vitis 分析仪中生成 AI 引擎状态(包括错误事件)视图报告
  • x86sim、AIEsim 和软件仿效中的外部流量生成器灵活度显著提高,可以非常轻松地插入仿真及仿效流程中
  • Vitis Model Composer 支持硬件验证、Linux 和硬件仿真

面向 DC 和 Vitis HLS 的 Vitis

  • Vitis 可为动态区域生成过程提供额外的报告支持,流程报告增强功能包括 3 个全新或更新的报告
  • 通过选择将跟踪转移至内存资源(首选)或转移至 PL 中的 FIFO, Vitis 改进了 PL 分析,因此可获得更高的性能
  • 现在在仿真后提高一个新的时间轴跟踪查看器,其可显示运行时配置文件,允许用户留在 Vitis HLS GUI 中
  • 通过新的性能编译指示或 set_performance_directive,Vitis HLS 现在可支持更高层次的“智能”构造
  • Vitis 图形库针对性能提供 L3 API 增强功能(可为内核调用节省 1mS 的时间)

Vitis 新增功能(类别)

展开以下部分,进一步了解 Vitis 2022.1 的新特性和增强功能。如需了解有关支持平台、修改行为以及已知问题的相关信息,请参阅 Vitis 2022.1 发布说明,了解 应用加速流程嵌入式软件开发流程

  • 新增基因组学加速库(L1 和 L2 以及 L3
  • 图形库:L3 性能提升
  • Vitis 数据库库、GQE 多功能内核
  • 在视觉库中增加了新的功能
  • Vitis AIE 视觉库增加/增强的新功能
  • Vitis AIE DSP 库,FIR 重采样器取代 FIR 分数插值器
  • Vitis 编解码器库最新 API、API jxlEnc、API‘leptonEnc’、API‘resize’、API‘WebpEnc’ Vitis 编解码器库最新 API、API jxlEnc、API‘leptonEnc’、API‘resize’、API‘WebpEnc’
  • ZLIB 压缩改进,为 8KB 解决方案提供了定制八核压缩
  • ZLIB 解压改进,为 8KB 文件大小提供了定制 IP
  • 平台功能查询改进
  • HBM 易用性改进,能够为 M_AXI 内核选择一个进入 HMSS 的特定 S_AXI 入口点并可从配置文件支持 RAMA 插入
  • AI 引擎的硬件自动失速/死锁检测分析
  • 分析自动状态输出
  • 分析自动状态输出 — 缓冲区
  • 分析硬件手动状态输出
  • 分析手动状态输出
  • AI 引擎事件跟踪增强
  • 外部流量生成器 AIEsim
  • AI 引擎硬件分析改进
  • AI 引擎支持广播窗口
  • Vitis AI 引擎编译器增强了图形编程模型
  • Vitis AI 引擎编译器 — ADF 图形的 PLIO/GMIO
  • 分析增强,最新时间轴跟踪查看器
  • 编码风格增强,为模块流类型提供阵列分区支持
  • 编译指示抽象,最新性能编译指示(和指令)
  • Vitis 内核“单行方式”Vitis HLS — 最新时间轴跟踪查看器、最新性能编译指示、模块流支持窗口
  • 显示设计中所有幸存函数的运行时配置文件,即那些被转换为模块的函数
  • 查看数据流区域在联合仿真后的行为特别实用
  • 原生 Vitis HLS — 不再需要启动 xsim 波形查看器(外部工具)
  • Vitis 分析仪改进,保存/恢复时间轴定制
  • 报告增强、report_qor_assessment、xclbin 时钟信息、Vivado 自动摘要
  • 分析增强,启用最新 PL 分析基础架构,可以添加多个 trace_memory 选项来插入多个内存监控器(仅硬件),v++ 链接器的示例配置文件不仅可将 SLR0 中所有 CU 的跟踪数据卸载至 DDR0,而且还可将 SLR1 中所有 CU 的跟踪数据卸载至 DDR1
  • 为 Versal 更新了 Bootgen GUI
  • 工具链更新
  • XSCT,支持 STAPL 并添加链接器脚本生成命令
  • 系统编译流程,请参见系统编译文档
  • 为自动重启添加软件仿真支持并为始终运行的内核添加邮箱支持
  • 免费运行的内核不需要为 sw-emu 提供 while(1)
  • 为外部流量生成器添加软件仿真支持v
  • 硬件仿真可以为流媒体 IP 使用 HLS C 源码功能模型。
  • 增加 API xrt::system,用于嗅探器件数量
  • 为日志消息添加 API xrt::message
  • RT 本地 API 主机代码现在需要
    -std=c++17 或 abovev
  • 为同步执行异步运行添加实验 xrt::queue API
  • xbutil 可以显示 AIE FIFO 计数器,其有助于调试 AIE 死锁场景
  • xbutil — 清除原有选项。
  • xclbinutil — info 可为嵌入式平台提供时钟信息
  • ARM 上的 xbutil 可加载 SOM 图像
  • xbtop xbtop 独立实用程序,用于显示类似 linux 的输出(替换旧版 xbutil -top)
  • 提供 XRT 实用程序支持 在 Bash 中使用制表键自动完成。
  • Alveo 平台更新、可实现更高稳定性的平台更新、板卡管理更新、SC 固件更新工具
  • 嵌入式平台,最新 VCK190 DFX 平台:xilinx_vck190_base_dfx_202210_1,现在可使用 Vitis 安装嵌入式平台, Vivado 新增可定制示例设计:MPSoC 的 Vitis 平台
  • 针对可扩展性和易用性对 Vitis Model Composer 中心模块进行了全面检修
  • 硬件验证流程现在除了支持裸机外,还支持 Linux
  • “AIE 至 HDL”和“HDL 至 AIE”模块不再提供 HDL 网关模块
  • 2022.1 版本现在为无法访问互联网的客户提供示例快照。发布新版示例时,该工具将提示用户从 GitHub 下载
  • 为了便于使用,不属于代码生成部分的实用程序块现在以白色为背景显示
  • 为了方便使用,增强并重组了库浏览器
  • 支持 RHEL 8.x
  • MATLAB 支持 - R2021a / R2021b
2021.2

Vitis 软件平台 2021.2 版的亮点:

  • 全新特定域开发环境
    • Kria™SOM、Alveo™ U30/U50 和 VCK5000 Versal™ 开发卡上的 Vitis™ 视频分析软件开发套件:了解更多详情 >
    • Varium™ C1100 卡上的 Vitis 区块链解决方案(带有 Vitis 库):了解详情 >
  • 全面端到端流程支持 VCK5000 和 Varium C1100 卡
  • 增强内核工具功能 
    • Vitis AI Engine Compiler C/C++ 高层次抽象 API、Auto Pragma Inference、Area Group Constraints
    • Vitis AI Engine x86simulator 增强功能:跟踪报告、内存访问冲突和死锁检测
    • 包含 Vitis HLS EoU、时序和 QoR 增强、HLS API,用于用户控制的突发推断
    • Vitis Analyzer 增强功能可提供更好的时间线跟踪报告、数据可视化、停顿分析
    • 面向 AI 引擎多进程的 Vitis XRT 和面向 AI 引擎图形控制的多线程支持
    • Vitis IDE & Emulation 支持 AI Engine Trace 和软件仿真,适用于 AI 引擎应用
  • 不同域中 39 个全新 C/C++ 库涵盖 DSP、数据分析、视觉、压缩、数据库、图形、安全,……总计超过 1000 个库函数、数据库、图形、安全……
  • Vitis Model Composer
    • 编译/仿真时间减少 3 倍,并行编译将编译时间锐减 7 倍
    • 全新的硬件验证流程和增强的功能协同仿真

Vitis 新增功能(类别)

展开以下部分,进一步了解 Vitis 2021.2 的新特性和增强功能。如需了解有关支持平台、修改行为以及已知问题的相关信息,请参阅 Vitis 2021.2 发布说明,了解 应用加速流程嵌入式软件开发流程

注:Vitis 加速库现已提供,可以单独下载。它们可以从 GitHub 中下载,也可以直接从 Vitis IDE 中下载。

2021.1 2021.2 21.2 版的新增功能
xf_blas 167 167 0
xf_codec 3 3 0
xf_DataAnalytics 33 36 3
xf_database 62 65 3
xf_compression 78 93 15
xf_dsp 94 96 2
xf_graph 53 59 6
xf_hpc 37 37 0
xf_fintech 116 116 0
xf_security 135 140 5
xf_solver 11 11 0
xf_sparse 11 11 0
xf_utils_hw 55 57 2
xf_opencv 147 150 3
总共 1002 1041 39

:对于视觉,只需计算 L*/tests 中的子文件夹数量,因为每个 API 都针对不同的类型提供多项测试

可编程逻辑 (PL)

  • 基于 CLAHE TMO 的端到端单声道图像处理 (ISP)
  • RGB-IR 和 RGB-IR 图像处理 (ISP) 流水线
  • 全局色调映射 (GTM) 以及使用 GTM 的 ISP 流水线
全新功能 种类 客户/战略 行业 说明
RGB-IR ISP Seeing Machines 汽车、ISM •支持 4x4 RGB-IR 去马赛克
•主要用于舱内监控系统
•微光监控摄像头
Mono (CCCC) ISP Strategic 汽车、ISM、A&D •机器视觉
•低光应用
全局色调映射 (GTM) ISP Strategic 汽车、ISM、A&D •扩大了动态范围,提高了对比度
•与本地色调映射 (LTM) 相比,是一个成本更低的版本
密度光流算法 TV-L1 CV NTT ISM •改进了光流对光照、噪声及遮挡的稳定性

AI Engine (AIE)

  • BlobFromImage
  • 支持批量 3 的背靠背 filter2D
全新功能 种类 客户/战略 行业 说明
RGB-IR ISP Seeing Machines 汽车、ISM •支持 4x4 RGB-IR 去马赛克
•主要用于舱内监控系统
•微光监控摄像头
ML+X ISP Strategic 汽车、ISM、A&D •ML 干扰预处理
高斯金字塔 CV Strategic 汽车、ISM、A&D •多尺度图像处理的基础
方框滤波器 CV Strategic 汽车、ISM、A&D •流畅低通滤波器的基本知识

基于 Vitis 库的 Vitis 区块链解决方案

  • 以太坊的开创性采矿解决方案
  • 使用 C++ 通过 Vitis 库实现开源与易用性及易于部署性
  • 使用 Vitis 库实现灵活性及可扩展性
  • 灵活地开采多种比特币
  • 定制并编译成硬件
  • 高度优化的设计

将 CSV 解析器 API 添加到库中

  • CSV 解析器可解析逗号分隔值文件并生成对象流,其可轻松与 DataFrame API 连接
  • 新增全新 L2 库
  • Louvain 与重新编号
  • 重新编号
  • 余弦相似度支持“权重”特性
  • GQE 开始支持异步输入输出特性,并提供多卡支持。
    • 异步支持允许 FPGA 在部分输入数据准备就绪时开始处理。
    • 多卡支持允许识别多个适合工作的 Alveo 卡。
  • ZSTD 多核压缩
    • 不仅创建了全新 ZSTD 多内核架构,而且还使用四核提供了超过 1GB/s 的吞吐量。
  • ZSTD 减压缩优化
    • ZSTD 解压缩针对性能(提高了 20%)和资源(减少至不足 30%)进行了优化
  • 针对 IBM 改进了 GZIP/ZLIB 数据流内核
    • 定制了静态及动态压缩流媒体 IP(4KB 和 8KB)
    • 增加了在 TUSER 端口提供压缩量的功能
  • 针对 IBM 改进了 GZIP/ZLIB 解压缩
    • 优化了霍夫曼解码器,可减少周期不足 1.5K 的时延
    • 将资源从超过 9K 锐减至 6.9K
    • 添加 ADLR32 校验和功能
  • GZIP 系统编译器 PoC
    • 为 GZIP 压缩解决方案创建了一个系统编译器 PoC,并针对 OpenCL 主机进行了基准测试。
  • 自 2021 年起,将在 Github 上提供 DSPLib
  • 快速傅里叶变换 (FFT/iFFT)
    • 点大小增加到 32k(取决于数据类型)
    • 支持数据流 API 和窗口 API。
    • 并行供电(0 — 4)
      • 不仅允许提高吞吐量,而且还可扩展所支持的点大小的范围
  • FIR 滤波器
    • 初始数据流支持单速率非对称/对称 FIR
  • DDS/Mixer
    • 2021.2 提供全新库单元

  

发布 KECCAK-256(散列函数)和 CRC32C(校验和函数)

为调试硬件问题添加了两个 Data-Mover 实现方案。

  • 带计数器的 LoadDdrToStream:用于通过 AXI 流把 PL 的 DDR 数据加载至 AI 引擎并记录发送至 AI 引擎的数据数。
  • 带计数器的 StoreStreamToMaster:用于通过 AXI 流从 AI 引擎接收数据并将其保存至 PL 的 DDR,同时记录发送至 DDR 的数据数。

AI 引擎 API

  • 按 C++ 报头专用文件库实现,其所提供的类型和运算可转换为有效的 AI 引擎内嵌原语。
  • 提供的可参数化数据类型可实现泛型编程
  • 以统一的方式为不同的数据类型实现最常见的运算
  • 透明地将高级原语转换为优化的 AI 引擎内嵌原语
  • 提高 AI 引擎架构间的可移植性

AI 引擎 API 将是 AI 引擎内核编程的主要方法

高层次优化

AI 引擎编译器优化选项

  • --xlopt=0,没有应用优化。
  • --xlopt=1,自动计算堆量,从 LLVM IR 分析生成指导。
  • --xlopt=2,自动内联、为展开的环路剥离环路并进行编译指示插入。

引入 --xlopt=2,以提高性能,默认情况下仍是 --xlopt=1

  • 自动内联
    • 如果可行,即使函数没有声明为 __inline 或内联,也会自动内联函数
  • 自动编译指示插入
  • 自动将编译指示插入到内核代码中。 (查看下一张幻灯片,了解更多详情)

语用推断

必须优化内核

  • 减轻用户添加有效而正确的象棋编译指示的责任

2021.2 中支持自动推断五种编译指示

  • 对于性能:
      用于最内层环路的 Chess_prepare_for_pipelining,以及已知行程计数的外部环路
    • Chess_loop_range 用于已知行程计数的环路
    • chess_unroll_loop/chess_flatten_loop 用于已知行程计数的最内层环路
  • 对于正确性:
    • 当行程计数不是展开因子的倍数时,Chess_unroll_loop_preamble

更新了图形编程模型 PLIO 和 GMIO

模型变化包括:

  • “simulation::platform”用法的变化
  • 与图中的 PLIO/GMIO 对象交互,位置可确定输入输出。
  • 图中全局 PLIO/GMIO 对象的变化。
  • 围绕图形连接<>语句的变化。

ADF 图中的 PLIO/GMIO

当前

  • 在全局范围内写入 PLIO、GMIO、simulation::platform 和连接

GMIO gm0(“GMIO_In0”, 64, 1);

GMIO gm1(“GMIO_In1”, 64, 1);

GMIO gm7(“GMIO_In7”, 64, 1);


PLIO pl0(“PLIO_Out0”, plio_32_bits, “data/output0.txt”, 250.0);

PLIO pl1(“PLIO_Out1”, plio_32_bits, “data/output1.txt”, 250.0);

PLIO pl7(“PLIO_Out7”, plio_32_bits, “data/output7.txt”, 250.0);

simulation::platform<8,8> plat(&gm0, &gm1,…, &gm7, &pl0, &pl1,…, &pl7,);

subgraph g;

connect<> net0(plat.src[0], g.in[0]);

connect<> net1(plat.src[1], g.in[1]);

connect<> net7(plat.src[7], g.in[7]);

connect<> net8(g.out[0], plat.sink[0]);

connect<> net9(g.out[1], plat.sink[1]);

connect<> net15(g.out[7], plat.sink[7]);

其它方法

  • 创建顶层图形并在其中移动 PLIO、GMIO 和连接
  • 允许针对环路内部管理连接

类型顶层图

{

  input_gmio gm[8];

  output_plio pl[8];

  subgraph sg;

  topgraph()

  {

    for (i=0; i<8; i++)

    {

      gm[i] = input_gmio::create(“GMIO_In”+std::to_string(i), 64, 1);
      pl[i] = output_plio::create(“PLIO_Out”+std::to_string(i), plio_32_bits, “data/output”+std::to_string(i)+”.txt”, 250.0);
      connect<>(gm[i].out[0], sg.in[i]);
      connect<>(sg.out[i], pl[i].in[0]);

    }

  }

};

topgraph g;

区域组约束改进

能够在 ADF 图或约束文件中使用标记,以控制映射器和路由器

  • -contain_routing — 当指定的真实值可确保所有路由时,包括 nodeGroup 中包含的节点之间的网,都包含在区域组中。
  • -exclusive_routing — 当指定的真实值可确保所有路由时,除了 nodeGroup 的节点之间的网,都可从区域组中排除。
  • -exclusive_placement — 当指定的真实值可防止未包含在 nodeGroup 中的所有节点被布置在区域组边界框中时。

快照

快照是包含与所有内核端口相关的注释和数据的文本文件

  • 数据流、软件包数据流、级联数据流
  • windows, buffer
  • RTP

还包括所有平台端口

  • PLIO, GMIO, RTP

允许用户在不使用调试器和不需要检测内核代码的情况下检查内核端口上的数据流量

死锁检测

  • 在 x86 仿真中检测锁死,无论这种情况是由输入数据不足引起的,还是由于重新收敛路径上的 FIFO 深度不平衡引起的,均是如此
  • 在 x86 仿真过程中,必须通过指定锁死停止选项来启用锁死停止特性
  • 如果仿真因锁死而停止,则错误消息将显示:您应该使用 -trace --timeout 选项重新运行

内存访问冲突检查

与 Valgrind 集成,以便进行内存访问冲突检查

  • 检查
    • 禁止读写
    • 读取未初始化的内存
  • 编译无需特定标记
  • 仿真标记可以是两者中的任何一个
    • --valgrind:仿真照常运行而 valgrind 则会显示一个报告
    • --Valgrind-gdb:情况是一样的,但同时要使用 gdb 调试

追踪报告

锁死情况会导致仿真输出差,难以分析漏洞来源

X86 仿真跟踪选项允许仿真器为各种时间戳信息提供日志:

  • 内核迭代的开始/结束
  • 数据流停止的开始/结束
  • 锁定失速的开始/结束

x86 仿真和 AI 引擎仿真的时间戳不同

用户控制的猝发推断

  • 对于 Vitis HLS 工具无法满足自动猝发推断的使用案例,用户可以采用新引入的手动猝发优化功能
  • 最新类别‘hls::burst_maxi’支持手动控制猝发行为。提供全新 HLS API,与新类别一起使用
  • 在 HLS 设计中,用户需要了解 AXI AMBA 协议和硬件事务处理层面的建模

时序与 QoR 增强

  • 为用户输入高层次吞吐量限制提供支持
  • 提高了 HLS 时序估算精度。当 HLS 报告时序收敛时,Vivado 的 RTL 综合也应该预期满足时序要求

EoU 增强

在 C 语言综合报告中添加接口适配器报告

  • 用户需要知道接口适配器对其设计的资源影响
  • 接口适配器具有可影响设计 QoR 的可变属性
  • 其中一些属性具有应该向用户报告的相关用户控件
  • 提供 bind_op 和 bind_storage 报告的文字版本

在综合报告中添加新章节,以显示编译指示列表和编译指示警告

  • 用户可以轻松了解添加的哪些编译指示有问题。

分析与报告增强

函数调用图查看器有一些新特性

  • 全新鼠标拖动式缩放功能
  • 全新概览特性,不仅可显示全图,而且用户还可放大整体图形的各部位
  • 所有函数及环路都与它们的仿真数据一起显示

现已在仿真后提供一个新的时间轴跟踪查看器该查看器可显示设计的运行时概况,并允许用户保留在 Vitis HLS GUI 中。

链接摘要增强

  • 为 AI 引擎、平台和计算单元提供时钟频率信息
  • 在系统图和平台图中提供一个名为时钟的新表

平台导出增强

  • XSA 从 Vivado 导出,不需要原文件位于项目本地
  • XSA 从 Vivado 导出,不会改变项目结构
  • 对硬件平台项目中使用的 IP 进行打包,而不是对整个 IP 回购进行打包

AI 引擎应用仿真增强

  • 为外部测试台集成 AI 仿真提供支持
  • 为外部测试台集成 x86 仿真提供支持
  • 通过 x86 仿真支持 GDB 调试
  • 在 x86 仿真图中为内核间的数据提供快照支持
  • 为 x86sim 的访问违规检查提供支持
  • 为 x86sim 的锁死停止提供支持

支持 AI 引擎跟踪

为 AI 引擎应用提供软件仿真支持

采用 Verilog / System Verilog 支持外部流量生成器

扩展剖析监控器插入,以监控内存

  • 目前,剖析监控器逻辑可以在内核/CU 端口基础上插入。该特性为用户提供了直接在内存接口上插入监控器逻辑的选项
  • 在内存接口上直接实现的内存带宽可视化,可以在配置文件报告中反映出来
  • 支持 DDR 内存和 PLRAM
  • 支持硬件流程
  • 要启用该特性,需要将链接项和 xrt 设置为
    • memory=all
    • data_transfer_trace= coarse|fine or
    • opencl_device_counter=true

扩展剖析监控器插入,以监控内存

  • 可实现内存接口监控的 vadd 示例
    • 包括‘内存 Bank 数据转移’新表

Vitis Analyzer 增强功能

为非 OpenCL 应用生成的通用配置文件摘要报告

  • 为 XRT API 和 HAL API 应用提供相同级别的支持。
  • 用户选择他们想要创建的报告类型,工具会自动在 Vitis Analyzer 中生成并显示

将 OpenCL 命令添加到 PL 事件时间轴

  • 剖析将增加开销,XRT 提供在不增加开销的情况下,在时间轴跟踪中转储 OpenCL 事件的功能。
  • Vitis Analyzer 可以处理 XRT 输出并在时间轴跟踪视图中显示。
  • Xocl_debug =true 需要在 xrt.ini 中设置。

在时间轴跟踪报告中扁平化信号层级

  • 在默认情况下,时间轴跟踪报告以层级方式显示信号跟踪
  • Vitis Analyzer 提供通过切换“Flatten Signal”符号来扁平化层级的功能
  • 为平坦的时间轴跟踪提供比较波形的支持

Vitis Analyzer — 数据可视化

  • 在 AI 引擎设计中显示 AI 引擎内核的输入输出数据
    • 帮助调试 AI 引擎设计,显示输入输出数据和时间轴
  • 与 AI 仿真器联合使用
  • 支持
    • 窗口/数据流/级联数据类型
    • 分组数据流
    • 模板化内核
    • 数据转储实用程序

Vitis Analyzer — AI 引擎失速分析

  • Vitis Analyzer 提供可视化功能,帮助用户识别失速的根源
  • 支持
    • 性能指标
    • 锁定失速分析
    • 数据停止分析
    • 级联失速分析
    • 内存失速分析
  • 支持流程
    • AI 仿真器
    • 硬件仿真

Xilinx 运行时库 (XRT): china.xilinx.com/xrt

  • XRT API
    • XRT 本地 API 使用 XRT::ip 为用户托管的内核控制提供支持
  • XRT 实用程序
    • xbutil 和 xbmgmt 工具现已成为默认工具
      • 要使用原有实用程序,请使用 xbutil --原有实用程序或 xbmgmt --带原有子命令的原有实用程序
    • 新实用程序 xball
      • 将 xbutil 或 xbmgmt 命令应用到全部已安装数据中心卡或过滤部分。 查看 xball — 帮助了解详情
    • 新命令 xbutil configure
      • 允许您启用、禁用或配置 PCIe 主机内存和 PCIe 端对端特性。 查看 XRT 文档,了解更多详情
    • 所有 XRT 实用程序现在都全局支持 --force 选项,以跳过用户交互确认
  • 剖析
      启用任何剖析选项时,都会生成一个配置文件摘要报告。
    • 所有适用的汇总表及指南都可基于 xrt.ini 文件中启用的剖析选项生成
    • 在设计过程中,监控器添加至内存资源时,会提供用于聚合内存资源信息的新数据传输汇总表
    • 全新 AIE 剖析度量设置为计算不同 AIE 事件的数量,包括 (1) AIE 中的浮点异常;(2) 平铺执行计数;以及 (3) 数据流的输出与获取
  • 嵌入式
    • 改进了 zocl 内存管理器,可支持任何 sptag

Vitis XRT 可提供 AI 引擎多进程支持

  • C 语言和 C++ API 将定义多个进程的访问模式,以共享对相同 AI 引擎阵列及图形的访问。
    • 保护 AI 引擎阵列和图表免遭不必要的访问。
  • 开启 AI 引擎阵列和图形支持三种模式
    • 独占模式(防止任何其它进程访问)
    • 主模式(只允许其它进程进行非破坏性访问)
    • 共享模式(只进行非破坏性访问)
  • 考虑何时需要提供多进程支持。例如:
    • 防止其他用户访问 AI 引擎阵列(独占访问)
    • 多个用户分别控制不同的图形(多应用支持)
    • 一个主用户控制图形,允许其他用户探测运行状态(主用户访问和共享访问)

Vitis XRT 提供 AI 引擎支持状态

C / C++ API

  • C 语言版 API
    • 对于 AI 引擎阵列:
      • xrtAIEDeviceOpenExclusive(独占模式)
      • xrtAIEDeviceOpen(主要模式)
      • xrtAIEDeviceOpenShared(共享模式)
    • 对于 AI 引擎图形:
      • xrtGraphOpenExclusive(独占模式)
      • xrtGraphOpen(主要模式)
      • xrtGraphOpenShared(共享模式)
  • C++ 版 API
    • xrt::aie::设备类型支持构造函数中的访问模式
      • enum class access_mode:uint8_t { exclusive = 0;primary = 1, shared = 2 };
    • xrt::图形类型支持构造函数中的访问模式
      • enum class access_mode:uint8_t { exclusive = 0;primary = 1, shared = 2 };none = 3 };

访问 Alveo 卡的最新 Vitis 目标平台:

参阅 UG1120 — Alveo 数据中心加速卡平台用户指南

AI 引擎 DSP 库 — 新模块

  • AIE DDS
  • AIE Mixer

并行编译

与 2021.1 相比,缩短了时间(例如,以下数字主要针对 200 MHz TX 链):

  • 编译与仿真时间减少了 3 倍
  • 编译时间减少了 7 倍
  • 仿真后死区时间从 25s 锐降至大约 0s

约束编辑器增强

  • 2021.2 改进的导航

针对固定尺寸的改进

针对可变尺寸模块的改进

增强的功能协同仿真功能

  • 为 AI 引擎输入导出 Matlab 数据 — xmcVitisWrite
  • 将 AI 引擎数据导入 Matlab — xmcVitisRead
  • 将 AI 引擎数据导入 Matlab — xxmcVitisRead

其它

  • 导入没有输入的 AI 引擎或 HLS 内核模块(来源块)
  • 提供新数据类型支持
    • Simulink 本地 int64 和 uint64 适用于 AI 引擎开发而不是 Xilinx 数据类型 x_sfix64 和 x_ufix64。
    • accfloat 和 caccfloat 支持 AI 引擎开发
  • 支持 Ubuntu 20.04
  • 支持 MATALB 20a、20b、21a(不支持 MATLAB 21b)
  • 增加了新示例
    • 64 核的双流 SSR 滤波器示例
    • 伪逆 (64x32) — commslib 示例。
  • 使用 xmcLibraryPath 命令指向自定义 DSPLib 位置。
  • 大量更多增强功能和漏洞修复
2021.1

Vitis 软件平台 2021.1 版的亮点:

  • 支持 Xilinx Kria System-on-Modules (SOM) KV260 视觉 AI 入门套件。ML(DPU 推断引擎)+ X(RTL 内核和基于 Vitis HLS 的计算机视觉内核)的完整 Vitis 流程。了解更多 >
  • 与 CPU/GPU 相比,在 FPGA 和/或 Versal ACAP 上支持最新 C/C++ Vision、DSP、Graph (Louvain Modularity)、图像处理 Codec、压缩(GZIP、Facebook ZSTD、ZLIB whole application acceleration)等众多性能优化库。
  • Versal ACAP 器件上增强的 Vitis™ Core 开发套件设计流程:AI 引擎设计跟踪报告的可视化改进、通过 GMIO 进行的 AI 引擎事件跟踪、增量重新编译、新增启动映像向导并支持加密的 AI 引擎源文件
  • 最新 Vitis Model Composer 工具可在 MathWorks Simulink® 环境中实现快速设计探索与验证,从而可实现 AI 引擎和可编程逻辑等模块的协同仿真、代码生成以及测试台创建。  了解更多 >
  • 全新 Vitis HLS 流程导航 GUI 有助于快速访问流程相和报告。将综合、分析及调试视窗融合在通用默认环境中

Vitis 新增功能(类别)

展开以下部分,进一步了解 Vitis 2021.1 的新特性和增强功能。如需了解有关支持平台、修改行为以及已知问题的相关信息,请参阅 Vitis 2021.1 发布说明,了解 应用加速流程嵌入式软件开发流程

注:Vitis 加速库现已提供,可以单独下载。它们可以从 GitHub 中下载,也可以直接从 Vitis IDE 中下载。

  • AIE DSP
    • DSPLib 作为 Vitis 加速库的一部分发布在 Github 上
    • DSPLib 包含在许多高级信号处理应用中使用的通用可参数化 DSP 功能。所有功能目前都支持具有流接口支持的窗口接口。
      • FIR 滤波器

        功能

        命名空间

        单速率、非对称

        FIR 滤波器

        单速率、对称

        dsplib::fir::sr_sym::fir_sr_sym_graph

        插值不对称

        dsplib::fir::interpolate_asym::fir_interpolate_asym_graph

        抽取、半带

        dsplib::fir::decimate_hb::fir_decimate_hb_graph

        插值、半带

        dsplib::fir::interpolate_hb::fir_interpolate_hb_graph

        抽取、不对称

        dsplib::fir::decimate_asym::fir_decimate_asym_graph

        插值、分数、不对称

        dsplib::fir::interpolate_fract_asym:: fir_interpolate_fract_asym_graph

        抽取、对称

        dsplib::fir::decimate_sym::fir_decimate_sym_graph

          

      • FFT/iFFT - DSPLib 包含一种 FFT/iFFT 解决方案。这是一个单通道、单核时间抽取 (DIT),具有可配置点大小、复杂数据类型、级联长度和 FFT/iFFT 功能的实现。

        功能

        命名空间

        单通道 FFT/iFFT

        dsplib::fft::fft_ifft_dit_1ch_graph

      • 矩阵乘法 (GeMM) - DSPLib 包含一个矩阵乘法/GEMM(通用矩阵乘法)解决方案。这支持 2 个矩阵 A 和 B 的矩阵乘法,可配置的输入数据类型可派生出输出数据类型。

        功能

        命名空间

        Matrix Mult / GeMM

        dsplib::blas::matrix_mult::matrix_mult_graph
      • 小部件实用程序 — 这些小部件不仅支持窗口与数据流之间的转换(在 DSPLib 函数输入端)和需要时数据流与窗口之间的转换(在 DSPLib 函数的输出端),而且还支持用于在真实数据类型和复杂数据类型之间进行转换的其它小部件。

        功能

        命名空间

        数据流至窗口/窗口至数据流

        dsplib::widget::api_cast::widget_api_cast_graph

        真实至复杂/复杂至真实

        dsplib:widget::real2complex::widget_real2complex_graph
      • Vitis Model Composer 支持 DSP 库功能,可帮助用户轻松将这些功能插入 Matlab/Simulink 环境,以方便执行 AI 引擎 DSP 库评估和整体 AI 引擎 ADF 图形开发。
  • Vitis HPC 库版本引入了 HLS 原语、预构建内核以及用于 FPGA 上 HPC 应用的软件 API。这些应用包括:

    • 2D 声学逆时偏移 (RTM) 时域有限差分 (FDTD) 算法,包括前向内核和后向内核

    • 3D 声学逆时偏移 (RTM) 时域有限差分 (FDTD) 算法,包括前向内核

    • 多层感知器 (MLP) 组件:激活函数和完全连接的网络内核

    • 稠密矩阵和稀疏矩阵的预条件共轭梯度 (PCG) 求解器

  • Versal AI 引擎首选视觉功能的首次发布:
  • 提供的功能

    • Filter2D

    • absdiff

    • accumulate

    • accumulate_weighted

    • addweighted

    • blobFromImage

    • colorconversion

    • convertscaleabs

    • erode

    • gaincontrol

    • gaussian

    • gaussian

    • pixelwise_mul

    • threshold

    • zero

  • xfcvDataMovers:实用程序数据转移,以便轻松平铺高分辨率图像并将其传输至 AI 引擎内核的本地内存。两种版本

    • 使用 PL 内核:以更多 PL 资源为代价,提高吞吐量。
    • 使用 GMIO:吞吐量低于 PL 内核版本,但使用 Versal 片上网络 (NOC),不耗 PL 资源。
  • 全新可编程逻辑 (PL) 功能和特性
  • ISP 流水线与功能
    • 更新了 2020.2 非 HDR 流水线
      • 可改变少数运行时 ISP 参数:红蓝通道的增益参数、AWB 启用/禁用选项、R、G、B 的伽马表,以及用于计算最小值和最大值以实现 awb 标准化的 % 像素。
      • 伽马校正和色彩空间转换 (RGB2YUYV) 是流水线的一部分。
    • 最新 2021.1 HDR 流水线:支持 2020.2 流水线 + HDR
      • 2 个曝光的 HDR 融合,可使用短曝光帧和长曝光帧之间的数字重叠为传感器提供支持。
        • 支持 4 种拜耳模式:RGGB、BGGR、GRBG 和 GBRB
      • HDR 融合 + isp 流水线支持运行时配置,其可返回 RGB 输出。
      • 提取功能:HDR 提取功能是预处理功能,其可将单个数字重叠流作为输入,返回 2 个输出曝光帧(SEF、LEF)。
    • 3DLUT:提供输入输出映射来控制复杂的颜色运算符,如色相、饱和度和亮度。
    • CLAHE:对比度限制自适应直方图均衡是一种在执行自适应直方图均衡时限制对比度的方法,不会过度放大近恒定区的对比度。减少了噪声放大的问题。
  • 翻转:沿水平线和垂直线翻转图像。
  • 自定义 CCA:自定义版本的连接组件分析算法,用于检测水果缺陷。 除了计算水果的缺陷部分外,还可计算水果的缺陷像素和水果的总像素
  • Canny 更新:Canny 功能现在支持所有图像的分辨率。

与库有关的变化

  • 所有测试都从使用 OpenCV 3.4.2 升级到 OpenCV 4.4
  • 增加了对 Versal Edge 系列 (VCK190) 的支持
  • 全新基准测试部分,可为发布的选定流水线/功能提供基准测试辅助组件。
  • 2021.1 版提供了二元语法文本分析:

    • 两克谓词 (TGP) 是搜索具有两个字符的反索引。对于建立了反向索引的数据集,它可以在反向索引的每条记录中找到匹配的 id。

  • 社区检测:Louvain 模块化
  • 2-Hop 搜索
  • 用 L2 内核增加了双精度稀疏矩阵密集向量乘法 (SpMV) 实现
  • 在 2021.1 版中,GQE 获得了以下特性抢先体验支持

    • 64 位连接支持:现在 gqeJoin 内核及其配套 gqePart 内核已扩展至 64 位密钥及有效负载,可支持更大规模的数据。

    • 支持最初的布隆过滤器:gqeJoin 内核现在提供一种执行布隆过滤器探测的模式。 这可提高某些多节点流程的效率,在这些流程中,一定要在早期阶段最大限度减少数据量,这一点非常重要。

    • 这两个特性现在均可作为 L3 纯软件 API 提供,请查看相应的 L3 测试案例。

  • GZIP 多核压缩:
    • 全新 GZIP 多核压缩流媒体加速器,这是纯数据流专用解决方案(自由运行内核),支持 4KB、8KB、16KB 和 32KB 的大量不同模块大小。
  • Facebook ZSTD 压缩内核:
    • 全新 Facebook ZSTD 单核压缩加速器,模块大小为 32KB。 多核 ZSTD 压缩正在进行中(以提高吞吐量)。
  • GZIP 低时延解压缩:
    • 新版的 GZIP 解压,降低了每个模块的时延,降低了资源(LUT 降低 35%、BRAM 降低 83%)并提高了 FMax。
  • 使用 U50 对 ZLIB 整个应用进行加速:
    • U50 平台的 L3 GZIP 解决方案,包含 6 个压缩内核,可渗透整个 PCIe 带宽。 为它提供高效 GZIP 软件解决方案,以便为 CPU libz.so库加速,其可针对最终客户软件提供无缝收放 API 级集成,无需重新编译。
  • Versal 平台支持
 
  • 添加 AIE 支持 - 如上
  • 2021.1 版本提供的支持:为 BLS 提供的 * RIPEMD160 * 最初支持(不完整)
  • 在 2021.1 版本中,将数据转移器添加至该库。与基于 C++ 的 API 不同,这一新增组件主要针对那些在基于 HLS 的内核设计方面缺乏经验、只想测试其基于流媒体的设计的设计人员。 数据移动器实际上是一个内核源代码生成器,可创建一系列通用助手内核来驱动或验证设计,跟 AIE 器件上的一样。
  • 生产 QoR 指标(Vitis QoR 生成 API)
    • 应用内核占用的周期
    • 失速周期(从 VCD 文件计算)
    • 测量封装程序中的开销周期(花在内核之外其它函数上的时间)
    • 吞吐量
  • 3 个层次的优化 XLOPT=0、1(默认)、2
  • xlopt=2 的新功能:
    • 环路融合、简化单个迭代外环路、增强环路剥离启发式
  • 分析 “__restrict” 用法并提供指南
  • 增量重新编译:图形没有改变时,只重新编译已经修改过的内核
  • 分组交换数据 → 多达 32 个分组(限 4 个)
  • 全新 DMA FIFO 位置约束(映射器/路由器在不同版本之间的改变不会影响性能)
  • 在新的编译中将映射解决方案用作约束:防止将来的映射变化,其可影响性能
  • 将 x86sim 功能支持提升到 aiesim 级别
  • 开始在 ADF 图中淘汰 PL 内核(2021.2 中已完全淘汰)
  • GUI 中的全新“流程导航器”有助于快速访问流程阶段和报告。环境“综合、分析、调试”视窗合并到一个默认的通用环境中
  • BIND_OP 和 BIND_STORAGE 指令的的全新综合报告部分
  • 全新的综合后文本报告将反映 GUI 综合报告中提供的信息
  • IP 导出和 Vivado 实现运行小部件使用各种选项进行重新设计,可将设置和约束文件传递给 Vivado
  • 全新函数调用图查看器可查看函数和环路,其可使用可选热图高亮显示,以检查 II、时延或 DSP/BRAM 利用热点
  • Versal 时序校准以及 DSP 模块本地浮点运算的全新控制(config_op 的 -precision 选项)
  • Vitis HLS 升级指南(之前的 UG1391)现在是 UG1399 的一个章节
  • 用户指南中新增方法部分(UG1399 和网络)
  • 可替代的可刷新流水线选项已得到改进(自由运行流水线又称“frp”)
  • 在 Vitis 中,顶层端口指针现在可以只映射至 axis -lite 适配器,而不是全局内存
  • aggregate 指令现在提供一个“-compact bit”选项,支持最大封包
  • 在支持可选调查的帮助菜单中添加了一个“留下反馈意见”条目
  • 修复了“帮助页”选项卡在某些 Linux 系统上不显示信息的漏洞
  • 在 Vitis 中,重塑 m_ax 接口应该通过 hls::vector 类型完成
  • s_axilite 和 m_axi 数据存储的全新自定义选项可以是“auto”、“uram”、“bram”或“lutram”,您可以在设计中调整 RAM 利用率
  • 在 Vitis 中,为内核引入了一种全新连续(又称“永不停止”)运行模式
  • 已重新设置 axi_lite 辅助时钟选项
  • 在 Vivado IP 封装器
      中增强了对 RTL 内核封装的支持
    • 支持适当方法和文档的公开产品化特性。
    • RT 管理内核是默认流程。

  • 支持加密的 AIE 源文件作为输入

    • AIE 编译器可以接受加密的 AIE 源文件,v++ 支持其余流程。

  • 为 Versal 器件添加创建启动映像向导支持
  • 对 AI 引擎编程和调试进行了多项改进
    • 能够开关微型代码标签
    • 源代码和微代码之间的静态交叉探测
    • 微码全视图
    • 当流水线视窗更新数据时,将最后一台 PC 带入能够看见的区域
    • 在流水线视图中调整指令数据
    • 在反汇编视图中添加“单指令模式”操作。
  • 能够为平台项目生成默认的 BIF 文件
  • SD 和 eMMC 的程序闪存增加了原始模式支持
  • 环境中的帮助消息添加到 AI 引擎开发流程中
  • 将 GCC 工具链版本升级至 10.2
  • 用户可通过外部进程(如 Python / C++)来仿真 AXI-MM 的主/从设备。这可帮助用户使用 AXI 主/从设备的快速设计时间来仿真设计,无需在开发 AXI 主控器或 VIP 的过程中投入资源。此外,AXI-MM 进程之间的通信还可帮助仿真两个 FPGA 之间的芯片对芯片连接。
  • 为 VCS 启用 Versal 模型的编译。
  • 平台开发人员可使用独立应用在平台上运行硬件仿真,以便在早期阶段对平台进行测试。
  • 用户覆盖范围分析信息和用户事件信息聚合在配置文件摘要报告中
  • Vitis Analyzer 显示了一个关键的时序路径。

    • Vitis 分析器将显示简化版 Vivado GUI 时序报告,无需打开 Vivado 项目或网表。这允许用户快速导航至失败的时序路径。

  • Vitis Analyzer 多种策略支持

    • 多种策略运行的结果可以在 Vitis 分析器中查看。

  • 最新 xrt.ini 开关用于分析与调试
  • 减少大型应用的内存和加载时间

    • 全新配置文件工具使用更少的资源来处理大型 csv 文件,这可减少加载时间以及崩溃问题的发生。

  • PL 连续跟踪卸载改进

    • 使用 DDR 或 HBM 作为内存资源来存储跟踪数据

    • 循环缓冲区支持大型数据卸载

    • 跟踪缓冲区大小和卸载间隔可以在 xrt.ini 中设置

  • 提高了 AIE 设计跟踪报告的可视化

    • 将显示所有 AIE 输入(窗口、数据流和级联数据流等)

    • 支持所有 IO 数据类型

  • 稳定的本地 XRT API,不仅可为 AIE 图形的控制和执行提供 C++ API,而且还支持软件仿真与跟踪。
  • XRT 提供全新助手 API,可帮助用户在 $XILINX_XRT/include/CL/cl2xrt.hpp 中将 OpenCL API 升级至 XRT 原生 API。
  • XRT 全新 API xrt::device.get_info() 可提取设备属性
  • 大幅改进的新一代 xbutil 和 xbmgmt 实用程序现在是默认的。
  • xbutil 可报告电源状态
  • xbmgmt 不仅可支持运行时 clk 扩展,而且还可设置用户电源阈值,从而可保护电路板和服务器。
  • sysfs、xbmgmt 和 xbutil 可报告 Alveo 电路板的 MAC 地址
  • xocl 中的 KDS 调度器已经进行重构,显著提高了数百个进程(同时在多个设备间执行多个计算单元)的吞吐量。对于原有 shell 而言,您可能会注意到吞吐量下降的百分比很小。 请参阅 AR 以获得正确的解决方案。
  • 通过 debugfs /sys/kernel/debug/xclmgmt/ and /sys/kernel/debug/xocl/ 支持 XRT 驱动程序调试跟踪

china.xilinx.com/alveo上访问 Alveo 加速卡的最新 Vitis 目标平台。 请参考加速器卡(您希望在该卡上部署应用)的入门部分。

请查看 { UG1120 - Alveo 数据中心加速卡平台用户指南,了解更多详情,并随时了解最新 Vitis 目标平台发布的最新信息。

全新平台

  • Alveo U200 Gen3x16 XDMA 1RP
    • 名称:xilinx_u200_gen3x16_xdma_1_202110_1
    • 特性:从桥接器、P2P、GT 内核、DDR 自动刷新
  • Alveo U50 Gen3x16 noDMA 1RP 
    • 名称:xilinx_u50_gen3x16_nodma_1_202110_1
    • 特性:从桥接器、P2P、GT 内核、时钟节流
  • VCK190 基础平台支持 DDR 和 LPDDR 上的 ECC;约束变得很简洁。
  • MPSoC 基础平台将 CMA 量增加到了 1536M。所有 Vitis-AI 模型都可按这个 CMA 量运行。
  • 简化了嵌入式平台创建流程:设备树生成器可自动生成 ZOCL 节点;XSCT 可生成 BIF 文件。减少了基础平台源文件。
  • 支持 Kubernetes(K8s) 集群:Xilinx FPGA 资源管理器 (XRM) 现在可以与 Kubernetes 一起使用,不仅能在连接至服务器的多个 Alveo 加速卡之间运行和管理计算单元 (CU),而且还能将应用扩展到带 Alveo 卡的多个服务器上。
  • 全面的约束编辑器可帮助用户在 Vitis Model Composer 中为 AI 引擎内核指定任何约束。 生成的 ADF 图将包含这些约束。
  • 将 AI 引擎的 FFT 和 IFFT 模块添加至库浏览器。
  • 用户现在可以使用库浏览器访问大量 AI 引擎 FIR 模块变体。
  • 能够使用 FIR 滤波器的输入端口指定滤波器系数。
  • 新增两个全新的实用程序模块:“RTP 源”和“可变大小”。
  • 增强的 AIE 内核导入块现在也支持导入模板化的 AI 引擎功能。
  • 能够在 Hub 模块中为 AI 引擎设计指定 Xilinx 平台。
  • 用户可通过 Hub 模块,在运行 AIE 仿真后随时重启 Vitis 分析器。
  • 用户现在可以使用 Simulink 数据检查器绘制周期近似输出,并查看每个输出的估计吞吐量。
  • 增强了仅使用图形报头文件将图形作为模块导入的可用性。
  • 使用取消按钮修改进度条
  • 当 MATLAB 工作目录和模型目录不同时,改进了导入 AI 引擎内核或仿真设计时的可用性。
  • 全新 TX Chain 200MHz 示例。
  • 全新 2d FFT 示例展示了带有 HLS、HDL 和 AI 引擎模块的设计。
  • 针对 SSR FIR(改进超过 10 倍)和 SSR FFT 提高了仿真速度。
  • 针对 RAM 等内存模块和 FIFO 提高了仿真速度
  • 在黑盒导入流程中使用 VHDL 2008 更新了 Questa 仿真器
  • Vitis Model Composer 现在为 DSP 提供 Xilinx 系统生成器的功能性。一直使用 Xilinx 系统生成器满足 DSP 需求的用户可以继续使用 Vitis Model Composer 进行开发。
  • MATLAB 支持 - R2020a、R2020b & R2021a

  

2020.2

Vitis 软件平台 2020.2 版的亮点:

  • Vitis 2020.2 首次为 Versal ACAP 平台上的应用提供加速和嵌入式软件开发支持
  • Vitis Core 开发套件首次引入 Vitis AI Engine( AI 引擎)编译器,以编译用于 Versal AI 引擎的 C / C ++ 应用。AI 引擎是 Versal AI Core 系列的一部分,是计算密集型应用的向量处理器
  • 对于加速内核编译 (Vitis) 和 C/C++ 至 RTL IP 创建流程 (Vivado),默认使用 Vitis HLS。
  • 提供 600 多个 FPGA 加速功能,遍布 13 大类性能优化库。2020.2 版引入全新 Vitis 高性能计算 (HPC) 库用于加速高性能计算类应用。多项增强或补充功能强化数据分析、图形库、线性代数 (BLAS) 库、稀疏矩阵库 (Sparse)、安全库以及数据库
  • 为评估多种实现策略提供支持,充分满足最终 FPGA 二进制的生成,进一步简化 Vitis 应用中 RTL 内核的集成
  • 针对 Vitis Core 工具,增强了 Git 版本控制、集成式主机内核 profiling 等功能。 了解更多详情 >
  • MATLAB 和 Simulink 插件:这是 Xilinx Model Composer 和 DSP System Generator 的统一。AI 引擎是一个为 MATLAB 和 Simulink 提供的插件中的新域。
    了解更多 >

Vitis 新增功能(类别)

展开以下部分,进一步了解 Vitis 2020.2 的新特性和增强功能。如需了解有关支持平台、修改行为以及已知问题的相关信息,请参阅 Vitis 2020.2 发布说明,了解 应用加速流程和 嵌入式软件开发流程

注:Vitis 加速库现已提供,可以单独下载。它们可以从 GitHub 中下载,也可以直接从 Vitis IDE 中下载。

  • 面向 HPC 工作负载的 FPGA 加速库。最初版本侧重于地震成像和地球物理仿真使用案例
    • 逆时偏移 (RTM) 是一种重要的地震成像技术,可精确表征地下情况。
    • 高精度多层感知器 (MLP) — 利用地震反映数据重建地下特性(地震反演)
  • 针对单精度浮点数据类型 (FP32) 进行优化,该数据类型是高性能计算应用的重要需求
  • 该库的第一个版本提供:
    • L1 模板原语、L1 MLP 激活功能(包括 Sigmoid、Relu 和 Prelu)
    • L2 2D RTM 前向内核、2D RTM 后向内核和 3D RTM 前向内核
    • L3 支持镜头平行的 2D RTM API

全新功能与特性

  • 2020.2 ISP 流水线示例设计支持的像素深度达 16 位
  • 局部色调映射
  • 自动曝光调整
  • 量化与混色
  • Color Correction Matrix
  • 黑度校正
  • 镜头阴影校正
  • 强力特征匹配
  • 模式滤波器
  • blobFromImage
  • 拉普拉斯检测算子
  • 距离转换

库基础架构与其它增强功能

  • 所有库函数都支持 Alveo U50 平台
  • 为边缘和数据中心平台提供的 GUI 支持
  • 颜色转换:支持 RGBX 或第四通道支持
  • 数据转换器中的行步支持
  • 删除 xf_axi_sdata.hpp 文件。Axiconverter 函数现在使用 HLS ap_axi_sdata.h 文件代替。

在全新 Xilinx 应用商店中推出随时可用于评估的应用

使用 Vitis 视觉库开发的 FPGA 加速应用现已在全新的 Xilinx 应用商店中推出,作为容器,可用于在 Nimbix 云端或本地的 Alveo 加速卡上轻松评估和部署

  • 使用 Vitis AI 库中的 ML 推断引擎和 Vitis 视觉预处理功能进行图像分类
  • 图像传感器处理 (ISP) 管道
  • Stereo Block Matching
  • 文本处理 API。包括两个主要的 API — 正则表达式匹配和地理 IP 查找。前一个 API 可用于从非结构化数据(如日志)中提取内容,而后者则通常用于处理 Web 日志,以通过 IP 地址标注地理信息。该库提供了一个演示工具,其可将 Apache HTTP 服务器的日志批量转换为 JSON 文件。
  • 用于内存数据提取的 DataFrame API:DataFrame 广泛用于数据分析领域的内存数据提取,DataFrame 读写 API 应该能够帮助数据分析内核开发人员更轻松地使用 Apache Arrow DataFrame 存储临时数据或与开源软件互动。
  • 结构树的整体方法。可扩展随机森林,以包括回归。增加了基于助推方法的梯度助推结构树,支持分类与回归。也包含对分类与回归的 XGBoost 的支持,可利用损失函数的二阶导数和正则化。
  • 单源最短路径 API (singleSourceShortestPath) 2020.2 版现在不仅支持 Alveo U50 平台,而且还可为最短路径信息提供一个新的输出‘pred32’。
  • 页面排名 API: 2020.2 版现在支持 Alveo U50 平台,包括两个名为“pageRankTop”的 API — 一个用于利用单个内存通道,而另一个则用于利用多存储内存。   
  • 相似度 API: 3 个全新的 API 覆盖不同的应用:‘denseSimilarityKernel’针对密集图应用,‘sparseSimilarityKernel’针对稀疏图应用,而‘generalSimilarityKernel’则针对两种支持单核的应用。
  • 以下 API 现在支持 Alveo U50 平台:
    • 宽度优先搜索 bfs API (bfs)
    • 程度计算 API (calcuDegree)
    • 互联组件 API (connectedComponents)
    • 将格式从 CSC 转换至 CSR API (convertCsrCsc)
    • 标签传播 API (labelPropagation)
    • 高可靠互联组件 API (stronglyConnectedComponents)
    • 三角形计数 API (triangleCount)
  • 最新 L2 GEMM 内核
  • 对于 FP32 数据类型,L3 GEMM 性能从 280 GFLOPS 提高到 340 GFLOPS
  • 引入了在 Alveo U280 加速卡上利用 16 个 HBM 通道支持的 FP32 L2 CSCMV 内核(用于 CSC 压缩稀疏列格式矩阵的稀疏矩阵向量乘法)。
  • 2020.2 版不仅可为通用查询引擎 (GQE) 内核设计带来非常重要的增强功能与更新,而且还可为 JOIN 和 GROUP-BY AGGREGATE 带来全新的 3 级 API。
    • 作为输入缓冲区的列:GQE 内核将每个列作为输入缓冲区,简化了主机代码的数据准备。此外,与大量连续内存分配相比,在主机端分配多个缓冲区将减少内存不足的问题,特别是在服务器负载沉重的情况下。
    • 用于生成配置位的命令类:L2 层现在提供生成 GQE 内核配置位的命令类。开发人员不再需要深入位图表来了解在 GQE 流水线中启用或禁用某个功能时应该切换的位。因此,主机代码可能会更持久、更不容易出错。
    • 最新 3 级 API:为 JOIN 和 GROUP-BY AGGREGATE 构建最新实验性 L3 API,以增加 GQE 能够处理的问题。它们可以基于散列将各种表分解为多个部分,并以良好调度的方式多次调用 GQE 内核。执行策略与执行是分开的,因此数据库专家可以根据表格统计数据微调执行,不会干扰 OpenCL 执行部分。
  • 使用 Alveo U50 加速 LIBZ 库
    • 无缝加速 libz 标准 API:deflate、compress2uncompress
    • 随时可用的 libz.so 库,可加速所有主机代码,无需任何代码修改
    • xzlib 独立可执行文件适用于 gzip/zlib 压缩和解压缩
  • ZSTD 解压缩:提供最新实现的 Facebook ZSTD 算法
  • Snappy 双核心内核:最新实现的谷歌 Snappy 双核心内核解压缩算法可为单个文件解压缩实现吞吐量的 2 倍提升。
  • GZIP 压缩内核:提供全新 GZIP 四核压缩内核(内建、LZ77、TreeGen、Huffman 编码器)实现方案。整体资源减少 20% 以上,DDR 带宽需求减少 50%。
  • GZIP 压缩流媒体内核:提供完全符合标准的 GZIP(包括页眉和页脚)实现方案,流媒体免费运行内核。
  • Alveo U50 上的 GZIP/ZLIB L3 应用:作为 L3 API 提供的 GZIP/ZLIB 应用,针对 Alveo U50 (HBM) 和 Alveo U250 卡进行了优化。一个 FPGA 二进制文件 (xclbin) 支持 zlibgzip 压缩及解压缩格式
  • 支持 Alveo U50:所移植的库函数(LZ4、Snappy、GZIP、ZLIB)支持 Alveo U50 平台。
  • 低时延 GZIP/ZLIB 解压缩:对于 4KB/8KB/16KB 模块大小而言,初始解压缩时延从 5K 减少到 2.5K
  • API 被修改为完全支持 Vitis HLS 编译器
  • 新签名生成与验证算法:DSA、ECC、ECDSA (secp256k1) 和 EdDSA (ed25519)
  • 最新校验与算法:Adler32 和 CRC32。
  • 可验证延迟函数 (VDF) 的评估与验证:Pietrzak 的 VDF 和 Wesolowski 的 VDF。
  • 由 CAS 组成的商业密码:SM2、SM3 和 SM4。
  • 流媒体密码:XChacha20。
  • 对 RSA、GMAC、AES-GCM 和 SHA3 进行优化,以提高其性能和资源利用率。
  • 参数解析器(测试版):解析从命令行传递的选项与标志,并提供自动帮助信息生成,使开发人员能够创建测试案例与用户应用的统一体验。
  • FIFO 多路复用器:该模块封装了一个 FIFO(通过内核代码中的 hls::stream 实现),以便能够通过相同的硬件资源传递不同类型的数据。数据过宽时,它将自动使用多个周期进行传输。该模块有望使数据流代码更加紧凑、可读。

ADF:自适应数据流程

  • 编译器:
    • PLIO 或 GMIO 上的事件跟踪
    • 硬件上也支持事件跟踪
    • 热图生成:所有 AI 引擎的使用率 %
    • 支持 PL 内核和 PLIO 的不同 PL 频率
  • 用于 AI 引擎的 Vitis IDE
    • 管道视图
    • 向量寄存器视图
    • 内存视图东、西北、南
    • 外部存储器
  • Vitis HLS 在 Vivado 中可取代 Vivado HLS(在 v2020.1 中,它已经是 Vitis 和 C 语言内核编译的默认设置)
    • 为高级功能端口新增阵列重塑和分区编译指示
  • 该工具现在与 Vitis 和 Vivado 一起安装在其自己的目录 ./Vitis_HLS/2020.2 下
  • HLS 设计偏移信息已经在 UG1391 中更新
  • Vitis HLS 用户指南是 UG1399,所有内容也在 HTML 中提供
  • 在 GitHub 上更新了 设计示例,它们也可以从 Vitis HLS GUI(从“Git 资源库”子窗口)自动加载,以便能够直接访问
  • 支持 SIMD 编程
  • 通过 bind_storage pragma(仅限 Vivado 流程)支持片上模块 RAM ECC 标志,以便监控 RAM 模块生成的错误纠正逻辑
  • GUI 简化了工具栏图标布局,为界面和 AXI4 (包括猝发)新增了报告部分
  • 非默认选项可以在“解决方案设置”→“一般”→“只显示非默认值”间续标记中进行筛选,以便快速查看
  • 用户可以使用 -p 选项在直接从 Tcl 开始的 GUI 中创建并打开一个项目,并将 Tcl 文件按照参数形式传递:vitis_hls -p .tcl
  • 通过 GUI 对 FIFO 的量进行交互式深度调整
  • 现在在 GUI 中可以看到对 AXI 接口的约束性随机测试

Versal 的专有特性

  • Vitis HLS 现在可为 DSP58 模块的浮点(加法器或乘法器)推断专用单时钟周期积累,实现高效的高吞吐量积累
  • 针对 Versal 生产目标器件更新的时序库
  • 改进的 RTL 内核整合:增强了在 Vitis 应用中按照内核形式封装整合 RTL IP 的功能,包括对用户管理的 RTL 内核的支持(不受 XRT API 控制)以及对 Vivado 中的 IP 打包器的改进,从而支持该流程。
  • 时序收敛的多个实现策略:Vitis 编译器和链接器 (v++) 现在支持在硬件构建过程中同时启动和运行多个 Vivado 实现策略。这不仅可帮助用户探索和评估所有结果,而且还可帮助他们为最终 FPGA 二进制文件 (xclbin) 的创建选择最佳策略。

Versal 的专有特性

  • 在 2020.2 中,只要硬件设计不变,aiecompiler 只有在 AIE 程序修改后才会重新编译软件并对其进行更新。v++ 链接阶段不会重新运行,而是直接转到封包步骤。这允许用户在硬件修复后轻松快速地针对 AIE 程序进行迭代。
  • 提供系统级模板,包括 AIE、PL 和 PS 设计文件。
  • AIE 工具特性整合在 Vitis IDE 中,如显示流水线信息、存储视图以及并行编译等。
  • Vitis 项目的版本控制:针对 Vitis 项目与 Git 版本控制整合,可实现在多个开发人员和团队间协作。
  • 对项目层级的改进:加速内核和主机应用现在是顶级系统项目下的独立项目,有助于用户对主机应用和硬件内核进行分开编译。
  • 对板级支持包 (BSP) 构建时间的改进:对于具有独立域的平台项目,板级支持包 (BSP) 驱动程序可进行并行编译,从而可缩短应用的构建时间。
  • 主机应用调试的易用性:处理系统寄存器现在可以作为一个文件,从 Vitis GUI 导出,用于调试。
  • 配置文件系统项目:顶级系统项目现在可通过 Vitis GUI 为 Vitis 应用加速流程提供针对指定配置文件特性的更多控制。
  • 改进了针对使用硬件仿真创建平台的支持:除了将方框图作为顶层之外,硬件仿真模式现在还支持平台中的 RTL 来源,其可作为顶层模块或在没有封装的情况,作为方框图中的参考 RTL。您可以像在 Vivado 中那样添加 RTL 测试平台。它可为部署之前的验证设计提供更高的灵活性。
  • 在仿真过程中保存信号,以供调试:仿真时将信号保存到 Xilinx 仿真器 (XSIM) 波形文件中。运行硬件仿真时,用户可将 -wcfg-file-path 传递给 launch_hw_emu.sh
  • 仿真支持从桥接特性(Alveo 平台):请参阅 Alveo 平台文档,了解有关从桥接特性的更多详情。
  • 用于仿真 AXI Stream IO 的 Python/C++ API:在仿真 AXI Stream 内核时,使用简单的 Python 或 C++ API 通过平台上的 IO 端口提供模拟数据流,使您能够在设计周期的早些时候仿真和调试支持编程流量模式的完整系统
  • 为 U250 Alveo 平台提供 Questa 仿真器支持:除了 Xilinx 仿真器 (XSIM) 外,Vitis 中针对 U250 Alveo 平台的硬件仿真现在还支持 Questa。安装通过 V++ 配置文件或 Vitis IDE 完成。
  • HLS 内核死锁检测:使用 v++ config param=compiler.deadlockDetection=true 编译 HLS 内核,可以在硬件仿真期间检测到 HLS 内核中的死锁或活锁代码。

Versal 的专有特性

  • 第三方仿真器支持(Questa、Xcelium、VCS):除了 Xilinx 仿真器 (XSIM) 之外,Vitis 中针对 Versal 嵌入式平台的硬件仿真现在也支持 Linux 上的第三方仿真器,如 Questa 和 Xcelium 等。早期访问阶段支持 VCS。安装通过 V++ 配置文件或 Vitis IDE 完成。
  • Vitis AI Profiler 数据整合:对于使用深度学习处理单元 (DPU) 执行 AI 推断的应用而言,您可以在 Vitis 分析器中访问 Vitis AI Profiler 信息,包括 DPU 吞吐量、DDR 读写速率以及时间轴跟踪信息,以便评估端到端应用加速。
  • 查看软件包总结报告:在 Vitis 分析器中查看软件包总结报告,从性能和优化的角度全面了解应用状态。软件包总结由 v++ 命令在链接构建一个软件包之后创建,所构建的软件包可以用于软件或硬件仿真,也可以引导并在硬件设备上运行。
  • 整合的主机和内核配置:Vitis 2020.2 增加了为用户事件提供 API 配置的功能。除了可用于加速内核的固有配置功能之外,您还可以在主机代码中调用 Xilinx 运行时库 (XRT) API 来分析设计的任意部分,并针对总体应用性能优化做出决策。
  • 其它增强功能:可在 Vitis 分析器内访问所有报告间的全局搜索,可灵活地保存/恢复自定义用户查看性能报告的布局,直观的指导信息分组可在一个地方查看相关信息,对利用率报告的改进,有助于查看每个超级逻辑区域 (SLR) 上的统计信息,以实现更深入的洞察。

Versal 的专有特性

  • 配置文件总结报告将有特定的 AIE 设计条目。更多的 AIE 相关数据将在编译/运行总结报告中显示,如 AIE 热图,它主要显示运行在硬件上的内核工作/暂停周期。
  • 增强了调试可见性:在 Xilinx 仿真器 (XSIM) 事务处理查看器中提供的 AXI-S 事务处理层面视图主要用于硬件仿真设计的 System-C 部分,可在事务处理层面更好的了解设计,充分满足调试需求。
  • 在实时波形查看器中查看 FIFO 状态:在硬件仿真期间,可在实时波形查看器中查看用户级 FIFO 的状态(在内核代码中表示为hls:streams),从而可查看静态 FIFO 深度、FIFO 元素和 FIFO 的使用,以确定加速内核的性能瓶颈

Versal 的专有特性

  • 事件跟踪增强:Vitis 2020.2 在 AIE 事件跟踪特性上有一些增强功能,例如支持通过 XRT 实现的卸载、支持多个跟踪流流程的增强功能以及监控 PL/AIE 边界的功能(即使图中定义了 PL 内核)等。同时,PL/PS/AIE 事件跟踪被合并到一个通用时间轴中,可更好地监控整个设计。

注:Xilinx 运行时库 (XRT) 现已提供,可单独下载。请参考启动设计信息,查看下载和安装说明。

  • 增强了对 HBM 平台的支持:利用高带宽内存 (HBM) 平台的优势,通过 v++ --sp HBM[#:#] 指定 HBM 存储的内核端口连接 Xilinx 运行时库 (XRT) API 还可以自动分配 HBM 存储并帮助主机应用分配一个或多个任意大小的 HBM 区段 缓冲区 (256Mb+)(在 HBM 区段边界上)。
  • 新一代 Xilinx 开发板管理实用程序(预览):现在可预览新一代 Xilinx 开发板管理实用程序(xbutil、xbmgmt)。它们可为支持它们的 Xilinx 平台实现从桥接和 DDR 保留特性。注:这一代开发板管理实用程序将在 2021.1 中移至维护模式,新特性只添加至新一代实用程序。

Versal 的专有特性

  • 新增 AIE 支持,以支持 RTP、错误处理、全阵列重新配置和图形 API。

Alveo 软件包下载选项卡访问 Alveo 加速卡的最新 Vitis 目标平台

请查看 UG1120 — Alveo 数据中心加速卡平台用户指南,了解更多详情,并随时了解最新 Vitis 目标平台版本的最新动态,因为其即将发布

U200/U250 XDMA 平台

  • Alveo 平台 U200 XDMA 2RP — 生产
    • 特性:ERT、CMC、PLRAM、DRM 功能的平面布局图、XDMA、2RP、P2P、M2M、GT 内核、PCIe 从桥接器和 DDR 自刷新
  • Alveo 平台 U250 XDMA 2RP - 量产
    • 特性:ERT、CMC、PLRAM、DRM 功能的平面布局图、XDMA、2RP、P2P、M2M、GT 内核、PCIe 从桥接器和 DDR 自刷新

Shell 升级 DFX — 2RP(2 个重新配置分区)

  • 小型静态区域:基本
    • PCIe 功能性
    • 带内 FPGA 部分重配置
  • 全新可重配置分区:Shell
    • 更新 DMA 和实用程序功能
    • 在不重启服务器的情况下,在平台之间进行动态倒换
  • 第二个可重配置分区:用户逻辑
    • 加速器内核功能

AXI Slave Bridge

  • 由内核直接访问主机内存
  • DMA 旁路功能,提供 AXI-Slave 512 位接口,用户可以提供其自己的数据移动设备

数据保留 — DDR4 自刷新

  • 在重新配置过程中使用 DDR4 自刷新提供在 FPGA 内存中保留的数据环境
  • 避免复制到作为不同 XCLBIN 的临时存储的主机 RAM 上
  • 最大限度减少大型数据集的移动

注:嵌入式平台的 Vitis 目标平台(包括预先构建的 linux 内核、根文件系统和 sysroot)现已提供,可在 Vitis 嵌入式平台选项卡上单独下载

  • ZYNQ-7000 和 ZYNQ UltraScale+ MPSoC 基础平台功能保持不变,但重新构建了平台源代码。为了便于理解,对目录进行了重命名;多个平台之间的通用源文件组合在一起。重复使用平台源代码并将其移植到新平台上会更便捷。
  • 当从源代码构建平台时,除了从头编译 PetaLinux 之外,如果用户使用下载的通用软件组件,则增加了一种全新的端到端编译方法。在构建平台时,用户可以指向这些组件并跳过 PetaLinux 编译。

VCK190 平台有灵活的 DDR + LPDDR 内存子系统,支持加速内核的 63 种中断。它可以与 Vitis 内核开发套件一起使用,满足应用加速与嵌入式处理器软件开发需求,如 Versal AI 引擎程序员指南 (UG1076) 所述。该平台支持各种设计开发,包括:

  • AI 引擎图和内核
  • 可编程逻辑内核
  • 主机应用,目标是运行在 Versal 器件中的 Arm 处理器上的 Linux 或裸机操作系统。
  • 请参考 Vitis / Versal ACAP 平台入门,了解更多信息。
  • 支持 Kubernetes(K8s) 集群:Xilinx FPGA 资源管理器 (XRM) 现在可以与 Kubernetes 一起使用,不仅能在连接至服务器的多个 Alveo 加速卡之间运行和管理计算单元 (CU),而且还能将应用扩展到带 Alveo 卡的多个服务器上。
2020.1