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