基於FPGA異構計算快速構建高性能圖像處理解決方案

FPGA與CPU相比進一步強化了算力,尤爲適合各種並行化計算;而與GPU相比,其更細粒度及靈活的並行化及流水線控制自然的對複雜算法有更強的適應性,可以充分發揮出算力優點,從而帶來計算效率的提高。針對數據中心算力不斷加強,算法不斷細分、複雜化的大背景下,FPGA具備更好的發展前景。

文/樊平算法

整理/LiveVideoStack編程

你們好,我是深維科技創始人/CEO 樊平,很是高興有這個機會跟你們分享和交流一下,如何基於FPGA來構造高性能的圖像處理解決方案。服務器

1.解決方案提出的背景 網絡

基於FPGA異構計算快速構建高性能圖像處理解決方案

隨着需求的快速增加,目前數據中心須要處理的圖像愈來愈多,處理內容包括圖像轉碼,像素級的操做、縮略圖處理以及各類圖像的智能分析,這些處理需求帶給數據中心的負擔日益加劇。架構

2. FPGA圖像處理加速的潛力框架

2.1 深維科技在圖像方案上的性能數據 ide

基於FPGA異構計算快速構建高性能圖像處理解決方案

上圖是深維科技目前在圖像方案上已經作到的性能數據,第一是圖像的吞吐(每秒能夠處理圖片的數量),目前CPU是根據E5的2650雙U服務器的性能去比較,加一張FPGA優良版的加速卡就能夠作到20倍的吞吐。在業務流程裏對延時相對都很敏感,深維能夠在提高吞吐的同時下降延遲達5倍,數據中心的成本由於服務器成本和全部功耗成本的下降,使得總體的TCO的下降能夠達到5倍以上,也就是下降到原來的20%如下。同時能夠改善功耗,提升10倍能效比。這些性能都是經過深維科技一款名叫ThunderImage的產品爲你們提供的。 工具

2.2 ThunderImage介紹佈局

基於FPGA異構計算快速構建高性能圖像處理解決方案

除了剛纔提到的性能,深維科技對豐富的圖片的格式進行了支持,例如JPEG圖片編解碼的處理。隨着目前高清圖片內容愈來愈多,你們須要對圖片的尺寸/壓縮率作進一步提高,這其中比較流行的一種格式是Google從VP8編碼提取出來的一套標準WebP。深維科技目前很好支持了WebP的M4和M6兩種模式,另外深維科技也支持其餘圖片格式和一些圖片的縮放算法,像Lanczos這類比較複雜的濾波算法均可以支持。性能

用戶在數據中心進行方案集成過程當中,傳統數據中心的設計環境是軟件,把FPGA導入到數據中心以後,對方案的可用性有很是高的要求。深維科技把整個方案作了很好的封裝,以ImageMagick和OpenCV標準開源框架爲接口進行替換,用戶只須要改動幾行代碼以後就能夠對接口完成替換。這樣的使用模式徹底相似於軟件的形態,而且能夠作到無縫兼容,包括一些像VIPS這類型的新框架深維科技都在逐步支持。

在業務部署的過程中,深維科技從客戶獲得不少關於細節的反饋,其中一個常見的問題是圖片在業務流程裏部署時,客戶發現硬件的編解碼每每和參考軟件的結果存在不一致的現象,這是因爲硬件作加速過程中,爲了適應加速的效果會對算法進行改動。

如今這款ThunderImage方案能夠作到硬件編解碼和參考軟件結果徹底一致的,每一個比特的結果和CPU的流程跑出來的結果均可以作到嚴格一致,對實際業務的評估部署阻力會下降不少。ThunderImage方案能夠作到每一個像素都同樣,所以知足了實際業務的場景需求。

深維科技的整個產品均可以部署在兩種平臺上,一種是雲平臺,例如AWS和華爲雲,其餘雲平臺也會陸續發佈出來。另外一種是線下部署,深維科技在線下的本地部署支持了Linux的不一樣版本,能夠比較方便匹配客戶不一樣的生產環境配置,服務器也能夠支持英特爾和AMD兩款CPU的型號。目前硬件平臺能夠支持Alveo U200、Huawei FX300以及一些早期的型號,根據客戶的場景能夠比較快地適配到相應的板卡。

3.常見的業務場景

基於FPGA異構計算快速構建高性能圖像處理解決方案

涉及圖片部分的產品有幾個典型的應用場景,第一是縮略圖的場景,整個流程包括圖片的上傳、JPEG解碼、縮放、JPEG編碼和推送客戶端,很好的適配了如下幾種典型場景:第一是手機的雲相冊,客戶上傳大量的圖片到雲端,在不一樣的終端上瀏覽上傳的圖片,在瀏覽時不須要把原圖轉成各類尺寸的圖像推送到客戶端,只須要在線算出不一樣的尺寸推送到客戶端,在電商平臺和社交網絡上都大量涉及到這樣的應用場景。

第二個場景是WebP轉碼,把JPEG格式轉成WebP格式,達到節省30%以上的帶寬或者存儲的目標。另外深維也支持配合相似AI Inference的任務,在AI Inference Engine上輸入圖像尺寸大部分都是小圖,小圖一般是CPU端去配合生成(預處理),在Inference以後還要有一些存檔和編碼的需求。目前方案很好地適配了預處理和後處理的場景,能夠實現整個AI Inference的全流程加速。

4.生產環境集成

4.1 與OBS進行集成

基於FPGA異構計算快速構建高性能圖像處理解決方案

關於如何與生產環境集成,深維科技與OBS有一個比較完整的方案,首先上圖是一個典型的場景,須要有大量的JPEG圖像上傳到OBS,上傳完以後的OBS包含了大量用戶圖片。第二個階段是用戶會從安卓、蘋果、Windows等不一樣的終端去發起一個訪問,這個訪問會發向CDN,因爲大部分狀況下本地各類終端之間存在差別,訪問的命中率會比較低,CDN會檢查並返回給OBS進一步請求圖片。請求以後OBS會調用ThunderImage以最高的性能反饋給OBS相應尺寸的圖片,最後推送到客戶端,與OBS這種常見生長環境集成的模式仍是比較清晰的。

4.2 核心性能指標分析

基於FPGA異構計算快速構建高性能圖像處理解決方案

如圖是性能指標的分析,第一個是QPS(每秒能夠處理圖片的張數),這個核心指標是在1K圖片縮放到240×180的時候能夠達到4900張的峯值,4900是目前深維科技在同類產品裏所能看到的最好效果。另外一個數字是吞吐(每秒按照能處理輸入圖像流量的大小),吞吐能夠達到1.8GB,相應此時CPU的流量是136MB,大概有15倍左右的加速。另外在延遲方面,在4K轉640×480圖片尺寸的時候,ThunderImage能夠作到58毫秒,此時CPU延遲已經達到1303毫秒,之間存在20倍左右的差距。在FPGA進行加速時,也就是將FPGA插到一個服務器裏,服務器能夠在性能有20倍的提高的同時作到CPU的利用率只有4%,純CPU版本是100%,所以總體加速效果是一致的,ThunderImage在各方面都有接近20倍的性能提高,有些方面性能提高還要更高一些。

4.3 通用計算方案

基於FPGA異構計算快速構建高性能圖像處理解決方案

FPGA加速效果在圖片處理方案上是很是明顯的,在FPGA計算加速方向上已經有各種方案,包括GPU、CPU、FPGA和ASIC。方案的比較在總體上有兩個重要的約束:效率(追求性能)和靈活性。FPGA相對於GPU的底層有更細粒度的並行化和流水線的控制,可以作比特級、任意數據不對齊的操做,全部這些靈活性和底層更細粒度控制帶來了更好的計算效率,相對於總體就會帶來低延時、更高的能效和性能,因此深維很是看好FPGA將會成爲下一代數據中心很是重要的通用的計算加速載體。

FPGA相對ASIC有一個很明顯的好處,ASIC在整個設計生產環節須要18個到24個月流片週期,並且對量也有必定的要求。FPGA有這些好處的同時也存在編程比較困難的致命問題,所以FPGA的設計開發有着很大的挑戰,開發週期也會比較長。數據中心主要的用戶以軟件開發爲主,軟件開發目前追求敏捷和快速迭代,這種長週期的開發形態很是制約業務部署。

4.4 軟、硬件開發方法區別

基於FPGA異構計算快速構建高性能圖像處理解決方案

深維科技針對以上問題也提出瞭解決方案,如上圖所示,最左邊的是CPU的軟件開發流程:寫代碼、編譯,排除語法錯誤、運行,根據實際運行時的錯誤進行調試。

FPGA+CPU的開發流程傳統是基於硬件設計語言去作的,Verilog/VHDL設計流程涉及到的環節也須要寫代碼,對等一樣複雜度算法要增長10倍以上的代碼量,所以整個設計流程很是複雜。對比兩個系統開發流程就不難理解爲何基於硬件設計語言的FPGA開發過程每每須要半年到一年的週期,而不是軟件開發的週期只要數週到幾個月的時間。

賽靈思也注意到了設計流程的複雜度,因而在2012年收購了AutoESL公司,這家公司提供HLS高層次的設計方法,這個方法很好的支持了C和C++語言來編程FPGA,這種方式放到最右邊的框圖對流程進行相應的簡化,首先是系統層設計OpenCL,Kemel設計是使用是C和C++語言來寫代碼,但須要加一些標註。在軟件形式下去編譯仿真程序,排除語法錯誤、運行仿真程序,迭代屢次後完成。在仿真環境上調好之後才須要上板生成FPGA程序,編譯成FPGA最後作一次,而後再上板去調。這個流程顯然已經簡化不少,並且不須要頻繁在硬件層面去調試,大部分工做都是在軟件環節去作。

5. 深維科技的核心能力:快速開發,全棧優化

基於FPGA異構計算快速構建高性能圖像處理解決方案

不少客戶都已經試過了HLS這套開發方法,並對開發迅速這一特色有所體會,可是對於最後能不能達到預期的性能提高還存在一些問題。由於中間也通過不少年的嘗試和成熟收斂,HLS已經取得了比較好的效果,廣泛的認識是HLS與RTL相比,後者在細節優化上要更好一些。深維科技目前作了一些嘗試,以前提到可以作到20倍以上的性能加速,應該是超過了一些RTL的產品性能。

深維科技在實現性能加速的過程當中作了一些特殊的工做,關於OpenCL和HLS系統設計的範圍,首先在CPU有一個Opencl描述的調度,數據是經過主機的DDL和板上FPGA加速卡的DDL進行交換。FPGA有一些相應的kernel,kernel目前是用HLS和C++來描述的。這樣的任務有幾個須要解決的問題,第一個問題是如何作到快速開發,如上文所述,使用C++和HLS就能夠加快推出方案的速度。第二個問題是深維科技有面向行業的應用開發平臺,這樣能夠簡化面向圖像處理應用領域時有通用的開發平臺,能夠對不少相似的任務進行共享,例如調度、適配、框架這些事情。另外還有組件庫,深維科技把Codec和各類處理算法已經變成了一個標準的組件,能夠在平臺上對其進行很是方便的組合。

另外針對開發速度變快以後性能如何提高的問題,深維科技提出了全棧優化的技術。全棧優化是從算法層、架構層到底層的優化技術,這也是因爲HLS每每會遮蔽底層實現過程,當性能達不到要求時,深維科技把綜合佈局、佈線優化方面,在底層展開進行進一步優化,這主要依託於深維科技在EDA和FPGA芯片的設計經驗,爲了提高效率,深維科技也有相應的EDA的工具。綜上,咱們比較了一下總體研發的效果,在FPGA加速裏有三類設計方法,第一類是CPU軟件設計方法,它的特色是流程複雜度低,可是產品性能也低,項目週期很短。第二類是FPGA+CPU用傳統RTL的設計方法,它的特色是流程複雜度很是高,性能比較高,可是項目週期很是長。第三類是深維科技目前在實踐的方法FPGA+CPU(HLS+DPComp),這其中涉及到深維科技本身的工具和方法,設計方法的流程複雜度中等且內部可控。整個項目週期可以達到與軟件開發相似的週期(15周到數月),而且能夠達到很是高的產品性能。

活動推薦

假如您想了解更多關於FPGA的硬件加速特性,以及在視頻、圖片編碼與轉碼以及AI計算方面的技術探索與實踐。12月13日·深圳,LiveVideoStack聯合賽靈思,邀請CTAccel、Aupera、DeePoly等4位技術專家共同打造【賽靈思視頻加速技術】專題,您能夠近距離與衆多專家深刻探討,還能現場體驗產品Demo。點擊【閱讀原文】便可報名。

基於FPGA異構計算快速構建高性能圖像處理解決方案

相關文章
相關標籤/搜索