陳胤燃 何 瓊 羅建文*
1(清華大學醫(yī)學院生物醫(yī)學工程系,北京 100084)2(清華大學生物醫(yī)學影像研究中心,北京 100084)
基于GPU并行計算的超聲波束合成方法
陳胤燃1,2何 瓊1,2羅建文1,2*
1(清華大學醫(yī)學院生物醫(yī)學工程系,北京 100084)2(清華大學生物醫(yī)學影像研究中心,北京 100084)
逐列掃描式的聚焦成像方法會限制超聲成像幀頻的提高。采用平面波發(fā)射模式只需要一次發(fā)射和接收即可獲得一幅完整的超聲圖像,平面波成像是可以大幅度地提高成像幀頻,從而實現(xiàn)超聲超高速成像的方法之一。但是現(xiàn)有的超聲波束合成器無法達到超聲超高速成像對于計算能力的要求。對基于平面波成像的超聲延時-疊加波束合成算法進行并行性分析,在此基礎上設計并實現(xiàn)兩種基于圖形處理器(GPU)并行計算的超聲平面波成像波束合成方法——基于2個Kernel和基于1個Kernel的并行波束合成方法。兩種方法的主要區(qū)別在于波束合成中對延時值的計算和存儲策略的不同處理,仿體實驗證明兩種方法的計算幀頻分別達到2 178 和2 453 幀/s。相比于普通的方法,這兩種基于GPU的并行波束合成方法的計算幀頻分別提速99倍和111倍。實驗結果表明,GPU波束合成器相比于傳統(tǒng)方法,可以大幅度提高計算能力。
超聲成像;波束合成;并行計算;圖形處理器
傳統(tǒng)的超聲B模式成像利用多次發(fā)射和接收聚焦聲波來合成一幅完整的圖像,該成像模式下的理論最高幀頻一般在幾十到一百多幀每秒之間。如果采用多焦點發(fā)射的模式,該理論最高幀頻將相應降低,降低的倍數(shù)等于多焦點增加的個數(shù)。為了進一步提高超聲成像的幀頻,隨著超聲成像系統(tǒng)軟硬件水平的不斷提高,超高速超聲成像逐漸發(fā)展為如今超聲成像的研究熱點之一。
超高速超聲成像的概念最早由Bruneel等在1977年提出[1]。在1979年,和Bruneel同一個組的Delannoy等開發(fā)出了一個超聲系統(tǒng),可以通過一次的脈沖發(fā)射,利用模擬域的并行數(shù)據(jù)處理而獲得一幅圖像,該系統(tǒng)可以達到1 000幀/s的速度(70條線)[2]。在Bruneel和Delannoy等之后,1984年,Shattuck等在相控陣成像中通過在一次發(fā)射后同時計算多條B模式掃描線的方法來提高成像速度[3]。1991年,Lu和Greenleaf提出了基于非衍射波束的超聲成像來提高成像速度[4]。從20世紀90年代開始,F(xiàn)ink等提出了平面波發(fā)射和并行波束合成的方法來實現(xiàn)超高速成像,該方法可以將幀頻提高到數(shù)千幀每秒[5-7]。平面波成像在發(fā)射過程中同時激勵超聲探頭的所有陣元,發(fā)出波前形狀為平面的脈沖超聲波,平面波在傳播過程中覆蓋整個成像區(qū)域。在接收過程中,各個陣元接收聲場中的回波信號,經(jīng)過并行波束合成和其他后處理之后得到一幅完整的B模式圖像,平面波成像只需要一次發(fā)射/接收過程即可以獲得一幅圖像,因此其理論最高成像幀頻為
(1)
式中,Z是成像區(qū)域的深度,c是超聲波在組織中傳播的速度。
通常認為c的值為1 540m/s,假設圖像深度為5cm,那么對應的理論最高幀頻為15 400f/s(幀/s)超高的幀頻可以帶來絕佳的時間分辨率,從而能夠捕捉到組織運動中的更多細節(jié),有效地輔助疾病的診斷,如實現(xiàn)剪切波彈性成像、超高速超聲多普勒成像等。
就超聲波發(fā)射/接收的環(huán)節(jié)而言,平面波成像相比于傳統(tǒng)聚焦成像能夠大幅度地提高幀頻,但要真正實現(xiàn)超高速成像,還需要解決成像過程中因為單位時間內(nèi)數(shù)據(jù)量大幅度增加而帶來的計算能力不足的問題。現(xiàn)有臨床超聲設備的波束合成環(huán)節(jié)都通過數(shù)字信號處理器(DSP)、現(xiàn)場可編程門陣列(FPGA)等設備來實現(xiàn),這些設備的計算能力還無法滿足超聲超高速成像波束合成實時計算的要求。
圖形處理器或圖像處理單元(graphicsprocessingunit,GPU),由于具有強大的數(shù)值計算能力和高度的可并行性,使得它成為通用計算領域的強大工具,也是實現(xiàn)超聲超高速成像的工具之一。夏春蘭等利用GPU實現(xiàn)了從超聲射頻(RF)信號到B模式圖像的各項關鍵環(huán)節(jié)的處理,顯著地提高了成像的速度[8]。一些學者將GPU應用于超聲的波束合成,并利用多個GPU實現(xiàn)了平面波成像波束合成的并行處理,在一定的成像參數(shù)下,實現(xiàn)了每秒數(shù)千幀的計算幀頻[9-12]。
本研究采用平面波成像方式和延時-疊加波束合成算法,利用一塊商用GPU,采用NVIDIA公司開發(fā)的統(tǒng)一計算架構(computeunifieddevicearchitecture,CUDA),結合C語言進行編程[13],設計并實現(xiàn)了兩種基于GPU并行計算的平面波成像波束合成方法。
1.1 CUDA編程模型
1.1.1 GPU并行計算模型
在介紹CUDA架構的編程模型之前,首先了解幾個和CUDA編程有關的概念[13-16]:
1) Kernel:指可以在GPU中運行的函數(shù),也稱之為內(nèi)核函數(shù),CUDA程序中需要交給GPU處理的命令都需要寫在Kernel函數(shù)中,供GPU調(diào)用。
2) Grid:是一個虛擬的概念,中文名稱“線程網(wǎng)格”或“網(wǎng)格”,它是一個和Kernel相對應的概念,通常一個Kernel對應著一個特定的Grid,即運行一個Kernel都需要生成一個Grid。
3) Block:中文名稱為“線程塊”,Block是Grid的最小執(zhí)行單位,一個Grid中可以劃分出多個Block,各個Block在任務中是并行執(zhí)行的,Block之間沒有固定的執(zhí)行順序,也不能進行通信,Grid里最多可以劃分出3個維度的Block。
4) Thread:中文名稱“線程”,是執(zhí)行計算任務的最小單位,一個Block里可以劃分出最多3個維度的Thread,同一個Block里的Thread在執(zhí)行任務的時候可以通過共享存儲器進行通信。
圖1說明了一個Kernel中的Grid、Block和Thread之間的抽象關系,可以看出在Kernel中存在著兩個層次的并行:Grid中Block之間的并行和Block中Thread的并行。
使用GPU進行并行計算時,需要根據(jù)待處理數(shù)據(jù)的具體特征,合理設計Grid和Block的維度、Grid中每一個維度上的Block數(shù)目和Block中每一個維度上的Thread數(shù)目。
圖1 一個Kernel中Grid、Block和Thread之間的抽象關系(以二維為例)Fig.1 Abstract relations of grid, block and thread in one kernel (a 2-D case)
1.1.2 GPU數(shù)據(jù)存儲架構
GPU中有多種類型的存儲器,它們和Grid、Block、Thread之間的讀寫訪問關系如表1所示。
表1 GPU中各種存儲器的比較 [13-16]
利用GPU進行并行計算時,數(shù)據(jù)在其中的存儲策略合理與否對計算的效率有很大的影響。在進行波束合成并行計算時,需要盡可能地提高數(shù)據(jù)讀寫的速度。共享存儲器在所有的存儲器中,訪問延遲較小,帶寬較高,可以同時被一個Block里的所有Thread并行訪問。在并行波束合成的具體實現(xiàn)過程中,使用共享存儲器可優(yōu)化數(shù)據(jù)存儲策略,在一定程度上提高了波束合成的速度。
1.2 GPU并行波束合成方法設計和實現(xiàn)
1.2.1 延時-疊加波束合成算法并行性分析
采用延時-疊加波束合成算法,首先需要計算不同深度的延時值,根據(jù)延時-疊加算法的原理,圖像中同一深度上各個采樣點的延時模型是完全一致的。如圖2所示,第i行上的點L_i1和L_i2處在同一深度上,它們在各個對應通道中的延時完全一致(在圖中用相同的色塊表示),可以共享2R+1個延時值,2R+1是波束合成接收孔徑的大小。因此,同一深度的各個采樣點可以通過共享一組延時值,實現(xiàn)并行合成。再分析同一通道不同深度的采樣點,可以發(fā)現(xiàn)不同深度的采樣點在進行合成時是相互獨立的。同樣如圖2所示,第i行和第j行的采樣點在疊加計算時互不影響,也可以實現(xiàn)并行合成。不同深度點的延時值不同,在圖中由不同灰度的方塊表示。
圖2 延時-疊加波束合成算法并行性分析Fig.2 Analysis of parallel Computation in delay-and-sum beamforming
通過分析可知,延時-疊加波束合成算法至少存在著兩層可并行計算的環(huán)節(jié)。
1.2.2 2個Kernel實現(xiàn)并行波束合成
由于延時的計算和采樣點本身的值沒有關系,因此在波束合成前,可以先并行地計算出所有的延時,得到延時表,它的每一行代表了對應深度采樣點所共享的一組延時值。在波束合成過程中,對于每個采樣點的所有延時不需要重復計算,而是通過“查找延時表”的方式,找到與之同一深度的所有延時值即可。
通過分析可以發(fā)現(xiàn),延時表的計算過程存在著兩層的并行,因此可以將延時表的計算作為并行任務1。將任務1交給一個Kernel函數(shù)進行計算,此處將該函數(shù)命名為Kernel1,通過計算得到的延時表存放于GPU中,供后面的疊加環(huán)節(jié)使用。
將查延時表進行波束合成的環(huán)節(jié)作為并行任務2,并建立一個新的Kernel函數(shù)執(zhí)行,該函數(shù)此處命名為Kernel2,通過它讀取延時表的對應數(shù)值進行波束合成,Kernel1和Kernel2各自的Grid和Block設計及并行計算任務的劃分示意如圖3、4所示。
圖3 Kernel1對應的Grid1和Block1設計及并行任務劃分Fig.3 Diagrammatic sketch of Grid1 and Block1 designs and task assignments in Kernel1
圖4 Kernel2對應的Grid2和Block2設計及并行任務劃分Fig.4 Diagrammatic sketch of Grid2 and Block2 designs and task assignments in Kernel2
從圖3中可以總結出計算延時表的Kernel1過程中的兩層并行:
1) 延時表中第i行的2R+1個延時值,全部交給Grid1里的Block(0,i-1)進行計算;
2) 該行的第k個延時值(共2R+1個),則交給Block(0,i)里的Thread(0,k-1)線程進行計算。
從圖4可以總結出進行疊加計算的Kernel2過程中的3層并行:
1) Grid2中第s行的M+1個Block負責計算圖像數(shù)據(jù)包中的第s張未合成圖像;
2) 這M+1個Block與第s張圖像的M+1行數(shù)據(jù)一一對應,即Block(s, i)負責計算第s張圖像的第i行上的所有N+1個像素點的值;
3) 第s張圖像的第i行上的N+1個數(shù)據(jù)與Block(s,i)里的N+1條線程一一對應,即Thread(0,j)負責合成第s張圖像的像素點P(i,j)。
1.2.3 1個Kernel實現(xiàn)并行波束合成
使用2個Kernel實現(xiàn)延時-疊加波束合成將 “計算延時”變成更加方便的“查找延時”,但是“查找延時”的設計存在著局限性。首先,查延時表的操作要求對應于每一個接收孔徑的延時模式是完全一致的,這僅適用于平面波成像中的無角度偏轉發(fā)射/接收模式,若采用帶角度偏轉發(fā)射/接收的平面波成像方式,其延時模式更加復雜,因此難以使用該方法,而平面波成像為了提高橫向分辨率,通常需要采集多個偏轉角度的圖像進行多角度空間復合。其次,在2個Kernel的方法中,Kernel1函數(shù)算出的延時表只能存放于全局存儲器中,而線程對全局存儲器的訪問存在著幾百個時鐘周期的延遲,相比于共享存儲器、寄存器等,訪問速度很慢,這在一定程度上也影響了并行波束合成的速度。
為了改善2個Kernel方法的不足,在改進的方法中利用Kernel2里已經(jīng)分配的線程來直接計算延時,因為GPU里分配的線程都是輕量級線程,因此單條線程的計算能力并不突出,如果將龐大的計算量分配給若干條線程來計算,會極大地拖慢程序的運行速度。同時,需要為計算得到的延時值設計合理的存儲策略,讓其他的線程在進行疊加計算時能夠達到較高的訪問速度,保證1個Kernel的方法也能夠保持相同的計算能力。
利用1個Kernel實現(xiàn)延時-疊加波束合成,需要用到GPU中的共享存儲器,之所以在2個Kernel的方法中不使用共享存儲器,是因為Kernel2在運行過程中,一條線程訪問延時表所在的存儲器并讀取相應的延時值的次數(shù)只有一次,不存在一條線程對一個延時值重復讀取的情況,因此在2個Kernel的方法中使用共享存儲器并不會提高波束合成的速度。
使用1個Kernel實現(xiàn)延時-疊加計算的Grid和Block設計及并行任務劃分如圖5所示。
圖5 1個Kernel并行波束合成對應的Grid和Block設計及并行任務劃分Fig.5 Diagrammatic sketch of grid and block designs and task assignments in beamforming with one kernel
在改進的方法中舍棄了Kernel1,在Kernel2已經(jīng)分配的線程中分配一部分線程來計算延時值,并將計算得到的延時值存入共享存儲器中,避免了將延時值存放在訪問速度較慢的全局存儲器中。在改進Kernel2中,一個Block的任務是對同一個深度的N+1個數(shù)據(jù)進行波束合成,并且同一個深度的N+1個數(shù)據(jù)在波束合成時共用2R+1個延時值。因此在劃分并行任務時,分配Kernel2的每一個Block里的2R+1條線程來并行地計算這個Block所對應深度的2R+1個延時值,再并行地將這些延時值存放于所在共享存儲器中,經(jīng)過同步機制后,Block里的所有線程進行疊加計算時,只需要從各自的共享存儲器中讀取相應的延時值并使用即可。這樣的任務劃分相比于前者,線程訪問讀取延時值的速度更快、效率更高。實驗結果也證明,盡管Block里有一部分線程因為計算延時值而增加了計算負擔,但因為使用了訪問速度更快(相比于全局存儲器)的共享存儲器,波束合成的速度并沒有降低。
1.3 實驗設計
在仿體實驗中,使用Verasonics V-1超聲數(shù)據(jù)采集系統(tǒng)和L11-4線陣探頭采集通道數(shù)據(jù),探頭中心頻率7.5 MHz。實驗中進行對比的波束合成處理器分別是Intel公司的Xeon CPU(主頻3.10 GHz)和NVIDIA公司的Tesla K20c GPU(2 496個CUDA核,5 GB內(nèi)存),采集通道RF數(shù)據(jù)的各項參數(shù)如表2所示。為了驗證GPU波束合成結果的正確性,對合成的結果沒有進行濾波、角度復合等優(yōu)化,因此獲得的圖像有較強的噪聲干擾,對比度和信噪比也不及一般的超聲圖像。其中,接收孔徑33代表合成每一個像素點時用到的通道數(shù),接收孔徑大小為9.5 mm。
表2 線陣探頭采集通道RF參數(shù)及波束合成參數(shù)
1.4 評價方法
本研究中對于實驗結果的評價方法如下:
1) 均方誤差。用歸一化的均方誤差來評估波束合成結果的正確性,其表達式如下:
(2)
式中:xi,j是參考數(shù)據(jù)集,在本研究中是采用傳統(tǒng)波束合成方法得到的圖像矩陣;yi,j是實驗數(shù)據(jù)集,在本研究中是采用GPU波束合成方法得到的圖像矩陣;N是數(shù)據(jù)集的大?。籱ean(xi,j)表示求平均計算。
2) 計算時間。將超聲采集系統(tǒng)獲得的100幀通道數(shù)據(jù)進行打包處理,再一次性送入波束合成器(CPU或GPU)中,計算波束合成器采用不同方法合成完畢100幀圖像的時間,以此作為衡量波束合成器計算性能的依據(jù)。
3) 算法復雜度和計算量。從算法本身的復雜程度對比,以及不同算法合成100幀圖像時所需要的計算量,對3種不同的方法進行討論。
仿體實驗的結果如圖6所示,其中圖6(a)是采用普通串行算法計算得到的B模式圖像,圖6(b)是采用GPU并行算法中的2個Kernel方法計算得到的結果,圖6(c)是1個Kernel方法計算得到的結果。
1) 均方誤差。以圖6(a)作為參考數(shù)據(jù)集,將圖6(b)、(c)分別和參考數(shù)據(jù)集做均方誤差計算,得到的結果均為0.002 5%。
2) 計算時間。普通波束合成方法和兩種并行波束合成方法的計算能力對比如表3所示。可以看到,普通方法耗時4 500ms,幀頻為22f/s左右。2個Kernel的方法耗時為45.92ms,計算幀頻2 178f/s左右;使用1個Kernel的方法耗時40.76ms,幀頻達到2 453f/s左右。相比于普通方法,兩種并行合成方法分別加速99倍和111倍。相比2個Kernel的方法,1個Kernel的方法又進一步提速12.68%。
表3 GPU并行波束合成和普通波束合成方法計算能力對比
4.1 算法復雜度和計算量
基于CPU串行計算的波束合成方法在合成每一個像素點時,需要分別計算這些像素點的延時值,再進行疊加計算。對于待合成圖像中的每一個像素點,需要循環(huán)重復上述過程。本研究提出的第2種GPU波束合成方法,即基于1個Kernel的方法,從算法復雜度的角度而言,和基于CPU串行計算的方法類似,即在合成每一個像素點時,該點的延時值是單獨分別計算和儲存的,不同的是后者將該方法進行了并行化處理,并利用共享存儲器來提高存儲效率。綜合言之,這兩種方法的計算思路是一致的,但基于GPU的方法需要考慮并行分配線程和數(shù)據(jù)的存儲策略。
本研究中提出的基于2個Kernel的方法,需要先建立1個Kernel來計算延時表并儲存在全局存儲器中,再由第2個Kernel調(diào)用。從算法角度而言,該方法的復雜度相對較高,而且相比1個Kernel的方法,更多地利用了全局存儲器,因此在一定程度上降低了數(shù)據(jù)的讀取效率。
從數(shù)據(jù)量的角度考慮,基于CPU串行計算的方法和兩種基于GPU并行計算的方法,其數(shù)據(jù)的輸入量和輸出量是相同的,其中輸入是100幀的通道數(shù)據(jù),輸出是100幀波束合成之后的射頻數(shù)據(jù)(數(shù)據(jù)格式也相同)。從中間生成的臨時數(shù)據(jù)而言,基于CPU的方法和基于GPU的1個Kernel的方法在合成每一個像素點時,只會產(chǎn)生對應于該點的延時值數(shù)列,存儲于共享存儲器中并隨著波束合成的進行而不斷更新。而基于GPU的2個Kernel的方法在計算過程中會產(chǎn)生一個延時表,它會根據(jù)圖像矩陣的大小而占據(jù)不同的存儲空間。
4.2 應用靈活性
使用2個Kernel的方法需要先計算出延時表,是基于無角度偏轉發(fā)射/接收模式的平面波成像在同一深度處有完全相同的延時模式而采用的簡便算法,它所適用的成像方法范圍較窄,因此當遇到角度偏轉發(fā)射/接收模式的平面波成像或者是其他先進成像方法時,這樣的方法使用并不方便。而1個Kernel的方法通過分配出部分線程直接計算所在的線程塊所需要的延時值,提高了應用的靈活性。
4.3 創(chuàng)新和不足
上述兩種方法與已有的并行波束合成算法相比,不同之處在于,現(xiàn)有并行波束合成方法一般是同時對不同通道的RF數(shù)據(jù)進行波束合成,而本研究所采用的方法考慮到了延時-疊加波束合成算法在同一深度上具有相同的延時模式,可以共享一組延時值,從而實現(xiàn)同一個深度上的并行波束合成。在大部分超聲圖像中,縱向上一個通道的采樣點數(shù)要遠遠大于橫向上的通道數(shù),該方法并行地合成各個深度上的數(shù)據(jù),相比現(xiàn)有的并行波束合成方法,具有更大的加速潛能。
在本研究中,根據(jù)延時值計算和存儲策略的不同,設計并實現(xiàn)了兩種基于GPU的并行波束合成方法,兩種方法最大的區(qū)別是對共享存儲器的使用。由于不同GPU的共享存儲器空間存在一定的差別(一般為48 KB),因此采用第二種方法時需要考慮具體所使用的GPU共享存儲器大小,避免發(fā)生數(shù)據(jù)的溢出,導致計算結果錯誤。
該項工作還有可以進一步改進和突破的地方,如進一步優(yōu)化數(shù)據(jù)在GPU中的存儲策略,減少待波束合成數(shù)據(jù)因存放于全局存儲器中而造成的較高的訪問延遲。另外,加入角度復合之后,數(shù)據(jù)量的成倍增加會導致計算幀頻的相應降低,如何保證GPU波束合成器在數(shù)據(jù)量增加的情況下仍然保持較高的計算能力也是今后工作的重點之一。
本研究基于延時-疊加波束合成算法的并行性分析,設計出了兩種基于GPU并行計算的超聲波束合成方法——基于2個Kernel和基于1個Kernel的并行波束合成方法,并分別編程實現(xiàn)。兩種方法均達到了較高的計算能力,相比普通的合成方法大幅度提高了計算幀頻。
[1] Bruneel C, Torguet R, Rouvaen KM, et al. Ultrafast echotomographic system using optical processing of ultrasonic signals[J]. Applied Physics Letters, 1977, 30(8): 371-373.
[2] Delannoy B, Torguet R, Bruneel C, et al. Acoustical image reconstruction in parallel‐processing analog electronic systems[J]. Journal of Applied Physics, 1979, 50(5): 3153-3159.
[3] Shattuck DP, Weinshenker MD, Smith SW, et al. Explososcan: A parallel processing technique for high speed ultrasound imaging with linear phased arrays[J]. The Journal of the Acoustical Society of America, 1984, 75(4): 1273-1282.
[4] Lu J, Greenleaf JF. Pulse-echo imaging using a nondiffracting beam transducer[J]. Ultrasound in Medicine & Biology, 1991, 17(3): 265-281.
[5] Tanter M, Fink M. Ultrafast imaging in biomedical ultrasound[J]. IEEE Trans Ultrasonics, Ferroelectrics, and Frequency Control, 2014, 61(1): 102-119.
[6] Souquet J, Bercoff J. Ultrafast ultrasound imaging[J]. Ultrasound in Medicine & Biology, 2011, 37(8): S17.
[7] Montaldo G, Tanter M, Bercoff J, et al. Coherent plane-wave compounding for very high frame rate ultrasonography and transient elastography[J]. IEEE Trans Ultrasonics, Ferroelectrics, and Frequency Control, 2009, 56(3): 489-506.
[8] 夏春蘭, 石丹, 劉東權. 基于 CUDA 的超聲 B 模式成像[J]. 計算機應用研究, 2011, 28(6): 2011-2015.
[9] So HKH, Chen J, Yiu BYS, et al. Medical ultrasound imaging: To GPU or not to GPU? [J]. IEEE Micro, 2011, 31(5): 54-65.
[10] Yiu BYS, Tsang IKH, Yu ACH. Real-time GPU-based software beamformer designed for advanced imaging methods research[C] // 2010 IEEE International Ultrasonics Symposium (IUS). San Diego: IEEE-UFFC, 2010: 1920-1923.
[11] Yiu BYS, Tsang IKH, Yu ACH. GPU-based beamformer: Fast realization of plane wave compounding and synthetic aperture imaging[J]. IEEE Trans Ultrasonics, Ferroelectrics, and Frequency Control, 2011, 58(8): 1698-1705.
[12] Chen J, Yiu BYS, So HKH, et al. Real-time GPU-based adaptive beamformer for high quality ultrasound imaging[C] // Clemens Ruppel, Ken-ya Hashimoto, eds. 2011 IEEE International Ultrasonics Symposium (IUS). Orlando: IEEE, 2011: 474-477.
[13] Cook S. CUDA Programming: A Developer′s Guide to Parallel Computing with GPUs [M]. Waltham: Elsevier, 2012.
[14] Farber R. CUDA Application Design and Development [M]. Waltham: Elsevier, 2011.
[15] Kirk DB, Wen-mei WH. Programming massively parallel processors: a hands-on approach [M]. Waltham: Elsevier, 2012.
[16] 張舒, 褚艷利. GPU 高性能運算之 CUDA[M]. 北京: 中國水利水電出版社, 2009.
Ultrasound Beamforming Based on GPU Parallel Computation
Chen Yinran1,2He Qiong1,2Luo Jianwen1,2*
1(DepartmentofBiomedicalEngineering,SchoolofMedicine,TsinghuaUniversity,Beijing100084,China)2(CenterforBiomedicalImagingResearch,TsinghuaUniversity,Beijing100084,China)
The conventional line-by-line focused mode restricts the improvement of frame rate in ultrasound imaging. In plane wave imaging, each image is obtained by only one transmission and reception, and thus ultrafast imaging can be achieved. However, the current beamformers cannot meet the demand of ultrafast ultrasound imaging for massive computation. In this paper, the feasibility analysis of parallel computation in delay-and-sum beamforming algorithm was performed and two beamforming methods based on graphics processing unit (GPU) parallel computation including the 2 Kernel-based and 1 Kernel-based parallel beamformers were designed and implemented. The main differences between these methods were the calculations and data storage strategies of time delays in beamforming. Phantom experiments demonstrate that the computational frame rates of each method was 2,178 frames per second and 2,453 frames per second, respectively. Each of the methods obtained a speed up ratio of 99 and 111 compared to the normal method, which demonstrated that the GPU-based beamformer could significantly improve the calculating capability.
ultrasound imaging; beamforming; parallel computing; GPU
10.3969/j.issn.0258-8021. 2016. 06.006
2016-03-21, 錄用日期:2016-06-23
國家自然科學基金(61271131);高等學校博士學科點專項科研基金(20130002110061)
R318
A
0258-8021(2016) 06-0677-07
*通信作者(Corresponding author), E-mail: luo_jianwen@tsinghua.edu.cn