0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Vitis HLS相关问答详解

XILINX开发者社区 来源:XILINX开发者社区 2023-08-11 11:23 次阅读

在 8 月 3 日举行的针对如何利用 AMD Vitis HLS 提高任务级并行性的网络研讨会中,我们深入探讨了任务级并行性的相关优势和使用方法。本次研讨会中我们收到了来自广大用户和网友的热情提问,针对代表性较强的问题,专家在线进行了集中答疑,研讨会后我们另精选出部分高频问题在本文中做出进一步解答。

1. 所谓多任务,在 C/C++ 代码编写方面是否有新的规则或要求?或是会自动进行多任务的切分?

需要手工在 C++ 代码里明确指定可并行执行的任务(用 task,添加头文件 hls_task.h),同时可并行执行的 task 接口(对应 C++ 函数的形参)必须是 stream 或 stream_of_blocks。

2. 数据驱动型设计要求反馈指的是什么呢?可以举个例子吗?

数据驱动型支持反馈不是要求反馈,例如:funcA 输出给 funcB, funcB 输出给 funcC,funcC 的有一个输出给到 funcA 构成反馈支路。简单地说,数据流向不是单一向前的。

3. 具体代码应用中怎么快速识别出那两种并行任务的区别在哪里?

要从数据流的角度考虑,例如,数据流单一流动且后续用到的数据依赖于之前函数的输出,这种情况下是控制驱动型。funcA -> funcB -> funcC -> funD

如果数据流形成分支,但仍有依赖关系,比如 funcA -> funcB1,同时 funcA -> funcB2,那么 funcB1 和 funcB2 就是并行执行的两个任务,这就是数据驱动型。

4. 我们在使用 C/C++ 描述算法时,只需关注算法本身就可以了,但是 FPGA 好像不是这样,比如 C/C++ 没有时序的概念, HLS 如何解决这个问题?

HLS 工作原理主要有两大内容:Schedule,这个过程是提取状态控制的过程,判断什么时候执行什么操作;Binding,这个过程是指定这些操作用 FPGA 内的什么资源来实现。前者管理时序,后者管理资源。

5. 请问在直播讲解的示例中,Data_TLP 为什么能带来这么大的性能提升?示例中任务不是多么复杂,为什么 DATAFLOW 的延迟和 II 会那么高?

因为 DATA_TLP 是多个任务并行执行,而 DATAFLOW 尽管相比于原始已经有了并行性,但是一种流水的方式,所以延迟和II 都会比纯粹的并行多任务要大。

6. Stream 如果是 fifo,可以通过 pragma 指定深度吗?

可以不用 pragma 指定,在定义 stream 时就可以指定,例如:hls_stream,当然也可以通过 pragma STREAM 指定。

7. HLS 是否对硬件有特殊要求?

使用 Vitis HLS,只要芯片型号是 AMD Xilinx 7 系列 FPGA 到 Versal Adaptive SoC 芯片就可以。

8. Task 这个语法,在 2023 之前的版本里支持吗?

从 Vitis HLS 2022.2 版本开始支持。

9. HLS 能编写成一个 IP,用于流片吗?

这个需要先了解 HLS 的本质:它是把高层次语言比如 C++/C 描述的算法转换成传统的硬件语言,最终在 FPGA 上实现。采用 AMD Vitis HLS 时,选择的目标芯片只能是 AMD 的 FPGA。但从广义上来讲,如果生成的 RTL 代码不受具体 FPGA 芯片型号的限制,可以封装成 IP 使用,但到流片还有很大一段距离。

10. 请问 HLS 在做协议组帧方面,与 Verilog 相比是否更有优势?

HLS 在复杂算法方面的实现上更有优势,像这种协议组帧更适合用 HDL 比如 Verilog 或 VHDL 描述。

11. HLS 设计的验证如何保证充分性?

这个要从 C++ 测试平台的代码覆盖率角度考虑,要专门的工具来测试代码覆盖率,所以要保证验证的重复性就要保证代码覆盖率为 100%。

12. 要用好 HLS 有没有学习 Verilog 的必要?

如果你是软件工程师,没有 FPGA 背景知识,那么学习 HLS 需要先了解一下 FPGA 的内部结构和工作机制,没有多大必要专门学习 Verilog。

13. 如何对 HLS 工程进行时钟频率的提升优化?

首先,要从算法本身考虑,结合数据流进行算法分割。此外还有两个方面要考虑:一是代码风格,尽可能保证 C++ 代码风格遵循 HLS 的规范,二是如何使用 pragma,通过 pragma 来改善性能。

14. HLS 的线性代数库被移除后,还有什么库函数可以方便地实现矩阵乘法吗?

HLS 线性代数库并没有被移除,而是统一放到了 Vitis Library 里了。

这里既有矩阵乘也有矩阵分解。

15. HLS 封装的 IP 能像 Verilog 那样做参数化选择吗?

所谓 HLS 封装 IP 是指 Vitis HLS 把最终生成的 RTL 代码封装为 IP 供 Vivado 使用,这时已经完成了 C/C++ 到 RTL 代码的转换,所以封装的 IP 是无法参数化的。

16. 本来模块单独没有时序问题,加上 DATAFLOW 后时序问题就出现了,而且定位不到问题点,DATAFLOW 是否会影响时序?

DATAFLOW 会增加 Memory 的开销,也就增加了资源利用率,间接影响时序。但你要先具体看一下时序问题出现在哪里。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • amd
    amd
    +关注

    关注

    25

    文章

    5273

    浏览量

    132968
  • Verilog
    +关注

    关注

    28

    文章

    1328

    浏览量

    109501
  • 函数
    +关注

    关注

    3

    文章

    4117

    浏览量

    61547
  • C++
    C++
    +关注

    关注

    21

    文章

    2070

    浏览量

    73024
  • Vitis
    +关注

    关注

    0

    文章

    144

    浏览量

    7212

原文标题:Vitis HLS 研讨会精彩回放及问答详解

文章出处:【微信号:gh_2d1c7e2d540e,微信公众号:XILINX开发者社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    FPGA高层次综合HLSVitis HLS知识库简析

    ,Vivado 2019.1之前(包括),HLS工具叫Vivado HLS,之后为了统一将HLS集成到Vitis里了,集成之后增加了一些功能,同时将这部分开源出来了。
    发表于 09-07 15:21

    使用Vitis HLS创建属于自己的IP相关资料分享

    1、使用Vitis HLS创建属于自己的IP高层次综合(High-level Synthesis)简称HLS,指的是将高层次语言描述的逻辑结构,自动转换成低抽象级语言描述的电路模型的过程。对于AMD
    发表于 09-09 16:45

    Vivado HLSVitis HLS 两者之间有什么区别

    Vitis HLS下,一个Solution的Flow Target可以是Vivado IP Flow Target,也可以是VitisKernel Flow Target,如下图所示。前者最终导出来
    的头像 发表于 11-05 17:43 3.8w次阅读

    Vitis初探—1.将设计从SDSoC/Vivado HLS迁移到Vitis上的教程

    本文介绍如何一步一步将设计从SDSoC/Vivado HLS迁移到Vitis平台。
    的头像 发表于 07-25 17:45 3351次阅读
    <b class='flag-5'>Vitis</b>初探—1.将设计从SDSoC/Vivado <b class='flag-5'>HLS</b>迁移到<b class='flag-5'>Vitis</b>上的教程

    Vitis初探—1.将设计从SDSoC/Vivado HLS迁移到Vitis

    本文介绍如何一步一步将设计从SDSoC/Vivado HLS迁移到Vitis平台。
    发表于 01-31 08:12 8次下载
    <b class='flag-5'>Vitis</b>初探—1.将设计从SDSoC/Vivado <b class='flag-5'>HLS</b>迁移到<b class='flag-5'>Vitis</b>上

    基于Vitis HLS的加速图像处理

    使用Vivado / Vitis工具提供预安装的OpenCV版本。尽管Vitis_hls编译Vision库不需要OpenCV,但是用户测试验证使用时OpenCV。
    的头像 发表于 02-16 16:21 2169次阅读
    基于<b class='flag-5'>Vitis</b> <b class='flag-5'>HLS</b>的加速图像处理

    Vitis HLS工具简介及设计流程

    Vitis HLS 是一种高层次综合工具,支持将 C、C++ 和 OpenCL 函数硬连线到器件逻辑互连结构和 RAM/DSP 块上。Vitis HLS 可在
    的头像 发表于 05-25 09:43 2084次阅读

    Vitis HLS前端现已全面开源

    Vitis HLS 工具能够将 C++ 和 OpenCL 功能部署到器件的逻辑结构和 RAM/DSP 块上。在 GitHub 上提供 Vitis HLS 前端为研究人员、开发人员和编译
    的头像 发表于 08-03 09:53 790次阅读

    Vitis HLS知识库总结

    对于AMD Xilinx而言,Vivado 2019.1之前(包括),HLS工具叫Vivado HLS,之后为了统一将HLS集成到Vitis里了,集成之后增加了一些功能,同时将这部分开
    的头像 发表于 09-02 09:06 3069次阅读

    理解Vitis HLS默认行为

    相比于VivadoHLS,Vitis HLS更加智能化,这体现在Vitis HLS可以自动探测C/C++代码中可并行执行地部分而无需人工干预添加pragma。另一方面VitisHLS也
    的头像 发表于 11-24 11:42 1538次阅读

    HLS最全知识库

    对于AMD Xilinx而言,Vivado 2019.1之前(包括),HLS工具叫Vivado HLS,之后为了统一将HLS集成到Vitis里了,集成之后增加了一些功能,同时将这部分开
    的头像 发表于 01-15 11:27 1977次阅读

    AMD全新Vitis HLS资源现已推出

    AMD Vitis HLS 工具允许用户通过将 C/C++ 函数综合成 RTL,轻松创建复杂的 FPGA 算法。Vitis HLS 工具与 Vivado Design Suite(用于
    的头像 发表于 04-23 10:41 800次阅读
    AMD全新<b class='flag-5'>Vitis</b> <b class='flag-5'>HLS</b>资源现已推出

    如何在Vitis HLS GUI中使用库函数?

    VitisHLS 2023.1 支持新的 L1 库向导,本文将讲解如何下载 L1 库、查看所有可用功能以及如何在 Vitis HLS GUI 中使用库函数。
    的头像 发表于 08-16 10:26 755次阅读
    如何在<b class='flag-5'>Vitis</b> <b class='flag-5'>HLS</b> GUI中使用库函数?

    Vitis HLS:使用任务级并行性的高性能设计

    电子发烧友网站提供《Vitis HLS:使用任务级并行性的高性能设计.pdf》资料免费下载
    发表于 09-13 17:21 0次下载
    <b class='flag-5'>Vitis</b> <b class='flag-5'>HLS</b>:使用任务级并行性的高性能设计

    Vitis HLS移植指南

    电子发烧友网站提供《Vitis HLS移植指南.pdf》资料免费下载
    发表于 09-13 09:21 0次下载
    <b class='flag-5'>Vitis</b> <b class='flag-5'>HLS</b>移植指南