本文转载自:VagueCheung 博客
Xilinx 公司 (Xilinx) 推出 Vitis – 一个统一的软件平台,为工程师提供包括软件 和 的支持 大多数开发者,包括AI科学家,可以从硬件的灵活性中受益。 Vitis统一软件平台历经5年、总投资1000人开发而成,不需要用户对硬件专业知识有深入的了解。它可以根据软件或算法代码自动适应和使用Xilinx硬件架构。此外,Vitis平台不限于使用专有的开发环境,而是可以插入通用软件开发工具并利用丰富的优化开源库,让开发人员专注于算法开发。 Vitis 独立于 Vivado 设计套件,该套件仍继续为希望使用硬件代码进行编程 的用户提供支持。不过,Vitis 还可以通过将硬件模块封装成软件可调用函数来提高硬件开发人员的工作效率。
Vitis统一软件平台四层架构
Vitis 构建在基于堆栈的四层架构之上。
第一层是基础层,即Vitis目标平台。该平台由电路板和预编程I/O组成;
第二层是 Vitis 核心开发套件,涵盖开源 Xilinx 运行时库,用于管理不同域之间的数据移动,包括子系统、即将推出的 Versal ACAP 中的 AI 引擎以及必要的外部主机。此外,该层还提供编译器、分析器、调试器等核心开发工具。这些工具可以与行业标准的构建系统和开发环境无缝集成;
第三层,8个Vitis库提供了400多个优化的开源应用程序。这八个库分别是:Vitis 基本线性代数子程序(B LAS)库、Vitis 求解器库、Vitis 安全库、Vitis 视觉库、Vitis 数据压缩库、Vitis 计量金融库、Vitis 数据库集和 Vitis AI 库。借助这些库,软件开发人员可以使用标准应用程序编程接口 (API) 来实现硬件加速;
Vitis AI 是 Vitis 平台的第四层,也是最具变革性的层。它集成了领域特定架构 (DSA)。 DSA 为 AI 模型提供硬件实现,开发人员可以使用业界领先的框架(包括TensorFlow 和 Caffe)对其进行配置和编程。 Vitis AI 提供的工具链可以在几分钟内完成优化、量化和编译操作,并在 Xilinx 设备上高效运行预先训练的 AI 模型。此外,它还提供专用API用于从边缘到云端的部署,实现业界领先的推理性能和效率。 Xilinx未来还将推出另一款DSA(Vitis Video),它支持直接从FFmpeg进行编码,并提供同样超级简单且极其强大的端到端Video解决方案。目前,合作公司提供的DSA包括:Illumina与GATK集成用于基因分析、BlackLynx与Elastic搜索用于大数据分析,以及我们的客户目前正在使用的专有DSA。
Vitis 有三大特点:一是开放,二是标准,三是免费。首先,Vitis统一软件平台支持在Xilinx异构平台上开发嵌入式软件和加速应用,包括FPGA、SoC和Versal ACAP,为边缘、云和混合计算应用加速提供了统一的编程模型。其次,Vitis可以与高层框架集成。它可以使用C、C++或Python通过加速库进行开发。它还可以使用基于 RTL 的加速器和低级运行时 API。实施更精细控制的解决方案。
硬件加速应用开发流程:
对于基于FPGA的加速,Vitis核心开发套件支持用户通过API函数(例如OpenCL函数)创建软件应用程序,以在Alveo加速卡上运行加速硬核。 Vitis 核心开发套件还支持在基于 Linux 的嵌入式处理器平台上运行软件程序,例如ZYNQ的UltraScale+MPS超频设备。对于嵌入式处理器平台Vitis开发套件执行模型,还使用OpenCL API和基于Linux的Xilinx运行时库(XRT)来调度硬核和控制数据移动。 (加速库和xilinx运行库可以在GitHub上下载)
Vitis 核心开发套件支持 Alveo U50、U200、U250 和 U280 加速卡,以及 zcu102、zcu104、zc702 和 zc706 嵌入式处理器平台。除了上述流行平台外,还支持自定义平台。
Vitis 软件平台允许用户将数据中心应用程序移植到嵌入式平台。 Vitis 核心开发套件不仅仅是一个用于硬核的 V++ 编译器。还有一个 g++ 编译器运行在
Vitis 与 SDK 比较:
系统工程指的是什么? SDK中的domain域可以理解为BSP吗?
系统项目是指在 Vitis 中创建的应用程序。
Vitis 软件平台 | SDK |
您可以直接在Vitis中创建平台项目(需要添加vivado生成的XSA文件或添加平台库中的任何平台作为基础,例如vck190.xsa、zc702.xsa、zc706.xsa、zcu102.xsa, zed.xsa) | SDK是vivado项目导出的硬件平台项目 |
添加域名到平台 | 创建BSP |
创建应用程序(通过平台域) | 创建应用程序(通过 BSP) |
修改预建平台 | 没提过 |
一个系统项目可以管理多个应用程序 | 没提过 |
修改和更新硬件 | 基本一样,工作流程可能略有变化 |
在硬件上调试应用程序 | 基本一样,工作流程可能略有变化 |
在系统项目下运行和调试应用程序 | 没提过 |
创建启动镜像 | 基本一样,工作流程可能略有变化 |
闪存编程 | 基本一样,工作流程可能略有变化 |
生成设备树 | 基本一样,工作流程可能略有变化 |
通过用户修改/自定义 FSBL 测试应用程序 | 基本一样,工作流程可能略有变化 |
修改域名源文件 | 基本一样,工作流程可能略有变化 |
实测Vitis编译时间略长于SDK编译时间;
Vitis 实现简单的 HelloWord
基于黑金ZYNQ 7020开发板创建项目,打开vivado2019.2,一步步创建项目。 vivado部分还是和之前一样,没有任何改变。
创建项目后,创建相同的Block Design项目
添加ZYNQ核心
双击 ZYNQ 核心进行设置。这里的设置与板子UART1一致。波特率为115200。不使用PL,不使用AXI。
时钟默认就足够了。黑金7020最高可达767Mhz。
设置完成。自动连接。
生成文件:
生成顶级文件:
至此PL部分就完成了。
将设计导出到软件时,不使用PL,因此不需要全面生成位文件。这里直接导出
导出完成。在此开始软件操作。打开vitis,首先创建一个平台项目,导入刚才的设计xsa文件。
这与SDK不同,SDK是直接从vivado Launch打开的,而Vitis是独立于vivado IDE的开发工具。
选择Vivado导出的设计,点击完成
创建应用程序项目:
编译helloworld工程
给板子接上电源,连接串口助手软件,打开串口设置如下,COM口根据实际情况确定。
下载并运行
“hello world”已输出
移植vivado2019.2之前版本的SOC项目:
1)Vivado部分:
使用Vivado 2019.2打开之前版本的vivado工程,重新综合生成比特流文件。如果工程中没有设计PL部分,则无需生成bit文件。合成通过后,导出硬件
文件——导出——导出硬件。导出成功后你会发现多了一个.
2)葡萄部分:
打开Vitis工具,创建Platform,设置项目名称,在vivado项目路径下添加.XSA文件。创建Platform后,创建一个Application项目,将原项目SDK中的对应文件(.c和.h)复制到Vitis Appllation中。
单击“编译”。右键应用程序——DebugAs——DebugConfigurations
尝试选择上图中的3个Debug Configurations,运行时可以正确实现原SDK工程的功能;
目前尚不清楚这三种配置之间有什么区别。
总结:SDK项目的移植基本上没有太大的变化。 Vitis只是从Vivado中提取SDK并单独运行;
审稿编辑黄浩宇
-->