目前處于AI大爆發(fā)時期,異構(gòu)計算的選擇主要在FPGA和GPU之間。盡管目前異構(gòu)計算使用最多的是利用GPU來加速,FPGA作為一種高性能、低功耗的可編程芯片,在處理海量數(shù)據(jù)時,FPGA計算效率更高,優(yōu)勢更為突出,尤其在大量服務(wù)器部署時,隱形的運營成本會得到顯著降低。本文來自CTAccel的研發(fā)總監(jiān)周小鵬在LiveVideoStackCon2019 北京站上的分享。
文 / 周小鵬整理 / LiveVideoStack
大家好,我是來自CTAccel的研發(fā)負責人周小鵬,我分享的題目是《基于FPGA的異構(gòu)計算在多媒體中的應(yīng)用》。FPGA從1984年被發(fā)明到現(xiàn)在已經(jīng)35年了,現(xiàn)在的FPGA有足夠的規(guī)模去做大規(guī)模計算。我們團隊主要是研究它能否解決多媒體領(lǐng)域中的現(xiàn)有問題。
1. 團隊介紹
聯(lián)捷計算科技成立于2016年,英文名CTAccel。實際上我們團隊從2014年就開始研究這項技術(shù)了,主要致力于以FPGA為載體的數(shù)據(jù)中心的異構(gòu)計算,讓它能幫助我們解決一些實際的問題。
2. 主題
今天分享的主題包括兩點,一個是基于FPGA的異構(gòu)計算的一般性問題,另一個就是我們團隊(CTAccel)基于FPGA的異構(gòu)計算方案。
2.1 基于FPGA的異構(gòu)計算的一般性問題
對于FPGA在異構(gòu)計算的一般性問題,結(jié)合我們的認識,從以下五個方面來說。
2.1.1 當前處理的困境
上圖左邊描述的是2016年AMD發(fā)布的一個報告。Intel宣布停止CPU的Tick-Tock發(fā)展模式,Moore定律的失效意味著CPU性能的提升慢于之前18個月為一周期的速度。但是數(shù)據(jù)計算需求增長卻越來越快,對計算的需求越來越多。這些需求包括多媒體轉(zhuǎn)碼,搜索計算,加解密以及矩陣的計算。由于計算需求越來越大,就需要新的底層硬件來支持大規(guī)模計算。
上圖描述的是網(wǎng)絡(luò)和存儲本身的技術(shù)發(fā)展,數(shù)據(jù)中心內(nèi)部網(wǎng)絡(luò)速度越來越快,從最早的1Gbps到現(xiàn)在100Gbps;存儲速度也從機械硬盤的0.7MB/s加快到固態(tài)驅(qū)動器的1GB。但是CPU處理IO的速度沒有那么快,例如AES256加密和SHA-1簽名,如果是使用單核CPU處理,處理能力只有100MB/s,與存儲速度之間存在很大的差距。從網(wǎng)絡(luò)的角度來講,如今處理網(wǎng)路協(xié)議所需要的CPU核數(shù)也是很大的,CPU處理速度是不能匹配網(wǎng)絡(luò)處理速度的。如果從硬件方面解決此問題,FPGA可以提供一些幫助。
2.1.2 FPGA及其歷史
傳統(tǒng)的FPGA概念,就像圖中所示。實際是把電路板上一些小的門電路,安裝在芯片上通過改變連線來改變它的功能,叫做現(xiàn)場可編程門列陣。它其實是一個半定制化專用集成電路,里面已經(jīng)有一些基本門電路,也會有一些觸發(fā)器,以及互聯(lián)資源。通過改變這些互連資源對門電路、觸發(fā)器的連接方式來改變功能,這樣就可能實現(xiàn)例如數(shù)字濾波器、矩陣變換等基本功能。現(xiàn)在的FPGA相較之前已經(jīng)發(fā)生了巨大的改變。之前只有門電路、觸發(fā)器,互連資源,但是現(xiàn)在里面已經(jīng)包含了比較高層一點的功能模塊,例如增加dsp、bram,甚至包括ddr控制器、pcie控制器、serdes、光口,以及arm、powerpc、gpu等系統(tǒng)級的單元。
在30多年的時間里,FPGA大致有四個發(fā)展階段,從1984年賽靈思發(fā)明FPGA到1991年這段時間的主要發(fā)展體現(xiàn)是芯片晶體管數(shù)目的逐漸增多,主要解決的問題是如何擴大電路的規(guī)模。從1992年到1999年是FPGA的擴張階段,這一階段依然在探求擴大電路規(guī)模的方法。由于當時芯片規(guī)模依然較小,為實現(xiàn)復(fù)雜功能,這一階段解決的另一個問題就是通過軟件進行芯片間的功能分治。第三階段是從2000年到2007年,當時FPGA的規(guī)模已經(jīng)相對較大,這一階段主要解決的是數(shù)字信號處理方面的問題,比如軟件對互連資源的布局布線,如何充分利用晶體管等問題。從2008年開始進入到FPGA的轉(zhuǎn)型階段,這一階段不僅包含可編程邏輯,還包括Ethernet MAC和PCI Express以及一些高速接口、微處理器,甚至包括GPU、浮點計算器單元。FPGA在朝著系統(tǒng)化方向發(fā)展,規(guī)模越來越大,為計算機提供最底層的技術(shù)基礎(chǔ)。在不斷發(fā)展的過程中,FPGA的功耗越來越小,容量越來越大,速度也越來越快,這也是它現(xiàn)在可以用于數(shù)據(jù)中心的技術(shù)基礎(chǔ)。
2.1.3 基于FPGA的異構(gòu)計算的特點
CPU、GPU都基本采用馮諾依曼架構(gòu),它的組成部件包括指令存儲、數(shù)據(jù)存儲、譯碼邏輯、算數(shù)邏輯單元以及共享內(nèi)存。它的工作原理是將取得的指令和數(shù)據(jù)進行指令譯碼,然后執(zhí)行返回結(jié)果。
CPU、GPU都是典型的單指令多數(shù)據(jù)的模型。CPU中ALU數(shù)量有限,可以支持復(fù)雜的控制邏輯,對應(yīng)的緩存容量也較大。在GPU中,算術(shù)邏輯單元較多,但是可完成的控制種類較少,相應(yīng)緩存容量也有限。兩者解決的問題不同,但他們的最小執(zhí)行單元都是指令。編程的本質(zhì)就是將算法和業(yè)務(wù)邏輯拆解為順序執(zhí)行的指令的過程。
對于FPGA來講,它是自由指令架構(gòu),本身只提供部件池。組成部件包括CLB(可編程邏輯單元)、BRAM、DSP單元、PCIE控制器、時鐘單元、高速收發(fā)器等。可以通過設(shè)計,利用這些部件實現(xiàn)不同功能。工作流程也可根據(jù)應(yīng)用定制。從計算的角度來講,它可以支持單操作多數(shù)據(jù),因為它不需要譯碼,故也不存在指令的概念。同時它也支持單數(shù)據(jù)多操作,可對同一數(shù)據(jù)多次操作。FPGA的最小執(zhí)行單位是寄存器和算術(shù)邏輯單元,FPGA編程的本質(zhì)是將算法和業(yè)務(wù)邏輯映射到FPGA基本部件,這與CPU也是不同的。
基于FPGA的計算過程,相比于CPU/GPU的優(yōu)點:
1)延時低穩(wěn)定性強
FPGA可定制單操作多數(shù)據(jù)、單數(shù)據(jù)多操作以及混合模型,可形成更細粒度的操作、流水和并行。并且由于數(shù)據(jù)流動路徑固定,處理延遲也是固定的。因此,它會有低延時強穩(wěn)定的優(yōu)點。
2)功耗低
晶體管全部用于算法和業(yè)務(wù)處理,冗余少,利用率更高。
3)并發(fā)度高
對于FPGA,芯片資源是足夠控制并行和順序執(zhí)行之間平衡的。在FPGA的應(yīng)用單元和CPU、GPU有效率利用核數(shù)相當時,由于延時更低,所以FPGA并發(fā)度更高。
4)IO資源豐富
FPGA有高速接口,甚至包括光口、以太網(wǎng)接口,可以支撐靠近接口的計算。
下面將以最基本的編解碼原理來說明FPGA適合圖像編碼的原因。上圖描述了視頻編碼的過程。首先將視頻劃分為不同編碼單元,然后對每個單元進行編碼,先經(jīng)過變換然后進行量化,之后進行反量化反變化,得到重構(gòu)的數(shù)據(jù)再和原數(shù)據(jù)進行預(yù)測編碼,對量化的殘差數(shù)據(jù)進行熵編碼。功能單元的劃分和每個單元的處理是串行的過程;而處理過程的預(yù)測、變換、量化都是矩陣乘的過程,又是并行過程;熵編碼也是串行的。整體過程是串行并行相結(jié)合的,CPU、GPU難以支撐這個過程,FPGA中可由不同電路完成。
從實測數(shù)據(jù)來看,上圖柱狀圖展示了JPEG圖壓縮到一定大小時,FPGA和GPU方式下QPS值的大小。可以看出,無論在何種情況下,FPGA相對來說是有一定優(yōu)勢的。這種優(yōu)勢來源于它的底層技術(shù)架構(gòu)。
2.1.4 FPGA異構(gòu)計算的系統(tǒng)級問題
FPGA可以帶來一定優(yōu)勢,但仍然存在許多需要解決的問題。在單個功能上,它有很大的優(yōu)勢,但是從系統(tǒng)應(yīng)用來看,這種優(yōu)勢會大打折扣,因為它有很多系統(tǒng)限制條件。
算法和業(yè)務(wù)邏輯在FPGA映射上還需進行優(yōu)化以充分利用深度流水線與并行。
加速卡上的資源配比仍存在問題,做圖像視頻編解碼常需要使用外部緩存,而緩存的容量、帶寬等是需要與之匹配的,數(shù)據(jù)傳輸?shù)难舆t也會對性能產(chǎn)生影響。同時部分算法需要使用非常大容量的片內(nèi)塊緩存。
FPGA在系統(tǒng)級別的資源配比,Host調(diào)度上也會存在一定的效率問題。我們?nèi)绾卧谟脩魺o感知的情況下,對系統(tǒng)狀態(tài)進行監(jiān)控,這是我們在軟件側(cè)要解決的問題。為適應(yīng)部署需求,還需要解決虛擬機支持和docker部署方面的問題。
從產(chǎn)品側(cè)來講,系統(tǒng)在FPGA異構(gòu)卡、網(wǎng)卡、ssd與其他異構(gòu)平臺之間能否P2P傳遞數(shù)據(jù),讓系統(tǒng)更有效也是需要考慮的。FPGA與Host之間能否有效傳遞數(shù)據(jù)也是我們研究的一部分,并且也嘗試了不同的技術(shù)。
2.1.5 FPGA異構(gòu)計算的開發(fā)流程和方法學(xué)
上圖展示了異構(gòu)系統(tǒng)開發(fā)的流程。左圖展現(xiàn)了傳統(tǒng)FPGA的開發(fā)流程,可以看出和芯片的開發(fā)流程是相像的,由于是硬件開發(fā),所以需要代碼轉(zhuǎn)換的過程,還需要分析電路是否滿足要求,要做仿真、測試、優(yōu)化,最后才能得到滿足要求的設(shè)計進行板級測試。為了滿足數(shù)據(jù)中心的快速落地的需求,FPGA需要用到更高層的工具和編程語言。
除了工具、開發(fā)流程,平臺也是一個方面。在我們的開發(fā)中,有固定的hdk和sdk,會提供對應(yīng)的接口操作基本驅(qū)動、hdk里的監(jiān)控接口。真正的設(shè)計在于功能的設(shè)計。
從產(chǎn)品的角度講,我們主要考慮數(shù)據(jù)可用、接口可用、系統(tǒng)穩(wěn)定易用、遷移成本低、性能這五個維度。應(yīng)用要能提供足夠多的接口對接原有的軟件生態(tài)。系統(tǒng)穩(wěn)定是最基本的,能否一鍵升級、一鍵部署也是需要考慮的。另外遷移成本包括修改接口對用戶流程的影響,端對端整體分析才能確定系統(tǒng)性能的提升量。從性能指標來看,,除了吞吐,還有延時、任務(wù)工作時長、CPU利用率等。當單卡無法實現(xiàn)功能時,多張卡之間的調(diào)度、功能切分,以及使用多卡時性能是否能線性增長都是需要考量的。
2.2 CTAccel基于FPGA的異構(gòu)計算方案
接下來,我講一下針對以上談到的一般問題,我們團隊所做的方案。雖然是具體應(yīng)用,但是它不會違背我們之前分析的問題。具體從目前主要產(chǎn)品及產(chǎn)品形態(tài)、多媒體圖像的處理,和視頻視頻以及目前已落地應(yīng)用的情況四個方面分享。
2.2.1 CTAccel主要產(chǎn)品和產(chǎn)品形態(tài)
目前,CTAccel主要有兩款產(chǎn)品。一個用于圖像處理,一個用于視頻。產(chǎn)品設(shè)計的主要目的是為了提升計算性能,提高用戶體驗。節(jié)省客戶投資也是我們產(chǎn)品的優(yōu)點之一。
我們的產(chǎn)品有兩種形態(tài),一種是基于硬件卡形態(tài)的。這種主要集中于私有部署,用于客戶有自己的數(shù)據(jù)中心或者自己的服務(wù)器的情況。客戶可以自行購買硬件卡插入服務(wù)器,將我們的軟件安裝在卡上就可以使用我們的產(chǎn)品。另一種是基于公有云的。我們的產(chǎn)品可以支持不同的云平臺。
2.2.2 CTAccel的圖像處理方案
圖像處理主要有三個功能,分別是解碼器,像素處理,編碼器。像素處理上,我們主要做縮放、旋轉(zhuǎn)、裁剪、水印、去噪等處理。功能可以串行調(diào)用,也可以順序調(diào)用。編碼器目前可支持JPEG,Webp,HEIC。這些都是有損壓縮,相互之間可以通過編解碼互轉(zhuǎn)。除最基本的以外,JPEG目前還可以實現(xiàn)漸進式轉(zhuǎn)碼。Lepton是專門用于無損壓縮的,它可對JPEG格式的圖片再一次壓縮,達到更好的壓縮效果,主要用于存儲。軟件棧可以支持OpenCV、ImageMagick、GraphicsMagick、Lepton以及ffmpeg,我們目前還在設(shè)計支持restful web API的軟件。我們也做了一個圖片處理服務(wù)的設(shè)計供大家參考。最右側(cè)的圖展現(xiàn)了我們產(chǎn)品的分布,包括AFU和Service&Driver以及OpenCV等接口。客戶可以直接調(diào)用外面的接口,如果需要WEB接口的話,我們也可以再封裝一層。
我們做了很多的功能,也聚焦了幾個主要應(yīng)用領(lǐng)域。其中一個是AI預(yù)處理。在GPU處理器前,需要對圖像進行解碼,壓縮到規(guī)定尺寸,還有一些歸一化處理。針對這個問題,我們希望能對圖像進行流量清洗處理,直接得到可以被GPU處理的圖片。圖像轉(zhuǎn)碼的應(yīng)用,即各種格式圖像進行互轉(zhuǎn)。圖像存儲主要用Lepton格式。
這張圖展現(xiàn)了我們產(chǎn)品優(yōu)點體現(xiàn)在哪里。通過計算加速,整個鏈路延時會縮短。對于計算資源消耗大的問題,通過優(yōu)化可以增大系統(tǒng)的吞吐量。可以看出,存儲上的優(yōu)點是明顯的,資源壓縮到越小,越節(jié)省空間。
通過使用FPGA卡預(yù)處理,可以更好的與GPU匹配,更好的發(fā)揮GPU性能。下面是一些具體的案例及其性能。
無損存儲的性能
2.2.3 CTAccel的視頻處理方案
視頻處理方案包括H264,H265的編解碼處理以及一些像素處理。軟件支持ffmpeg和gstreamer。
2.2.4 落地應(yīng)用 1)手機落地應(yīng)用
2)O2O平臺落地應(yīng)用
3)社交網(wǎng)站落地應(yīng)用
4)直播平臺落地應(yīng)用(測試中)
賽靈思視頻加速技術(shù)研討會
假如您想了解更多關(guān)于FPGA的硬件加速特性,以及在視頻、圖片編碼與轉(zhuǎn)碼以及AI計算方面的技術(shù)探索與實踐。12月13日·深圳,LiveVideoStack聯(lián)合賽靈思,邀請CTAccel、Aupera、DeePoly等4位技術(shù)專家共同打造【賽靈思視頻加速技術(shù)】 專題,您可以近距離與眾多專家深入探討,還能現(xiàn)場體驗產(chǎn)品Demo
點擊【閱讀原文】 進入報名頁面
總結(jié)
以上是生活随笔 為你收集整理的基于FPGA的异构计算在多媒体中的应用 的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔 推薦給好友。