0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Vitis HLS相關(guān)問(wèn)答詳解

XILINX開發(fā)者社區(qū) ? 來(lái)源:XILINX開發(fā)者社區(qū) ? 2023-08-11 11:23 ? 次閱讀

在 8 月 3 日舉行的針對(duì)如何利用 AMD Vitis HLS 提高任務(wù)級(jí)并行性的網(wǎng)絡(luò)研討會(huì)中,我們深入探討了任務(wù)級(jí)并行性的相關(guān)優(yōu)勢(shì)和使用方法。本次研討會(huì)中我們收到了來(lái)自廣大用戶和網(wǎng)友的熱情提問(wèn),針對(duì)代表性較強(qiáng)的問(wèn)題,專家在線進(jìn)行了集中答疑,研討會(huì)后我們另精選出部分高頻問(wèn)題在本文中做出進(jìn)一步解答。

1. 所謂多任務(wù),在 C/C++ 代碼編寫方面是否有新的規(guī)則或要求?或是會(huì)自動(dòng)進(jìn)行多任務(wù)的切分?

需要手工在 C++ 代碼里明確指定可并行執(zhí)行的任務(wù)(用 task,添加頭文件 hls_task.h),同時(shí)可并行執(zhí)行的 task 接口(對(duì)應(yīng) C++ 函數(shù)的形參)必須是 stream 或 stream_of_blocks。

2. 數(shù)據(jù)驅(qū)動(dòng)型設(shè)計(jì)要求反饋指的是什么呢?可以舉個(gè)例子嗎?

數(shù)據(jù)驅(qū)動(dòng)型支持反饋不是要求反饋,例如:funcA 輸出給 funcB, funcB 輸出給 funcC,funcC 的有一個(gè)輸出給到 funcA 構(gòu)成反饋支路。簡(jiǎn)單地說(shuō),數(shù)據(jù)流向不是單一向前的。

3. 具體代碼應(yīng)用中怎么快速識(shí)別出那兩種并行任務(wù)的區(qū)別在哪里?

要從數(shù)據(jù)流的角度考慮,例如,數(shù)據(jù)流單一流動(dòng)且后續(xù)用到的數(shù)據(jù)依賴于之前函數(shù)的輸出,這種情況下是控制驅(qū)動(dòng)型。funcA -> funcB -> funcC -> funD

如果數(shù)據(jù)流形成分支,但仍有依賴關(guān)系,比如 funcA -> funcB1,同時(shí) funcA -> funcB2,那么 funcB1 和 funcB2 就是并行執(zhí)行的兩個(gè)任務(wù),這就是數(shù)據(jù)驅(qū)動(dòng)型。

4. 我們?cè)谑褂?C/C++ 描述算法時(shí),只需關(guān)注算法本身就可以了,但是 FPGA 好像不是這樣,比如 C/C++ 沒(méi)有時(shí)序的概念, HLS 如何解決這個(gè)問(wèn)題?

HLS 工作原理主要有兩大內(nèi)容:Schedule,這個(gè)過(guò)程是提取狀態(tài)控制的過(guò)程,判斷什么時(shí)候執(zhí)行什么操作;Binding,這個(gè)過(guò)程是指定這些操作用 FPGA 內(nèi)的什么資源來(lái)實(shí)現(xiàn)。前者管理時(shí)序,后者管理資源。

5. 請(qǐng)問(wèn)在直播講解的示例中,Data_TLP 為什么能帶來(lái)這么大的性能提升?示例中任務(wù)不是多么復(fù)雜,為什么 DATAFLOW 的延遲和 II 會(huì)那么高?

因?yàn)?DATA_TLP 是多個(gè)任務(wù)并行執(zhí)行,而 DATAFLOW 盡管相比于原始已經(jīng)有了并行性,但是一種流水的方式,所以延遲和II 都會(huì)比純粹的并行多任務(wù)要大。

6. Stream 如果是 fifo,可以通過(guò) pragma 指定深度嗎?

可以不用 pragma 指定,在定義 stream 時(shí)就可以指定,例如:hls_stream,當(dāng)然也可以通過(guò) pragma STREAM 指定。

7. HLS 是否對(duì)硬件有特殊要求?

使用 Vitis HLS,只要芯片型號(hào)是 AMD Xilinx 7 系列 FPGA 到 Versal Adaptive SoC 芯片就可以。

8. Task 這個(gè)語(yǔ)法,在 2023 之前的版本里支持嗎?

從 Vitis HLS 2022.2 版本開始支持。

9. HLS 能編寫成一個(gè) IP,用于流片嗎?

這個(gè)需要先了解 HLS 的本質(zhì):它是把高層次語(yǔ)言比如 C++/C 描述的算法轉(zhuǎn)換成傳統(tǒng)的硬件語(yǔ)言,最終在 FPGA 上實(shí)現(xiàn)。采用 AMD Vitis HLS 時(shí),選擇的目標(biāo)芯片只能是 AMD 的 FPGA。但從廣義上來(lái)講,如果生成的 RTL 代碼不受具體 FPGA 芯片型號(hào)的限制,可以封裝成 IP 使用,但到流片還有很大一段距離。

10. 請(qǐng)問(wèn) HLS 在做協(xié)議組幀方面,與 Verilog 相比是否更有優(yōu)勢(shì)?

HLS 在復(fù)雜算法方面的實(shí)現(xiàn)上更有優(yōu)勢(shì),像這種協(xié)議組幀更適合用 HDL 比如 Verilog 或 VHDL 描述。

11. HLS 設(shè)計(jì)的驗(yàn)證如何保證充分性?

這個(gè)要從 C++ 測(cè)試平臺(tái)的代碼覆蓋率角度考慮,要專門的工具來(lái)測(cè)試代碼覆蓋率,所以要保證驗(yàn)證的重復(fù)性就要保證代碼覆蓋率為 100%。

12. 要用好 HLS 有沒(méi)有學(xué)習(xí) Verilog 的必要?

如果你是軟件工程師,沒(méi)有 FPGA 背景知識(shí),那么學(xué)習(xí) HLS 需要先了解一下 FPGA 的內(nèi)部結(jié)構(gòu)和工作機(jī)制,沒(méi)有多大必要專門學(xué)習(xí) Verilog。

13. 如何對(duì) HLS 工程進(jìn)行時(shí)鐘頻率的提升優(yōu)化?

首先,要從算法本身考慮,結(jié)合數(shù)據(jù)流進(jìn)行算法分割。此外還有兩個(gè)方面要考慮:一是代碼風(fēng)格,盡可能保證 C++ 代碼風(fēng)格遵循 HLS 的規(guī)范,二是如何使用 pragma,通過(guò) pragma 來(lái)改善性能。

14. HLS 的線性代數(shù)庫(kù)被移除后,還有什么庫(kù)函數(shù)可以方便地實(shí)現(xiàn)矩陣乘法嗎?

HLS 線性代數(shù)庫(kù)并沒(méi)有被移除,而是統(tǒng)一放到了 Vitis Library 里了。

這里既有矩陣乘也有矩陣分解。

15. HLS 封裝的 IP 能像 Verilog 那樣做參數(shù)化選擇嗎?

所謂 HLS 封裝 IP 是指 Vitis HLS 把最終生成的 RTL 代碼封裝為 IP 供 Vivado 使用,這時(shí)已經(jīng)完成了 C/C++ 到 RTL 代碼的轉(zhuǎn)換,所以封裝的 IP 是無(wú)法參數(shù)化的。

16. 本來(lái)模塊單獨(dú)沒(méi)有時(shí)序問(wèn)題,加上 DATAFLOW 后時(shí)序問(wèn)題就出現(xiàn)了,而且定位不到問(wèn)題點(diǎn),DATAFLOW 是否會(huì)影響時(shí)序?

DATAFLOW 會(huì)增加 Memory 的開銷,也就增加了資源利用率,間接影響時(shí)序。但你要先具體看一下時(shí)序問(wèn)題出現(xiàn)在哪里。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • amd
    amd
    +關(guān)注

    關(guān)注

    25

    文章

    5566

    瀏覽量

    135916
  • Verilog
    +關(guān)注

    關(guān)注

    29

    文章

    1366

    瀏覽量

    111871
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4371

    瀏覽量

    64230
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2117

    瀏覽量

    74794
  • Vitis
    +關(guān)注

    關(guān)注

    0

    文章

    147

    瀏覽量

    7836

原文標(biāo)題:Vitis HLS 研討會(huì)精彩回放及問(wèn)答詳解

文章出處:【微信號(hào):gh_2d1c7e2d540e,微信公眾號(hào):XILINX開發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    FPGA高層次綜合HLSVitis HLS知識(shí)庫(kù)簡(jiǎn)析

    ,Vivado 2019.1之前(包括),HLS工具叫Vivado HLS,之后為了統(tǒng)一將HLS集成到Vitis里了,集成之后增加了一些功能,同時(shí)將這部分開源出來(lái)了。
    發(fā)表于 09-07 15:21

    使用Vitis HLS創(chuàng)建屬于自己的IP相關(guān)資料分享

    1、使用Vitis HLS創(chuàng)建屬于自己的IP高層次綜合(High-level Synthesis)簡(jiǎn)稱HLS,指的是將高層次語(yǔ)言描述的邏輯結(jié)構(gòu),自動(dòng)轉(zhuǎn)換成低抽象級(jí)語(yǔ)言描述的電路模型的過(guò)程。對(duì)于AMD
    發(fā)表于 09-09 16:45

    Vivado HLSVitis HLS 兩者之間有什么區(qū)別

    Vitis HLS下,一個(gè)Solution的Flow Target可以是Vivado IP Flow Target,也可以是VitisKernel Flow Target,如下圖所示。前者最終導(dǎo)出來(lái)
    的頭像 發(fā)表于 11-05 17:43 ?4w次閱讀

    Vitis初探—1.將設(shè)計(jì)從SDSoC/Vivado HLS遷移到Vitis上的教程

    本文介紹如何一步一步將設(shè)計(jì)從SDSoC/Vivado HLS遷移到Vitis平臺(tái)。
    的頭像 發(fā)表于 07-25 17:45 ?4519次閱讀
    <b class='flag-5'>Vitis</b>初探—1.將設(shè)計(jì)從SDSoC/Vivado <b class='flag-5'>HLS</b>遷移到<b class='flag-5'>Vitis</b>上的教程

    Vitis初探—1.將設(shè)計(jì)從SDSoC/Vivado HLS遷移到Vitis

    本文介紹如何一步一步將設(shè)計(jì)從SDSoC/Vivado HLS遷移到Vitis平臺(tái)。
    發(fā)表于 01-31 08:12 ?8次下載
    <b class='flag-5'>Vitis</b>初探—1.將設(shè)計(jì)從SDSoC/Vivado <b class='flag-5'>HLS</b>遷移到<b class='flag-5'>Vitis</b>上

    基于Vitis HLS的加速圖像處理

    使用Vivado / Vitis工具提供預(yù)安裝的OpenCV版本。盡管Vitis_hls編譯Vision庫(kù)不需要OpenCV,但是用戶測(cè)試驗(yàn)證使用時(shí)OpenCV。
    的頭像 發(fā)表于 02-16 16:21 ?2724次閱讀
    基于<b class='flag-5'>Vitis</b> <b class='flag-5'>HLS</b>的加速圖像處理

    Vitis HLS工具簡(jiǎn)介及設(shè)計(jì)流程

    Vitis HLS 是一種高層次綜合工具,支持將 C、C++ 和 OpenCL 函數(shù)硬連線到器件邏輯互連結(jié)構(gòu)和 RAM/DSP 塊上。Vitis HLS 可在
    的頭像 發(fā)表于 05-25 09:43 ?2717次閱讀

    Vitis HLS如何添加HLS導(dǎo)出的.xo文件

    HLS導(dǎo)出的.xo文件如何導(dǎo)入到Vitis里面?需要把.xo文件解壓,然后把文件夾導(dǎo)入到Vitis Kernel/src文件夾下嗎?
    的頭像 發(fā)表于 08-03 11:20 ?3406次閱讀
    <b class='flag-5'>Vitis</b> <b class='flag-5'>HLS</b>如何添加<b class='flag-5'>HLS</b>導(dǎo)出的.xo文件

    Vitis HLS前端現(xiàn)已全面開源

    Vitis HLS 工具能夠?qū)?C++ 和 OpenCL 功能部署到器件的邏輯結(jié)構(gòu)和 RAM/DSP 塊上。在 GitHub 上提供 Vitis HLS 前端為研究人員、開發(fā)人員和編譯
    的頭像 發(fā)表于 08-03 09:53 ?1141次閱讀

    Vitis HLS知識(shí)庫(kù)總結(jié)

    對(duì)于AMD Xilinx而言,Vivado 2019.1之前(包括),HLS工具叫Vivado HLS,之后為了統(tǒng)一將HLS集成到Vitis里了,集成之后增加了一些功能,同時(shí)將這部分開
    的頭像 發(fā)表于 09-02 09:06 ?3925次閱讀

    理解Vitis HLS默認(rèn)行為

    相比于VivadoHLS,Vitis HLS更加智能化,這體現(xiàn)在Vitis HLS可以自動(dòng)探測(cè)C/C++代碼中可并行執(zhí)行地部分而無(wú)需人工干預(yù)添加pragma。另一方面VitisHLS也
    的頭像 發(fā)表于 11-24 11:42 ?2077次閱讀

    AMD全新Vitis HLS資源現(xiàn)已推出

    AMD Vitis HLS 工具允許用戶通過(guò)將 C/C++ 函數(shù)綜合成 RTL,輕松創(chuàng)建復(fù)雜的 FPGA 算法。Vitis HLS 工具與 Vivado Design Suite(用于
    的頭像 發(fā)表于 04-23 10:41 ?1339次閱讀
    AMD全新<b class='flag-5'>Vitis</b> <b class='flag-5'>HLS</b>資源現(xiàn)已推出

    如何在Vitis HLS GUI中使用庫(kù)函數(shù)?

    Vitis? HLS 2023.1 支持新的 L1 庫(kù)向?qū)?,本文將講解如何下載 L1 庫(kù)、查看所有可用功能以及如何在 Vitis HLS GUI 中使用庫(kù)函數(shù)。
    的頭像 發(fā)表于 08-16 10:26 ?1487次閱讀
    如何在<b class='flag-5'>Vitis</b> <b class='flag-5'>HLS</b> GUI中使用庫(kù)函數(shù)?

    Vitis HLS:使用任務(wù)級(jí)并行性的高性能設(shè)計(jì)

    電子發(fā)燒友網(wǎng)站提供《Vitis HLS:使用任務(wù)級(jí)并行性的高性能設(shè)計(jì).pdf》資料免費(fèi)下載
    發(fā)表于 09-13 17:21 ?0次下載
    <b class='flag-5'>Vitis</b> <b class='flag-5'>HLS</b>:使用任務(wù)級(jí)并行性的高性能設(shè)計(jì)

    Vitis HLS移植指南

    電子發(fā)燒友網(wǎng)站提供《Vitis HLS移植指南.pdf》資料免費(fèi)下載
    發(fā)表于 09-13 09:21 ?0次下載
    <b class='flag-5'>Vitis</b> <b class='flag-5'>HLS</b>移植指南