vitis zync 介绍

2024-05-15 00:18
文章标签 介绍 vitis zync

本文主要是介绍vitis zync 介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

https://blog.csdn.net/sements/article/details/109121380

文章目录
1 - 从 Xilinx Zynq 讲起
2 - Vitis 平台概览
2.1 - Vitis IDE
2.2 - Vitis HLS / Accelerated Library
2.3 - Vitis AI
2.4 - Petalinux
3 - The end?
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 ,后面如果有时间研究,应该也会做相关的记录。不过由于论文、项目与毕业设计等等一堆干涉的存在,记录的时间也处于不薛定谔的猫状态,同时存在于鸽与不鸽的状态。也许等到干涉的消失、玛奇玛征服电次、杜林族发酒疯的时候,概率云的崩塌便会导致记录的存在变为确实吧。
————————————————
版权声明:本文为CSDN博主「里先森」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sements/article/details/109121380

这篇关于vitis zync 介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/990262

相关文章

Python实现NLP的完整流程介绍

《Python实现NLP的完整流程介绍》这篇文章主要为大家详细介绍了Python实现NLP的完整流程,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 编程安装和导入必要的库2. 文本数据准备3. 文本预处理3.1 小写化3.2 分词(Tokenizatio

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}

C++——stack、queue的实现及deque的介绍

目录 1.stack与queue的实现 1.1stack的实现  1.2 queue的实现 2.重温vector、list、stack、queue的介绍 2.1 STL标准库中stack和queue的底层结构  3.deque的简单介绍 3.1为什么选择deque作为stack和queue的底层默认容器  3.2 STL中对stack与queue的模拟实现 ①stack模拟实现

Mysql BLOB类型介绍

BLOB类型的字段用于存储二进制数据 在MySQL中,BLOB类型,包括:TinyBlob、Blob、MediumBlob、LongBlob,这几个类型之间的唯一区别是在存储的大小不同。 TinyBlob 最大 255 Blob 最大 65K MediumBlob 最大 16M LongBlob 最大 4G

FreeRTOS-基本介绍和移植STM32

FreeRTOS-基本介绍和STM32移植 一、裸机开发和操作系统开发介绍二、任务调度和任务状态介绍2.1 任务调度2.1.1 抢占式调度2.1.2 时间片调度 2.2 任务状态 三、FreeRTOS源码和移植STM323.1 FreeRTOS源码3.2 FreeRTOS移植STM323.2.1 代码移植3.2.2 时钟中断配置 一、裸机开发和操作系统开发介绍 裸机:前后台系

nginx介绍及常用功能

什么是nginx nginx跟Apache一样,是一个web服务器(网站服务器),通过HTTP协议提供各种网络服务。 Apache:重量级的,不支持高并发的服务器。在Apache上运行数以万计的并发访问,会导致服务器消耗大量内存。操作系统对其进行进程或线程间的切换也消耗了大量的CPU资源,导致HTTP请求的平均响应速度降低。这些都决定了Apache不可能成为高性能WEB服务器  nginx:

多路转接之select(fd_set介绍,参数详细介绍),实现非阻塞式网络通信

目录 多路转接之select 引入 介绍 fd_set 函数原型 nfds readfds / writefds / exceptfds readfds  总结  fd_set操作接口  timeout timevalue 结构体 传入值 返回值 代码 注意点 -- 调用函数 select的参数填充  获取新连接 注意点 -- 通信时的调用函数 添加新fd到