Vitis统一软件平台概览
文章目录1 - 从 Xilinx Zynq 讲起2 - Vitis 平台概览2.1 - Vitis IDE2.2 - Vitis HLS / Accelerated Library2.3 - Vitis AI2.4 - Petalinux3 - The end?Xilinx 赛灵思官方推出的 Vitis 统一软件平台可以大致的理解为在原本 SDK 软件的基础上将其做大做强,使其可以调度官方的其他相
对了,我最近开通了微信公众号,计划是两边会同步更新,并逐步的会将博客上的文章同步至公众号中。
感兴趣的朋友可以扫描下方的二维码或者搜索“里先森sements”来关注,欢迎来玩~!
Xilinx 赛灵思官方推出的 Vitis 统一软件平台可以大致的理解为在原本 SDK 软件的基础上将其做大做强,使其可以调度官方的其他相关软件,从而成为一个针对赛灵思所有可加速设备(如Alveo、ACAP、FPGA等)的统一集成开发环境。
文章目录
1 - 从 Xilinx Zynq 讲起
传统的 FPGA ,仅含有可编程逻辑部分,即 PL(Progarmmable Logic)。赛灵思的 Zynq 系列则是在单片 FPGA 芯片上,将一个或者多个 ARM 内核嵌入其中,这一SOC部分被称为 PS (Processing System)。
事实上,你是可以直接在 PL 上搭建一个 SOC 出来,比如使用 ARM 的 Cortex-m3 内核 IP、Micro Blaze。但是相比于直接将一个成熟的ARM内核电路固化嵌入其中,自己在 PL 上搭建近似性能的内核,还是过于占用片上资源。
由于一块芯片上存在两个需要编程的部分,PL 需要用比特流(bitstream)来描述硬件架构,PS 需要运行裸机(standalone)或操作系统(如 Linux)。这便牵扯到对两块区域进行分别开发的问题。
熟悉赛灵思的 Spartan、Kintex、Virtex 等纯 PL 器件的人都知道,可以在赛灵思的 Vivado 软件中,使用 verilog 语言对 PL 部分进行编程、调试与运行;玩过 Zynq 系列的人也知道,在 Vivado 中选择使用Zynq 系列芯片后,可以添加 PS 的 IP 核。硬件导出后,可以在赛灵思的 SDK 中编写裸机或者能在操作系统上运行的程序。也可以使用 Petalinux 载入硬件描述文件,生成符合当前硬件的 Linux 操作系统。
这里我们可以总结一下,基本上,在赛灵思推出 Vitis 统一软件平台前,开发一套 PS + PL 的FPGA程序,基本使用的就是以下几个软件:
- Vivado
- SDK
- Petalinux
但是,随着赛灵思的产品线逐渐壮大,相关的软件也 迷之迭代 层出不穷,例如SDSoc。随着赛灵思收购深鉴科技,将 Deep Learning Process Unit(DPU)以及相关套件纳入囊中后。官方对于在 FPGA 上进行 AI 加速运算的推进也被划入了快车道。于是,Vitis 统一软件平台也就此诞生。其中最引人瞩目的便是官方宣传的 Vitis AI 功能,大部分想要尝鲜人工智能在 FPGA 上便捷部署的人们,迫不及待的想要对当前的开发工具更换为最新的 Vitis。但是却也有不少人被赛灵思官方对于 Vitis ,以及 Vitis AI 的描述绕的晕头转向。
那么,什么是 Vitis ?它的相关组件之间的关系又是什么?本文便是笔者在被绕的晕头转向之际,尝试着去对 Vitis 组件进行部分总结与概述的情况下所写下的。奈于精力与个人理解的有限性,难免会有疏漏之处,还希望诸位看官能不吝赐教。
2 - Vitis 平台概览
这里先将个人总结的 Vitis 平台中各个组件之间的关系图放出,方便查看。
从官方的 Vitis 介绍中,以及实际安装 Vitis Core 开发套件 后,我们可以了解到,Vitis 统一软件平台这个宏大蓝图之中,主要包含了以下几个组件:
- Vitis IDE
- Vitis HLS(也就是曾经的 Vivado HLS)
- Vitis Accelerated Library
- Vivado
- Vitis AI
- Petalinux
- XRT(Xilinx Runtime library)
关于安装 Vitis 可以参考UP主 吃猫粮的耗子 的这篇视频
2.1 - Vitis IDE
安装 Vitis Core Development Kit 后,你便可以在桌面上找到 Vitis 这个软件,它便是 Vitis 这个统一软件平台的一个调度口,打开它实际则是打开了 Vitis IDE 这个软件界面。
对于 Vitis ,一个重要的概念是 Platform,在这里不仅仅是 Vivado 导出后的硬件描述,而是一个更加广义的概念,其是一个包含了硬件与软件综合概念,在这个 Platform 上,你可以进行许多综合性的操作。(Platform 和 XSA的关系 - Community Forums)
硬件部分好说,我们使用 Vivado 即可导出。使用安装 Vitis 后的Vivado,在其中对硬件部分编译完毕后,我们可以直接唤起 Vitis IDE(这一点有点类似于我们曾经在 Vivado 中唤起 SDK)。也可以从 Vitis IDE 中,新建工程 ,并选择使用已添加的现有 Platform,或选择从 Vivado 导出的 xsa(Xilinx Shell Archive) 文件以新建 Platform。
软件部分,我们在 Vitis IDE 中也可以直接编写裸机或者操作系统上运行的应用程序,并且编译、调试。这样看来,Vitis IDE 本身,同以往的 SDK 其实很相似。
2.2 - Vitis HLS / Accelerated Library
Vitis HLS,和曾经的 Vivado HLS 并没有什么较大的差别。而 Vitis Accelerated Library 实质上更像是整合了以往赛灵思使用 HLS 进行优化过后的库的集合(例如 在 HLS 中使用 opencv),我们依然可以在 HLS 中调用并使用这些已加速优化后的库。
类似于曾经的 SDx ,也可以直接在 Vitis IDE 中调用 Vitis Accelerated Library 对代码进行加速,参考UG1393 或 Vitis 2020.1 Software Platform Release Notes 了解更多。
2.3 - Vitis AI
虽然叫 Vitis AI,但是目前来看和 Vitis IDE 的联系不大(至少目前没有从 IDE 中直接使用 Vitis AI 的方法)。Vitis AI 目前是纯命令行的形式,仅在 Linux 系统环境下运行,也就是说,为了使用这个功能,你必须安装 Linux 版本的 Vitis,并且保证拥有足够大的运行资源(RAM要求32GB以上)。
如概览图所示,Vitis AI 可以载入来自赛灵思精选后放入 Github 上的 Model Zoo 中的已固化模型,也可以载入来自用户自定义的模型文件。Vitis AI 工具包含几个组件,AI 编译器、量化器、优化器、分析器,并将最终的模型部署在 PL 端的 Deep Learning Processing Unit(DPU)上。PS端 或者对于 Alevo加速卡来说是电脑端,可以通过 Xilinx Runtime library(XRT)接口对其进行调用。
2.4 - Petalinux
petalinux 还是那个老味道,载入 vivado 导出的硬件文件,构建能在当前 PL 硬件环境上运行的 Linux系统,关于其介绍和使用可以查看我的 Petalinux系列文章。是否能够直接调用 petalinux 搭建环境,而不用手动进行操作呢?这点我还没有了解到。。。。。不过应该是支持的吧?
3 - The end?
结合着上章的描述,前面绘制的 Vitis 统一平台概览图应该也比较容易理解了。Vitis 的诞生本质是为了方便开发者们对赛灵思产品进行开发,不用再像过往一样,开发到某个步骤需要跳转到某个软件。大家也可以看看前面推荐的B站up主 吃猫粮的耗子 的相关视频教程,他的视频在我 踩坑 了解期间,给予了不少帮助,在这里对他表示衷心的感谢。大家对 Vitis 感兴趣的也可以加入他的QQ群:1146499819
关于 DPU 以及 Vitis AI ,后面如果有时间研究,应该也会做相关的记录。不过由于论文、项目与毕业设计等等一堆干涉的存在,记录的时间也处于不薛定谔的猫状态,同时存在于鸽与不鸽的状态。也许等到干涉的消失、玛奇玛征服电次、杜林族发酒疯的时候,概率云的崩塌便会导致记录的存在变为确实吧。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)