基于CAPI FPGA的醫(yī)學超聲成像算法異構(gòu)加速
摘要:在醫(yī)學超聲成像算法中,最經(jīng)典和最廣泛使用的是延遲疊加算法。延遲疊加算法在超聲成像、雷達信號發(fā)射、接收以及天線信號波束形成等方面有著廣泛的應用。雖然該算法并不是典型的性能需求型算法,但是在醫(yī)學成像云計算服務的新需求下,需要提高該算法的計算速度,以克服云計算中網(wǎng)絡(luò)傳輸速度相對較慢的約束。然而,以中央處理器作為主要計算資源的傳統(tǒng)云計算框架無法滿足醫(yī)學超聲圖像快速生成的性能需求,因此,本文中使用以現(xiàn)場可編程邏輯門陣列作為異構(gòu)加速資源的SuperVessel云平臺作為并行延遲疊加算法的實現(xiàn)平臺。當包括現(xiàn)場可編程邏輯門陣列和中央處理器之間的數(shù)據(jù)傳輸時間在內(nèi)時,SuperVessel云平臺上該算法異構(gòu)實現(xiàn)的運行速度相較于中央處理器中該算法的運行速度提升了約22倍。
本文引用地址:http://www.ex-cimer.com/article/201609/310488.htm引言
延遲疊加算法是醫(yī)學超聲成像算法中最經(jīng)典和最廣泛使用的基本算法,在眾多應用場景中有著廣泛的運用,例如醫(yī)學超聲成像[1]、雷達信號的發(fā)射和接收[2]以及天線信號波束形成[3]等。同時,該算法可以在眾多不同的設(shè)備中實現(xiàn),例如在臨床和便攜嵌入式醫(yī)學超聲實時成像設(shè)備中均有延遲疊加算法的實現(xiàn)。然而,當我們考慮醫(yī)學成像云計算服務的全新應用場景時,傳統(tǒng)計算設(shè)備的計算速度并不能滿足實時成像的計算需求。因此,有必要研發(fā)更快的、更有效的延遲疊加算法云實現(xiàn)。
傳統(tǒng)的延遲疊加算法實現(xiàn)一般是采用基于中央處理器結(jié)構(gòu)的串行計算模式實現(xiàn)。對于某些應用來說,中央處理器的計算速度可以滿足其計算需求,然而對于醫(yī)學成像云服務應用來說,中央處理器的計算速度還是相對太慢。另一方面,使用現(xiàn)場可編程邏輯門陣列(Field-Programmable Gate Array,F(xiàn)PGA)可以滿足并行實現(xiàn)的計算需求,而SuperVessel平臺正是第一個將FPGA加速融入到云計算中的計算平臺,因此,適合在該平臺上實現(xiàn)和評測并行延遲疊加算法。
本文將詳細描述SuperVessel云平臺[4]上使用FPGA加速的并行延遲疊加算法的設(shè)計和實驗評測。
1 延遲疊加算法及其并行實現(xiàn)方案
1.1 延遲疊加算法
圖1中的代碼為醫(yī)學超聲成像中串行延遲疊加算法的核心代碼。在該算法中,首先計算接收到的回聲超聲信號的延遲量,進而將延遲后的回聲信號疊加,得到增強的回聲信號輸出,即超聲成像圖像中一個像素點的亮度值。
延遲疊加算法包含三個循環(huán),如圖1中所示。該算法的時間復雜度為:
(1)
其中變量LC(Line Count)表示輸出圖像中垂直的圖像線條數(shù),變量RC(Rows Count)表示輸出圖像中的行數(shù),變量PA(Probe Amount)表示接收回聲超聲信號的探頭陣元數(shù)量。
在本文的設(shè)計和實驗中,LC設(shè)定為64,RC設(shè)定為1024,PA設(shè)定為64,所以每生成一幅超聲圖像需要計算4194304次延遲量計算和疊加計算。此外,在實時成像的情況下,要求形成流暢的實時成像視頻需要每秒24幀圖像的幀率。因此,定義TC為上述每一次延遲量計算和疊加計算共需要消耗的時間,則:
(2)
對上式進行移項,可得:
(3)
在本文的設(shè)計和實驗中,為了實現(xiàn)實時成像,根據(jù)公式(3)演算出TC的最大值為9.93×10-9秒。此外,隨著輸入數(shù)據(jù)集的增大,實時成像的實現(xiàn)難度也相應提升,因此,需要考慮并行實現(xiàn)方案。
1.2 延遲疊加算法的并行實現(xiàn)
如圖1所示,串行延遲疊加算法的核心代碼中,核心操作是對延遲后輸入數(shù)據(jù)的疊加。針對于最終生成圖像中的一個特定像素點(i, j),存在PA次輸入數(shù)據(jù)信號的疊加,疊加的公式如下:
(4)
其中,i、j和k分別是LC、RC和PA的累加變量,而d是延遲量的數(shù)值,可以通過特定i、j和k變量的相關(guān)計算得到。當變量i為一個特定值ifixed時,最終圖像中第ifixed列上像素點的亮度值可以通過如下公式計算:
(5)
通過對延遲疊加算法進行分析,得出計算不同圖像線上的image(ifixed, j)時并不存在相互間的數(shù)據(jù)依賴。因此,延遲疊加算法的計算過程可以并行化實現(xiàn)。
2 SuperVessel云平臺上的算法實現(xiàn)
本文使用SuperVessel云平臺實現(xiàn)的并行延遲疊加算法需要滿足以下計算需求:1、在一個時鐘周期內(nèi)計算特定像素點image(i, j)的值;2、實現(xiàn)足夠精確的浮點數(shù)計算;3、FPGA上全流水線化計算。
本文使用CAPI FPGA實現(xiàn)并行延遲疊加算法的設(shè)計框圖如圖2所示。該設(shè)計包含五個主要部分:輸入數(shù)據(jù)分離器、RowsCount循環(huán)生成器、延遲信號選擇器、疊加器和數(shù)據(jù)輸出控制器。以下是這五個部分設(shè)計原理和實現(xiàn)模式的詳細描述:
輸入數(shù)據(jù)分離器: CAPI傳輸總線的帶寬是256位,而每一個延遲信號選擇器僅需要32位的帶寬,以供傳輸標準的單精度浮點數(shù)。由圖2可以看出該設(shè)計中包含64個延遲信號選擇器,因此,需要將CAPI總線的256位輸入數(shù)據(jù)分離,并且規(guī)劃好輸入數(shù)據(jù)讀取的順序。輸入數(shù)據(jù)讀取過程的規(guī)劃如下:
第一步:在T時鐘周期內(nèi),第0個至第7個延遲信號選擇器讀取一個CAPI輸入信號數(shù)據(jù);在(T+1)時鐘周期內(nèi),第8個至第15個延遲信號選擇器讀取下一個CAPI輸入信號數(shù)據(jù);以此類推,直到在(T+7)時鐘周期內(nèi),第56個至第63個延遲信號選擇器讀取下一個CAPI輸入信號數(shù)據(jù)。
第二步:重復第一步所描述的步驟,直到生成一幅圖像中某一列像素點所需要的所有輸入信號數(shù)據(jù)讀取完畢。
第三步:當圖像中某一列的所有像素點數(shù)值均計算完成,則回到第一步讀取生成圖像中下一列像素點所需要的輸入信號數(shù)據(jù)過程。
RowsCount循環(huán)生成器:當圖像中某一列像素點計算所需要的所有輸入信號數(shù)據(jù)讀取完畢時,循環(huán)生成器將開始生成RC循環(huán)變量j的值。變量j的初始值為0,在每一個時鐘周期內(nèi)自增1,直到最大值1023。
延遲信號選擇器:延遲信號選擇器將計算對應像素點不同數(shù)據(jù)通道上的延遲量,并選擇對應的輸入信號數(shù)據(jù)。實現(xiàn)部分包含了一個延遲量計算器和一個BRAM存儲器,BRAM存儲器用于存儲某個數(shù)據(jù)輸入接收通道,接收通道接收到的輸入信號數(shù)據(jù)。
疊加器:在并行延遲疊加算法的CAPI FPGA設(shè)計中共有64個延遲信號選擇器,而這64個延遲信號選擇器的輸出值之和,即為image(i, j)的最終結(jié)果。計算兩個延遲信號選擇器輸出值之和需要一個加法器,對應地,計算64個延遲信號選擇器輸出值之和需要63個加法器。為了使加法器設(shè)計流水線化,疊加器模塊將加法器分為6個階段層次,每層分別使用32、16、8、4、2、1個加法器。
輸出數(shù)據(jù)控制器:由于CAPI總線提供的帶寬是256位,而本文所描述的設(shè)計每一個時鐘周期內(nèi)輸出數(shù)據(jù)是一個32位的浮點數(shù)。因此,輸出的數(shù)據(jù)可以先存放于FPGA中,每8個時鐘周期通過CAPI總線接口向CPU輸出一次數(shù)據(jù)。
除了上述的五個主要實現(xiàn)模塊外,本設(shè)計方案中也使用了下面兩個設(shè)計模塊:
浮點數(shù)計算單元:本設(shè)計使用了Xilinx Vivado軟件中提供的浮點數(shù)IP核作為浮點數(shù)計算單元模塊。該類IP核遵循了IEEE-754的標準,因此,本文設(shè)計中的浮點數(shù)計算結(jié)果相較于CPU實現(xiàn)的浮點數(shù)計算結(jié)果而言,誤差很小。另一方面,該類IP核是全流水線化的,這也進一步提升了設(shè)計的吞吐量。
狀態(tài)控制器:在圖像像素點數(shù)值計算的過程中有兩個狀態(tài)階段:第一個階段是輸入信號數(shù)據(jù)的讀取過程,第二個階段是延遲量的計算和延遲后輸入信號數(shù)據(jù)的疊加過程。狀態(tài)控制器包含一個狀態(tài)標記變量,以指示當前計算的狀態(tài)階段。當?shù)谝浑A段的輸入信號數(shù)據(jù)讀取過程結(jié)束時,BRAM的寫入地址waddr的值將為2047。因此,可定義waddr==2047為第二階段開始的標記信號。當?shù)诙A段結(jié)束時,將waddr的值設(shè)為0,則將觸發(fā)第一階段重新開始,進行下一輪計算。此外,當圖像中所有的像素點計算完成時,輸出圖像的像素點數(shù)目為65536 。所以,可定義該數(shù)值為圖像計算完成的標志變量,標志著算法計算結(jié)束。
3 實驗和評測結(jié)果討論
3.1 SuperVessel平臺上使用CAPI FPGA加速器的流程
在SuperVessel平臺上使用CAPI FPGA加速器來加速算法應用,需要執(zhí)行以下步驟:
1、使用Xilinx Vivado軟件設(shè)計FPGA加速器核心模塊;
2、在本地的x86機器上集成FPGA加速器核心模塊和CAPI仿真框架進行仿真驗證;
3、在本地機器上編譯FPGA加速器核心模塊和CAPI加速框架構(gòu)成的加速器包,并生成對應的bitstream文件;
4、將加速器bitstream文件上傳到SuperVessel云平臺上;
5、在SuperVessel云平臺上申請?zhí)摂M機資源,并關(guān)聯(lián)對應的加速器bitstream文件,然后啟動虛擬機運行加速器。
另外需要注意以下兩點:
VPN網(wǎng)絡(luò):SuperVessel云平臺上申請的虛擬機資源沒有對應的可直接訪問的公網(wǎng)IP,需要使用對應的VPN網(wǎng)絡(luò)。使用的VPN網(wǎng)絡(luò)在Windows、Linux、MacOS等主流操作系統(tǒng)中均有對應的軟件支持。
內(nèi)存占用:編譯步驟3中所述的加速器包時需要大量本地機器內(nèi)存,尤其在綜合和布線的階段;而且CAPI FPGA加速器設(shè)計越復雜,本地機器內(nèi)存占用量就越大。在本文的實驗評測中觀察到,編譯階段的內(nèi)存占用量最高達到了14GB。內(nèi)存不足將導致編譯失敗,因此需要根據(jù)CAPI FPGA設(shè)計的大小配置足夠的內(nèi)存資源。
3.2 仿真數(shù)據(jù)生成
本文的實驗過程中為了測試使用CAPI FPGA并行加速的延遲疊加算法,使用Field II醫(yī)學超聲信號模擬器[5]仿真了醫(yī)學超聲回波輸入數(shù)據(jù)。本文的醫(yī)學超聲圖像回波輸入數(shù)據(jù)仿真了128個陣元的超聲探頭,探頭間距為0.3048mm,采用5 kHz的脈沖發(fā)射頻率和40 MHz的回波接收采樣頻率。此外,超聲圖像的成像場景仿真了線形點陣列作為成像對象的散射源。
3.3 實驗結(jié)果討論
在實驗中,通過網(wǎng)絡(luò)將10份醫(yī)學超聲圖像的輸入信號數(shù)據(jù)載入SuperVessel云平臺,其中每份圖像的輸入信號數(shù)據(jù)對應于一張超聲圖像。在云平臺上通過CAPI加速架構(gòu)提供的API,調(diào)用FPGA加速器,將數(shù)據(jù)從云平臺上CPU對應的DDR內(nèi)存中傳輸?shù)紽PGA中的BRAM里;完成圖像像素點數(shù)值計算后再將數(shù)據(jù)傳回DDR內(nèi)存。實測從數(shù)據(jù)傳輸開始到數(shù)據(jù)傳輸結(jié)束的時間,得到并行延遲疊加算法云計算應用運行的總時間。并行延遲疊加算法在FPGA上的計算時間通過統(tǒng)計算法執(zhí)行的時鐘周期來確定,因此,還可推算出數(shù)據(jù)傳輸所消耗的時間。通過多次實驗求得各項時間參數(shù)的平均值,如表1所示。
與此同時,使用SuperVessel云平臺上CPU計算獲得同樣的10張醫(yī)學超聲圖像,其每張圖像計算的平均耗時為246 ms。由此計算可得,本文設(shè)計的CAPI FPGA并行延遲疊加算法實現(xiàn)的加速比達到了約22倍。此外,通過實驗推導出該設(shè)計的TC數(shù)值為秒,滿足1.1小節(jié)提出的實時成像要求。
4 結(jié)論和展望
本文描述了在SuperVessel云平臺上,設(shè)計和評測基于CAPI FPGA加速器技術(shù)的并行延遲疊加算法。實驗評測結(jié)果表明,SuperVessel云平臺上基于CAPI FPGA加速器的并行延遲疊加算法的運行速度相較于使用CPU計算的延遲疊加算法的運行速度提高了約22倍,該速度可以滿足醫(yī)學成像云計算服務的需求。
目前,本文設(shè)計中的超聲回波信號接收通道數(shù)為64。通道數(shù)越大時,得到的圖像越清晰,所以我們使用同樣的方案設(shè)計了96通道和128通道的成像方案,但由于資源限制的原因未能成功運行。我們將繼續(xù)優(yōu)化當前的設(shè)計,降低資源占用并采用多片F(xiàn)PGA設(shè)計方案,進一步提高通道數(shù)量和數(shù)據(jù)處理能力。
另外,SuperVessel云平臺提供的CAPI加速技術(shù)可以應用于其他計算密集型算法加速,尤其是輸入輸出數(shù)據(jù)量小,而時間復雜度高的算法。我們將進一步把其他醫(yī)學超聲成像算法設(shè)計到SuperVessel云平臺上實現(xiàn)。
參考文獻:
[1] G. Matrone, A.S. Savoia, G. Caliano, and G. Magenes, “ The Delay Multiply and SumBeamforming Algorithm in Ultrasound B-Mode Medical Imaging,” IEEE Transactions onMedical Imaging, 2015, 34, (4), pp. 940-949.
[2] T. Sakamoto, T. Sato, P.J. Aubry, and A.G. Yarovoy, “Ultra-Wideband Radar ImagingUsing a Hybrid of Kirchhoff Migration and Stolt F-K Migration With an Inverse BoundaryScattering Transform,” IEEE Transactions on Antennas and Propagation, 2015, 63, (8),pp. 3502-3512.
[3] S.S. Tiang, M. Sadoon, T.F. Zanoon, M.F. Ain, and M.Z. Abdullah, “Radar sensingfeaturing biconical antenna and enhanced delay and sum algorithm for early stage breastcancer detection,” Progress In Electromagnetics Research B, 2013, 46, pp. 299-316.
[4] Y. Lin, and L. Shao, “SuperVessel: The Open Cloud Service for Open-POWER,” White paper, IBM corporation, 2015.
[5] J.A. Jensen, “Ultrasound fields from triangular apertures,” Journal of the Acoustical Society of America, 1996, 100, (4), pp. 2049-2056.
本文來源于中國科技期刊《電子產(chǎn)品世界》2016年第9期第41頁,歡迎您寫論文時引用,并注明出處。
評論