精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

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

賽靈思的 SDAccel 開(kāi)發(fā)環(huán)境為 FPGA 提供軟件應(yīng)用設(shè)計(jì)流程

Xilinx賽靈思官微 ? 來(lái)源:djl ? 作者:賽靈思Jayashree Ra ? 2019-06-28 06:07 ? 次閱讀

賽靈思 FPGA 器件主要由可編程邏輯架構(gòu)組成,能讓?xiě)?yīng)用設(shè)計(jì)人員利用空間和時(shí)間并行性,最大化算法性能或大型應(yīng)用中關(guān)鍵內(nèi)核的性能。位于這種架構(gòu)核心的是由基于查找表的邏輯元、分布式存儲(chǔ)器單元和乘法-累加單元構(gòu)成的陣列。設(shè)計(jì)人員可以用不同方式組合這些元件,把邏輯實(shí)現(xiàn)在算法中,同時(shí)滿足功耗、吞吐量和時(shí)延方面的設(shè)計(jì)目標(biāo)要求。把 FPGA 架構(gòu)元件組合為邏輯功能一直是硬件工程人員的工作范疇,這個(gè)過(guò)程更類(lèi)似于匯編層面的編碼,與現(xiàn)代軟件設(shè)計(jì)實(shí)務(wù)相去甚遠(yuǎn)。雖然常用軟件設(shè)計(jì)流程早已脫離匯編編碼的層面,但由于 CPU 編譯和 FPGA 編譯之間內(nèi)在的差異,F(xiàn)PGA 設(shè)計(jì)實(shí)踐的發(fā)展步伐要緩慢一些。

在 CPU 和 GPU 領(lǐng)域,硬件是固定的,所有的程序均根據(jù)靜態(tài)指令集架構(gòu) (ISA) 編譯。雖然 CPU 和 GPU 之間的 ISA 不同,但基本的底層編譯方法是相同的。這種相似性促使設(shè)計(jì)實(shí)踐從手動(dòng)匯編編碼向使用 OpenCL C、C 和 C++ 等軟件開(kāi)發(fā)常用的編程語(yǔ)言進(jìn)行編譯、調(diào)試和優(yōu)化的設(shè)計(jì)流程發(fā)展演化。

在 FPGA 設(shè)計(jì)方面,設(shè)計(jì)人員能夠?yàn)檫\(yùn)行特定工作負(fù)載開(kāi)發(fā)自己的處理架構(gòu)。FPGA 的一大重要優(yōu)勢(shì)就是能夠根據(jù)特定系統(tǒng)需求定制架構(gòu),但這不利于 FPGA 應(yīng)用開(kāi)發(fā)中采用軟件開(kāi)發(fā)實(shí)踐方法。

六年前賽靈思開(kāi)始積極的研發(fā)工作,通過(guò)開(kāi)發(fā)一種把直觀的軟件開(kāi)發(fā)設(shè)計(jì)循環(huán)引入 FPGA 的開(kāi)發(fā)環(huán)境,來(lái)打破這一障礙。面向 OpenCL C、C 和 C++ 的賽靈思 SDAccel 能夠讓 FPGA 器件的應(yīng)用編譯、調(diào)試與優(yōu)化方式類(lèi)似于 CPU 和 GPU 的流程,而且在用于數(shù)據(jù)中心應(yīng)用加速時(shí),可將性能功耗比提升高達(dá) 25 倍。

軟件設(shè)計(jì)人員可以使用 SDAccel 開(kāi)發(fā)環(huán)境開(kāi)發(fā)和加速眾多功能與應(yīng)用。下面介紹如何使用 SDAccel 環(huán)境實(shí)現(xiàn)中值濾波器應(yīng)用的編譯、調(diào)試與優(yōu)化設(shè)計(jì)循環(huán)。

中值濾波器

中值濾波器是一種常在圖像處理中用于降噪目的的空間函數(shù)(圖 1)。中值濾波器使用的算法用圍繞中心像素的 3x3 像素窗口,根據(jù)所有相鄰像素的中值計(jì)算中心像素值。這一計(jì)算公式為:

outputPixel[i][j] =

median (

inputPixel[i-1][j-1],

inputPix- el[i-1][j],

inputPixel[i-1][j+1],

inputPixel[i][j-1],

inputPixel[i] [j],

inputPixel[i][j+1],

inputPixel[i+1][j-1],

inputPixel[i+1][j],

inputPixel[i+1][j+1]

) ;

賽靈思的 SDAccel 開(kāi)發(fā)環(huán)境為 FPGA 提供軟件應(yīng)用設(shè)計(jì)流程



編譯

運(yùn)用 OpenCL C 等語(yǔ)言編寫(xiě)中值濾波器函數(shù)后,就進(jìn)入開(kāi)發(fā)的第一個(gè)階段——編譯。在 CPU 或 GPU 上,編譯是軟件設(shè)計(jì)流程中的一個(gè)必要的也是必然的步驟。目標(biāo) ISA 是固定而公開(kāi)的,編程人員只需關(guān)心可用的處理內(nèi)核數(shù)量和算法的高速緩存缺失情況。FPGA 編譯更像一個(gè)開(kāi)放問(wèn)題:在編譯時(shí)目標(biāo) ISA 并不存在,邏輯資源還有待組合成處理架構(gòu),系統(tǒng)存儲(chǔ)器架構(gòu)也尚未定義。

SDAccel 開(kāi)發(fā)環(huán)境中的編譯器提供三項(xiàng)功能,可幫助編程人員應(yīng)對(duì)如下這些挑戰(zhàn):自動(dòng)在循環(huán)內(nèi)的語(yǔ)句間和跨循環(huán)迭代提取并行性、根據(jù)對(duì)陣列的讀寫(xiě)模式自動(dòng)調(diào)用存儲(chǔ)器架構(gòu)、以及對(duì)給定 FPGA 器件內(nèi)部基本邏輯元的類(lèi)型和數(shù)量的架構(gòu)感知能力。這三項(xiàng)功能對(duì)中值濾波器的源代碼的重要性見(jiàn)圖示(圖 2)。

賽靈思的 SDAccel 開(kāi)發(fā)環(huán)境為 FPGA 提供軟件應(yīng)用設(shè)計(jì)流程

中值濾波器的運(yùn)算可以表達(dá)為由一系列由兩個(gè)部分組成的嵌套循環(huán)。第一個(gè)部分負(fù)責(zé)從名為“輸入”的外部存儲(chǔ)器中陣列取出數(shù)據(jù),然后把值存儲(chǔ)在本地陣列“RGB”中。算法第二個(gè)部分是一個(gè)圍繞 getMedian 函數(shù)的“for”循環(huán)。getMedian 就是計(jì)算發(fā)生的位置。

通過(guò)分析圖 2 中的代碼,SDAcell 環(huán)境認(rèn)為 RGB 陣列上不存在循環(huán)-承載數(shù)據(jù)依賴關(guān)系。每次循環(huán)迭代都有一個(gè)專(zhuān)有 RGB 副本,這個(gè)副本可以存儲(chǔ)在不同物理資源上。從這個(gè)代碼看出的 SDAccel 環(huán)境的另一大特點(diǎn)是對(duì) getMedian 函數(shù)調(diào)用的獨(dú)立性。

圖 2 所示的算法版本在帶有固定邊界的“for”循環(huán)內(nèi)部執(zhí)行 getMedian 函數(shù)。根據(jù)濾波器的性能目標(biāo)和所選的 FPGA,SDAccel 環(huán)境可以跨所有三個(gè)通道重復(fù)利用計(jì)算資源,或是分配更多邏輯,實(shí)現(xiàn)空間并行性,同時(shí)運(yùn)行所有通道。這項(xiàng)決定相應(yīng)地會(huì)影響如何為陣列 RGB 實(shí)現(xiàn)存儲(chǔ)器存儲(chǔ)。

從應(yīng)用編程人員的角度出發(fā),上述步驟是透明的,可視為 GNU 編譯器套件 (GCC) 中的–O1 到 –O3 優(yōu)化。

SDAccel 環(huán)境中的 printf 設(shè)計(jì)無(wú)需耗用額外邏輯資源即可提供此項(xiàng)功能。



調(diào)試

軟件開(kāi)發(fā)的一條公理就是應(yīng)用編譯不等同于應(yīng)用正確。只有在應(yīng)用在目標(biāo)硬件上開(kāi)始運(yùn)行之后,編程人員才能開(kāi)始發(fā)現(xiàn)、追蹤和糾正應(yīng)用中的錯(cuò)誤,換句話說(shuō)進(jìn)行調(diào)試。

CPU 應(yīng)用的調(diào)試是一個(gè)容易理解的問(wèn)題,商業(yè)廠商和開(kāi)源社區(qū)提供有大量工具來(lái)解決這個(gè)問(wèn)題。FPGA 再度成為另類(lèi)。應(yīng)用編程人員如何才能調(diào)試好創(chuàng)建用于實(shí)現(xiàn)一段代碼的功能的軟件,使之實(shí)現(xiàn)既定性能目標(biāo)呢?

SDAccel 開(kāi)發(fā)環(huán)境借鑒了 CPU 環(huán)境的兩個(gè)概念——printf 和 GDB 調(diào)試——來(lái)解決這個(gè)問(wèn)題。

printf 功能是軟件編程人員工具箱中的基本工具。每一種編程語(yǔ)言都會(huì)提供 printf 功能,用于顯示程序執(zhí)行過(guò)程中主要應(yīng)用變量的狀態(tài)。對(duì) CPU 器件而言,這就同監(jiān)測(cè)寄存器狀態(tài)一樣簡(jiǎn)單。printf 功能不占用硬件資源。

就 FPGA 的情況來(lái)說(shuō),實(shí)現(xiàn) printf 可能會(huì)消耗本可用于實(shí)現(xiàn)邏輯功能的邏輯資源。在 SDAccel 環(huán)境中實(shí)現(xiàn) printf 無(wú)需消耗額外的邏輯資源即可提供此項(xiàng)功能。該環(huán)境是通過(guò)將 printf 數(shù)據(jù)生成獨(dú)立于解碼和用戶表示層來(lái)實(shí)現(xiàn)的。就硬件資源而言,為 printf 生成數(shù)據(jù)會(huì)占用幾個(gè)寄存器,在寄存器豐富的 FPGA 架構(gòu)中這完全可以忽略不計(jì)。數(shù)據(jù)解碼在針對(duì) FPGA 的驅(qū)動(dòng)程序中完成。通過(guò)讓主機(jī) CPU 執(zhí)行 printf 的數(shù)據(jù)解碼和表示層,軟件編程人員可以在基本不占用 FPGA 資源的情況下使用 printf。

從 CPU 借鑒的第二個(gè)調(diào)試技巧是使用 GNU 項(xiàng)目調(diào)試器 (GDB) 等工具,在代碼中各處插入斷點(diǎn)和單步執(zhí)行。編程人員可以使用 SDAccel 環(huán)境的仿真模式,將 GDB 連接到正在運(yùn)行的仿真流程。該仿真流程是對(duì)開(kāi)發(fā)人員準(zhǔn)備在 FPGA 器件上執(zhí)行的專(zhuān)用硬件的仿真。在仿真流程環(huán)境下,GDB 能夠觀察各種變量的狀態(tài),在代碼各處插入斷點(diǎn)和單步執(zhí)行。從應(yīng)用編程人員的角度,這與 GDB 在 CPU 上工作的方式完全相同。



優(yōu)化

完成編譯和調(diào)試后,軟件開(kāi)發(fā)周期的下一步是優(yōu)化應(yīng)用。在 FPGA 上進(jìn)行應(yīng)用優(yōu)化的原理與在 CPU 上優(yōu)化應(yīng)用一致。唯一差別在于方法不同。對(duì) CPU 來(lái)說(shuō),需要細(xì)調(diào)應(yīng)用代碼,使之適應(yīng)處理器的高速緩存和算術(shù)單元的邊界。在 FPGA 中,計(jì)算邏輯是為當(dāng)前應(yīng)用定制匯編的。因此決定優(yōu)化約束的是 FPGA 的大小和應(yīng)用的目標(biāo)性能。

使用 SDAccel 的軟件編程人員可以借助邏輯架構(gòu)的靈活性,不必了解有關(guān)硬件設(shè)計(jì)的細(xì)節(jié),即可構(gòu)建高性能、低功耗應(yīng)用。

SDAccel 環(huán)境的編譯器能自動(dòng)優(yōu)化計(jì)算邏輯。編程人員可通過(guò)對(duì)從代碼調(diào)用的數(shù)據(jù)傳輸模式的分析來(lái)協(xié)助自動(dòng)優(yōu)化工作。圖 3 所示的是輸入和輸出過(guò)程中發(fā)生的中值濾波器代碼與存儲(chǔ)器之間的讀寫(xiě)事務(wù)處理。

圖中的每條垂直線代表一個(gè)到存儲(chǔ)器的事務(wù)處理。綠條所示的是中值濾波器函數(shù)的活動(dòng)時(shí)間。從圖中可以看出,雖然中值濾波器一直處于活動(dòng)狀態(tài),存儲(chǔ)器事務(wù)處理之間存在明顯的間隔。這些間隔代表的是中值濾波器從一個(gè)事務(wù)處理切換到下一個(gè)事務(wù)處理所使用的時(shí)間。由于每項(xiàng)對(duì)存儲(chǔ)器的事務(wù)處理只訪問(wèn)一個(gè)值,事務(wù)處理之間的間隔說(shuō)明該應(yīng)用存在嚴(yán)重的性能瓶頸。

賽靈思的 SDAccel 開(kāi)發(fā)環(huán)境為 FPGA 提供軟件應(yīng)用設(shè)計(jì)流程

解決該性能問(wèn)題的途徑之一是在應(yīng)用代碼中明示地聲明從外部存儲(chǔ)器到本地存儲(chǔ)器的突發(fā)事務(wù)處理。圖 4 所示的代碼片段使用了 OpenCL C 語(yǔ)言內(nèi)核采用的 async_work_group_copy 函數(shù)。這項(xiàng)功能的目的是通知編譯器每項(xiàng)對(duì)存儲(chǔ)器的事務(wù)處理都是一個(gè)包含多重值的突發(fā)事件。這樣能夠更高效率地利用目標(biāo)器件上的可用存儲(chǔ)器帶寬,并減少對(duì)存儲(chǔ)器的事務(wù)處理總數(shù)。在圖 4 的代碼中,async_work_group_copy 函數(shù)把 DDR 存儲(chǔ)器中輸入圖像的全部行內(nèi)容提交給內(nèi)核數(shù)據(jù)路徑內(nèi)的存儲(chǔ)器。圖 5 中的存儲(chǔ)器事務(wù)處理跡線體現(xiàn)了使用 async_work_group_copy 的結(jié)果。如圖 5 所示,在存儲(chǔ)器事務(wù)處理發(fā)生之前內(nèi)核有一個(gè)建立時(shí)間,但這并沒(méi)有體現(xiàn)在中值濾波器的原始代碼中(圖 2)。

賽靈思的 SDAccel 開(kāi)發(fā)環(huán)境為 FPGA 提供軟件應(yīng)用設(shè)計(jì)流程

這部分建立時(shí)間差異用于處理從代碼中衍生出的邏輯。在圖 2 的原始代碼中,應(yīng)用立即啟動(dòng)對(duì)存儲(chǔ)器的單次事務(wù)處理,然后等待數(shù)據(jù)可用。與此相反,圖 4 中的優(yōu)化代碼能判斷是否需要進(jìn)行存儲(chǔ)器事務(wù)處理或是否內(nèi)核的本地存儲(chǔ)器中的數(shù)據(jù)已經(jīng)可用。它還能讓生成的邏輯背對(duì)背地調(diào)度存儲(chǔ)器事務(wù)處理和覆蓋讀寫(xiě)事務(wù)處理。

不管最終器件是 CPU 還是 FPGA,特性分析都是應(yīng)用開(kāi)發(fā)過(guò)程中的主要組成部分。SDAccel 環(huán)境的可視化和分析器功能能讓?xiě)?yīng)用編程人員從內(nèi)核占用、存儲(chǔ)器事務(wù)處理和存儲(chǔ)器帶寬利用率等方面對(duì)代碼修改和應(yīng)用要求進(jìn)行特征描述。

由編譯、調(diào)試和優(yōu)化操作建立的設(shè)計(jì)環(huán)路是軟件開(kāi)發(fā)流程的基礎(chǔ)。SDAccel 開(kāi)發(fā)環(huán)境使用類(lèi)似于 CPU 開(kāi)發(fā)環(huán)境的工具和技巧來(lái)實(shí)現(xiàn)這一設(shè)計(jì)環(huán)路,同時(shí)基于 FPGA 的應(yīng)用加速可將性能功耗比提升 25 倍,時(shí)延則縮短 50 至 75 倍。使用 SDAccel,軟件編程人員無(wú)需了解有關(guān)硬件設(shè)計(jì)的所有細(xì)節(jié),就能夠充分發(fā)揮 FPGA 邏輯架構(gòu)的靈活性,從而開(kāi)發(fā)出高性能、低功耗應(yīng)用。

賽靈思的 SDAccel 開(kāi)發(fā)環(huán)境為 FPGA 提供軟件應(yīng)用設(shè)計(jì)流程

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(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)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1626

    文章

    21667

    瀏覽量

    601846
  • 可編程邏輯
    +關(guān)注

    關(guān)注

    7

    文章

    514

    瀏覽量

    44072
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    玩轉(zhuǎn)FPGA,FPGA設(shè)計(jì)大賽開(kāi)賽啦

    經(jīng)歷過(guò)和牛人一起進(jìn)行FPGA設(shè)計(jì)比賽的激烈競(jìng)爭(zhēng)嗎?你感受過(guò)FPGA原廠開(kāi)發(fā)板和fpga行業(yè)泰斗直接帶來(lái)的強(qiáng)烈震撼嗎? 沒(méi)經(jīng)歷過(guò)沒(méi)關(guān)系,電子發(fā)燒友網(wǎng)主辦,
    發(fā)表于 04-23 09:31

    提交FPGA設(shè)計(jì)方案,贏取FPGA開(kāi)發(fā)

    “玩轉(zhuǎn)FPGA:iPad2,開(kāi)發(fā)板等你拿”活動(dòng)持續(xù)火爆進(jìn)行中……………………活動(dòng)得到了廣大電子工程師積極強(qiáng)烈的支持,為了回報(bào)電子工程師
    發(fā)表于 07-06 17:24

    開(kāi)發(fā)環(huán)境ISE軟件下載地址

    剛開(kāi)始學(xué)FPGA,求他的ISE軟件下載地址,我在網(wǎng)上沒(méi)搜到。謝謝了
    發(fā)表于 08-02 09:52

    玩轉(zhuǎn)FPGA (xilinx)FPGA設(shè)計(jì)大賽獲獎(jiǎng)名單!??!

    專(zhuān)家進(jìn)行探討交流的機(jī)會(huì),提高對(duì)技術(shù)知識(shí)的應(yīng)用和產(chǎn)品商業(yè)化的認(rèn)知;廣大電子愛(ài)好者深入了解產(chǎn)品的機(jī)會(huì),利用
    發(fā)表于 09-06 11:54

    :“玩轉(zhuǎn)FPGA (xilinx)FPGA設(shè)計(jì)大賽”獲獎(jiǎng)獎(jiǎng)品展示

    板及小禮品展示#e#  接下來(lái)大家展示的是(xilinx)公司大家提供的獎(jiǎng)品,分別是:
    發(fā)表于 09-06 14:33

    FPGA是用altera多還是的多呢

    FPGA是用altera多還是的多呢,我買(mǎi)的開(kāi)發(fā)板是altera的,但是很多人推薦說(shuō)學(xué)習(xí)
    發(fā)表于 01-09 21:27

    ISE? 設(shè)計(jì)套件11.1版對(duì)FPGA有什么優(yōu)化作用?

    每一版本都提供了完整的FPGA設(shè)計(jì)流程,并且專(zhuān)門(mén)針對(duì)特定的用戶群體(工程師)和特定領(lǐng)域的設(shè)計(jì)方法及設(shè)計(jì)環(huán)境要求進(jìn)行了優(yōu)化。那大家知道
    發(fā)表于 07-30 06:52

    什么是豐富目標(biāo)設(shè)計(jì)平臺(tái)?

    今年年初,率先在FPGA領(lǐng)域提出目標(biāo)設(shè)計(jì)平臺(tái)概念,旨在通過(guò)選用開(kāi)放的標(biāo)準(zhǔn)、通用的開(kāi)發(fā)流程
    發(fā)表于 08-13 07:27

    FPGA終端芯片研發(fā)提供有利的工具

    TD技術(shù)論壇秘書(shū)長(zhǎng)時(shí)光:FPGA技術(shù)終端芯片的研發(fā)提供了非常有利的工具,這是時(shí)光在在
    發(fā)表于 12-23 15:20 ?830次閱讀

    Xilinx與IBM通過(guò)SuperVesselOpenPOWER開(kāi)發(fā)云平臺(tái)實(shí)現(xiàn)FPGA加速

    提供支持。SDAccel允許開(kāi)發(fā)人員用 OpenCL?、C和C++語(yǔ)言描述他們的算法,并直接編譯到
    發(fā)表于 02-08 16:06 ?334次閱讀

    Xilinx SDAccel 開(kāi)發(fā)環(huán)境榮獲 2015 EE Times 和 EDN ACE 大獎(jiǎng)

    公司(Xilinx, Inc. (NASDAQ:XLNX))宣布其 SDAccel 開(kāi)發(fā)環(huán)境在最終產(chǎn)品評(píng)比中(
    發(fā)表于 02-09 02:31 ?320次閱讀

    FPGA設(shè)計(jì)流程看懂FPGA設(shè)計(jì)

    不斷 從FPGA設(shè)計(jì)流程看懂FPGA設(shè)計(jì) 1.XILINX ISE傳統(tǒng)
    發(fā)表于 02-20 20:32 ?1.6w次閱讀
    從<b class='flag-5'>賽</b><b class='flag-5'>靈</b><b class='flag-5'>思</b><b class='flag-5'>FPGA</b>設(shè)計(jì)<b class='flag-5'>流程</b>看懂<b class='flag-5'>FPGA</b>設(shè)計(jì)

    針對(duì)OpenCL、C和 C++的SDAccel開(kāi)發(fā)環(huán)境可利用FPGA實(shí)現(xiàn)數(shù)據(jù)中心應(yīng)用加速

    公司(Xilinx)推出針對(duì) OpenCL、C 和 C++的S DAccel 開(kāi)發(fā)環(huán)境,將單位功耗性能提高達(dá)25倍,從而利用
    發(fā)表于 08-30 17:00 ?1180次閱讀

    公司宣布其軟件定義開(kāi)發(fā)環(huán)境SDAccel已上線亞馬遜AWS

    隨著面向 Amazon EC2 F1 實(shí)例的 SDAccel 開(kāi)發(fā)環(huán)境的部署,讓不太熟悉 FPGA軟件開(kāi)發(fā)人員現(xiàn)在也能夠?qū)⒐ぷ髫?fù)載的性能
    的頭像 發(fā)表于 07-29 11:49 ?2104次閱讀

    Nimbix宣布采用SDAccel開(kāi)發(fā)環(huán)境

    該新型解決方案將大幅降低高性能高能效 FPGA 的使用門(mén)檻,有助于加速各產(chǎn)業(yè)的高端計(jì)算工作流程開(kāi)發(fā)人員現(xiàn)在能在云端運(yùn)行這些工具,然后在最新
    的頭像 發(fā)表于 07-29 17:47 ?2182次閱讀