Vitis™ 新增功能

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 Flow Navigator 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 驱动程序调试跟踪

m.alegre-web.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 库的机器学习推断引擎和 Vitis 视觉预处理功能进行图像分类:了解更多
  • 图像传感器处理 (ISP) 流水线:了解更多
  • 立体模块匹配:了解更多
  • 文本处理 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