Vitis既支持Vitis嵌入式软件开发流程,也支持Vitis应用程序加速开发流程,Vitis嵌入式软件开发流程是为希望使用下一代技术的Xilinx软件开发工具包(SDK)用户设计的;Vitis应用程序加速开发流程是为希望使用最新的Xilinx FPGA软件加速开发流程的软件开发人员设计的。该内容主要涉及应用程序加速流,以及Vitis核心开发工具包和Xilinx运行时(XRT)的使用。
这里着重介绍下Vitis应用程序加速开发流程,目前掌握该技术的人还不多。
Vitis应用程序加速开发流程为使用软件和硬件组件的标准编程语言开发和交付FPGA加速应用程序提供了一个框架。软件组件或主机程序是使用C/ c++开发的,可以在x86或嵌入式处理器上运行,并使用OpenCL API调用来管理与加速器的运行时交互。可以使用C/ c++、OpenCL C或RTL开发硬件组件或内核。Vitis软件平台支持各种方法,允许您从开发应用程序或内核开始。
下图是Vitis软件平台示意图。如图所示,Vitis 统一软件平台包含以下功能和元素:
Vitis加速技术的目标是加速硬件平台,例如Alveo™数据中心加速器卡或Zynq®UltraScale +™MPSoC和基于Zynq®-7000SoC的嵌入式处理器平台。
XRT为您的宿主程序提供了API和驱动程序,以使其与目标平台连接,并处理宿主程序和加速内核之间的事务。
Vitis核心开发套件提供了软件开发工具堆栈(例如编译器和交叉编译器),用于构建主机程序和内核代码;分析器(可让您分析和分析应用程序的性能);调试器(可帮助您定位和修复任何问题)您的应用程序中的问题。
Vitis加速库通过最少的代码更改即可提供性能优化的FPGA加速,而无需重新实现算法即可利用Xilinx自适应计算的优势。Vitis加速库可用于数学,统计,线性代数和DSP的常用功能,也可用于特定领域的应用程序,例如视觉和图像处理,定量财务,数据库,数据分析和数据压缩。有关Vitis加速库的更多信息,请参见Xilinx github库。
XRT
由上图可以看到,Xilinx为我们提供了各种各样的加速库,而XRT(Xilinx Runtime Library)则是我们的代码与Xilinx硬件交互的中间件和媒介。有了XRT,我们就可以用更上层的开发方式(cpp甚至python)来进行Xilinx设备的开发。XRT软件栈的架构如下图
XRT虽然很重要,但是可能是Xilinx的相关开发人员精力有限=-=,目前有官方XRT platform支持的板子并不多,只有以下几个: