賽靈思一直致力于支持開(kāi)源計(jì)劃的不斷飛躍,為幫助開(kāi)發(fā)人員和研發(fā)社區(qū)充分發(fā)揮自適應(yīng)計(jì)算的優(yōu)勢(shì),我們?cè)俅巫龀隽肆钊苏駣^的舉措: 在 GitHub 上開(kāi)放提供 Vitis HLS(高層次綜合)前端(GitHub 是全球規(guī)模最大的開(kāi)發(fā)平臺(tái)以及構(gòu)建和共享軟件代碼的開(kāi)放社區(qū))
Vitis HLS 工具能夠?qū)?C++ 和 OpenCL 功能部署到器件的邏輯結(jié)構(gòu)和 RAM/DSP 塊上。在 GitHub 上提供 Vitis HLS 前端為研究人員、開(kāi)發(fā)人員和編譯器愛(ài)好者開(kāi)啟了無(wú)限可能的新世界,使他們可以利用 Vitis HLS 技術(shù)并根據(jù)其應(yīng)用的特定需求進(jìn)行修改。
10 多年來(lái),賽靈思不斷改進(jìn) HLS 技術(shù),幫助硬件開(kāi)發(fā)人員提高設(shè)計(jì)生產(chǎn)力,并且讓沒(méi)有硬件設(shè)計(jì)經(jīng)驗(yàn)的軟件和應(yīng)用開(kāi)發(fā)人員更容易接受和利用賽靈思自適應(yīng)平臺(tái)。隨著 Vitis HLS 前端現(xiàn)已在 GitHub 上全面開(kāi)源,軟硬件開(kāi)發(fā)人員可以靈活運(yùn)用標(biāo)準(zhǔn)的 Clang/LLVM 基礎(chǔ)架構(gòu)并為以下功能定制設(shè)計(jì)流程:
為 C/C++ 和 OpenCL 之外新的高級(jí)語(yǔ)言提供支持
添加新的特定領(lǐng)域優(yōu)化編譯指令或編譯器指導(dǎo)
定制 LLVM IR 轉(zhuǎn)換(即新的 LLVM pass)
Vitis HLS 中的 C/C++ 到 RTL 綜合流程包括兩個(gè)主要組成部分:
[1] 前端:該部分主要解析用 C/C++ 或 OpenCL 表示的代碼,使用 Clang/LLVM 工具鏈進(jìn)行前端和中端轉(zhuǎn)換。
[2] 后端:該階段采用 LLVM IR 輸入,并執(zhí)行 FPGA 特定的底層映射和調(diào)度,直到最后一步,生成 RTL 。
除了支持Clang/LLVM 流程外,該項(xiàng)目還提供:
用于編譯指示支持和硬件可綜合性檢查的框架
一種將固有順序 C 代碼映射到空間硬件架構(gòu)的方法
通往 Vitis 統(tǒng)一軟件平臺(tái)的網(wǎng)關(guān),以訪問(wèn)相關(guān)流程和庫(kù)
我們的生態(tài)系統(tǒng)合作伙伴 Silexica 以及美國(guó)伊利諾伊大學(xué)厄巴納 - 香檳分校 (UIUC)、帝國(guó)理工學(xué)院、香港科技大學(xué)的研究社區(qū)是如何利用 Vitis HLS 前端擴(kuò)展功能,并助力其研究項(xiàng)目的呢?
“Vitis HLS 的前端開(kāi)源有助于 FPGA 研究和生態(tài)系統(tǒng)合作伙伴社區(qū)進(jìn)行擴(kuò)展、定制乃至進(jìn)一步優(yōu)化 HLS 編譯過(guò)程。賽靈思新的開(kāi)源計(jì)劃還為 Vitis HLS 提供了全新的‘注入使用模型’,能夠注入定制的第三方代碼轉(zhuǎn)換,甚至使用完全定制的 Clang 編譯器前端?!?/p>
通過(guò)與賽靈思密切合作,Silexica 開(kāi)發(fā)了一款 SLX 插件,它可以利用新的注入使用模型擴(kuò)展Vitis HLS 2020.2 代碼轉(zhuǎn)換。SLX 插件是一種 HLS 編譯器插件,通過(guò)提供新的 Loop Interchange 指導(dǎo),有助于改善 Vitis HLS 的延遲問(wèn)題和吞吐量結(jié)果。這是 Silexica 計(jì)劃的許多 HLS 優(yōu)化指導(dǎo)中的第一個(gè)。該插件可作為 Vitis HLS 的純獨(dú)立插件使用,也可與 Silexica 的SLX FPGA 工具結(jié)合使用,以同時(shí)使用其深層代碼分析、自動(dòng)設(shè)計(jì)探索以及最佳指導(dǎo)識(shí)別和調(diào)優(yōu)功能。
“通過(guò) UIUC 的賽靈思自適應(yīng)計(jì)算集群 (XACC) 項(xiàng)目合作,我們提前獲得了開(kāi)源軟件包。利用軟件包提供的接口,我們可以方便地定制并集成新的 Clang 編譯指示和 LLVM pass 到 Vitis HLS 中,以實(shí)施和評(píng)估我們的研究思路。在Vitis HLS流程中利用LLVM的能力在許多方面都帶來(lái)了新的可能性。此外,開(kāi)源 Vitis HLS 前端還將大幅促進(jìn) HLS 開(kāi)源社區(qū)的增長(zhǎng)。我們很高興自己能成為其中的一員。
“對(duì)我這樣的 HLS 工具設(shè)計(jì)師來(lái)說(shuō),在將 LLVM IR 轉(zhuǎn)換回 C 代碼(包括 pragmas)時(shí),將代碼輸入到 Vitis HLS中是非常困難的。新的 Vitis HLS 前端能夠極大地幫助我們的工具動(dòng)態(tài)和靜態(tài)調(diào)度 (DASS) 集成到 HLS 流程中。例如,開(kāi)源前端使我們能直接進(jìn)行程序分析和轉(zhuǎn)換,并將編譯指示插入到 LLVM 中。”
“從我們的角度看,開(kāi)發(fā)全面的 HLS 工具需要大量工程設(shè)計(jì)工作,這也是學(xué)術(shù)界與工業(yè)之間存在的差距之一。賽靈思慷慨地開(kāi)放了商業(yè) HLS 前端,它能與 Vitis HLS 結(jié)合使用,從而提供了靈活的 API 以及從解析到 IR 優(yōu)化的可讀源代碼。它使得我們不必再處理詳細(xì)的實(shí)施方案,使我們能夠在實(shí)用應(yīng)用場(chǎng)景中解決問(wèn)題,并幫助我們高效地評(píng)估自己的想法。對(duì)于 HLS 社區(qū),我們相信這個(gè)開(kāi)源項(xiàng)目將大幅促進(jìn)創(chuàng)新,因?yàn)樗軒椭脩?hù)根據(jù)具體需求輕松定制工具?!?/p>
香港科技大學(xué)的兩個(gè)開(kāi)發(fā)項(xiàng)目利用了 Vitis HLS 前端:
項(xiàng)目 1:高效自動(dòng)優(yōu)化 Pass 階段排序:
在該項(xiàng)目中,根據(jù)輸入源代碼的特性,開(kāi)源前端中提供優(yōu)化 pass 的最佳順序?qū)⑼ㄟ^(guò)機(jī)器學(xué)習(xí)和啟發(fā)式算法進(jìn)行搜索,用于改進(jìn)性能和資源消耗。
項(xiàng)目 2:多 FPGA HLS:
在該項(xiàng)目中,開(kāi)源前端生成的 IR 代碼將通過(guò)性能和資源模型進(jìn)行分析,并自動(dòng)劃分為子模塊,這些子模塊針對(duì)與網(wǎng)絡(luò)或 DDR 存儲(chǔ)器互聯(lián)的多個(gè) FPGA 應(yīng)用進(jìn)行了優(yōu)化。
Vitis HLS 前端的源代碼可在賽靈思 GitHub 庫(kù)中獲取。該庫(kù)共享的3個(gè)示例演示了如何使用和定制流程,包括構(gòu)建定制 LLVM pass 的流程。
編輯:lyn
-
賽靈思
+關(guān)注
關(guān)注
32文章
1794瀏覽量
131456 -
編譯器
+關(guān)注
關(guān)注
1文章
1642瀏覽量
49247 -
硬件開(kāi)發(fā)
+關(guān)注
關(guān)注
3文章
159瀏覽量
24262 -
HLS
+關(guān)注
關(guān)注
1文章
130瀏覽量
24187
原文標(biāo)題:開(kāi)啟無(wú)限可能的世界: Vitis HLS 前端現(xiàn)已全面開(kāi)源
文章出處:【微信號(hào):gh_2d1c7e2d540e,微信公眾號(hào):XILINX開(kāi)發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論