Vitis学习记录(一)
核心概念
Vitis统一软件平台为使用标准编程语言开发和交付FPGA加速应用程序提供了一个框架。Vitis提供了标准软件开发环境的所有功能,包括:
编译器或交叉编译器的主机应用程序运行在x86或Arm®处理器
用于构建FPGA二进制文件的交叉编译器
调试环境来帮助识别和解决代码中的问题
性能分析器来识别瓶颈并帮助您优化应用程序
理解Vitis编程和执行模型
一个Vitis加速应用程序由两个不同的组件组成:一个软件程序和一个包含硬件加速内核的FPGA二进制文件。
1.软件程序可以通过多种方式与硬件内核交互。最简单的方法可以分解为以下步骤:
2.主程序将内核所需的数据写入FPGA设备的全局内存中。
3.主程序设置内核的输入参数。
4.主程序触发内核的执行。内核执行所需的计算,根据需要访问全局内存来读写数据。内核还可以使用流连接与其他内核通信。
5.内核通知主机它已经完成了它的任务。
6.主程序可以将数据从全局内存转移到主机内存,也可以将数据的所有权交给另一个内核。
理解Vitis的构建过程
主程序是使用用于数据中心应用程序的GNU c++编译器(g++)或用于Xilinx MPSoC设备的GNU c++ Arm交叉编译器构建的。
使用Vitis编译器构建FPGA二进制文件。首先,内核被编译成Xilinx对象(.xo)文件。然后,将.xo文件链接到硬件平台以生成FPGA二进制(.xclbin)文件。Vitis编译器和链接器接受广泛的选项来裁剪和优化结果。
理解Vitis的构建目标
Vitis编译器提供了三个不同的构建目标:用于调试和验证目的的两个仿真目标,以及用于生成实际FPGA二进制文件的默认硬件目标:
软件模拟——内核代码被编译以在主机处理器上运行。这允许通过快速构建和运行循环来优化迭代算法。这个目标对于识别语法错误、执行与应用程序一起运行的内核代码的源代码级调试以及验证系统的行为非常有用。
硬件模拟——内核代码被编译成一个硬件模型(RTL),它在一个专用的模拟器中运行。这个构建-运行循环耗时较长,但提供了详细的、周期准确的内核活动视图。这个目标对于测试将进入FPGA的逻辑的功能和获得初始性能评估非常有用。
硬件——内核代码被编译成一个硬件模型(RTL),然后在FPGA上实现,产生一个二进制文件,可以在实际的FPGA上运行。
Vitis学习记录(一)相关推荐
- Vitis学习记录(三)
设置交叉编译环境 1.在主机上下载"sdk-2020.2.0.0.sh"脚本.sdk文件是通过petalinux-build--sdk命令生成的,用于设置sysroot头文件.li ...
- Pytorch学习记录-torchtext和Pytorch的实例( 使用神经网络训练Seq2Seq代码)
Pytorch学习记录-torchtext和Pytorch的实例1 0. PyTorch Seq2Seq项目介绍 1. 使用神经网络训练Seq2Seq 1.1 简介,对论文中公式的解读 1.2 数据预 ...
- HTML5与CSS3权威指南之CSS3学习记录
title: HTML5与CSS3权威指南之CSS3学习记录 toc: true date: 2018-10-14 00:06:09 学习资料--<HTML5与CSS3权威指南>(第3版) ...
- springboot @cacheable不起作用_Springboot学习记录13 使用缓存:整合redis
本学习记录的代码,部分参考自gitee码云的如下工程.这个工程有详尽的Spingboot1.x教程.鸣谢! https://gitee.com/didispace/SpringBoot-Learnin ...
- 【Cmake】Cmake学习记录
Cmake学习记录 1.1 常例 add_library(gen_reference_infogen_reference_info/gen_reference_info.hgen_reference_ ...
- ASP.NETCore学习记录(一)
ASP.NETCore学习记录(一) asp.net core介绍 Startup.cs ConfigureServices Configure 0. ASP.NETCore 介绍 ASP.N ...
- Android开发技术周报176学习记录
Android开发技术周报176学习记录 教程 当 OkHttp 遇上 Http 2.0 http://fucknmb.com/2018/04/16/%E5%BD%93OkHttp%E9%81%87% ...
- add函数 pytorch_Pytorch学习记录-Pytorch可视化使用tensorboardX
Pytorch学习记录-Pytorch可视化使用tensorboardX 在很早很早以前(至少一个半月),我做过几节关于tensorboard的学习记录. https://www.jianshu.co ...
- java之字符串学习记录
java之字符串学习记录 public class StringDemo { public static void main(String[] args) { //静态初始化字符串 String s1 ...
最新文章
- NPOI读取Excel数据应用
- 现在的我为什么不泡技术论坛了
- python中的继承有什么特点_python类的继承是什么?类的继承有什么样的规则?
- mysql againts函数_MariaDB / MySQL TO_SECONDS和AGGREGATE函数
- Geoff Hinton:我反对谷歌军事项目,论文评审机制正在阻碍创新
- docker服务启动:service docker start和systemctl start docker两种命令有什么区别?
- formal method lecture 9
- MindCon极客周 | 第三届全新席卷而来,SIG英雄帖,做硬核玩家,夺万元大奖!
- RBF的一维和二维逼近
- Centos系统服务FAQ汇总(下)
- Web测试中新增修改功能测试
- [Python] * 和 ** 的用法
- System.IO命名空间
- Probably at least one of the constraints in the following list is one you don't want.
- 解析GitHub首页3D动画
- [从零开始学FPGA编程-2]:本系列主要内容预览(持续更新):快速入门篇、提升篇、高阶篇
- mac安装多个JDK版本
- 实验二:tga格式图片转yuv格式
- Arduino使用火焰传感器
- AVPro批量制作视频缩略图