基于OpenCL-To-FPGA的CT圖像重建反投影加速方法
【專利摘要】本發(fā)明公開了一種基于OpenCL-To-FPGA的CT圖像重建反投影加速方法,主要利用FPGA實(shí)現(xiàn)了CT圖像重建反投影步驟的加速,具體為:在OpenCL編程模型中,構(gòu)建CPU和FPGA協(xié)作的CPU-FPGA異構(gòu)計(jì)算模式,CPU和FPGA間通過PCI-E總線進(jìn)行通信,CPU作為主機(jī)端,負(fù)責(zé)算法中的串行任務(wù)以及對(duì)FPGA的配置與控制任務(wù);FPGA作為協(xié)處理器端,通過加載OpenCL內(nèi)核程序以實(shí)現(xiàn)對(duì)反投影計(jì)算的并行流水加速。在編程模式中,F(xiàn)PGA執(zhí)行程序全部采用類C/C++風(fēng)格的OpenCL語言開發(fā),開發(fā)簡便,修改靈活,能大大縮短研發(fā)周期,減少產(chǎn)品維護(hù)和升級(jí)的研發(fā)成本;另一方面,新方法基于OpenCL框架,代碼可以實(shí)現(xiàn)跨平臺(tái)快速移植,適合擴(kuò)展和應(yīng)用于多處理器異構(gòu)平臺(tái)的協(xié)同加速之中。
【專利說明】基于OpenCL-To-FPGA的CT圖像重建反投影加速方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種CT圖像重建的方法,特別是涉及一種基于OpenCL-To-FPGA的CT 圖像重建過程中反投影加速方法。
【背景技術(shù)】
[0002] 計(jì)算機(jī)斷層成像(Computed Tomography, CT)以其無損、精確、三維可視化等優(yōu)點(diǎn) 在工業(yè)無損檢測(cè)和醫(yī)療診斷領(lǐng)域獲得了廣泛的應(yīng)用。然而CT設(shè)備在提高成像質(zhì)量和重建 分辨率的同時(shí),相應(yīng)需求的計(jì)算資源和存儲(chǔ)資源都非常大,重建速度已成為CT技術(shù)走向?qū)?用的一個(gè)瓶頸,如何對(duì)CT重建過程加速是目前該領(lǐng)域研究的一個(gè)難點(diǎn)問題。
[0003]目前,實(shí)際CT系統(tǒng)中應(yīng)用的主流算法主要集中于以濾波反投影為基礎(chǔ)的解析類 重建算法上,如FBP、FDK等算法。在這類算法中,反投影過程所占計(jì)算消耗的比例最高,對(duì) 反投影計(jì)算的加速是實(shí)際應(yīng)用中重建加速的關(guān)鍵點(diǎn)。
[0004] 隨著現(xiàn)代電子技術(shù)的高速發(fā)展,處理器的運(yùn)算速度越來越快,因此近年來對(duì)CT重 建加速的研究主要集中于基于GPU、FPGA等硬件加速方法上。FPGA擁有豐富的邏輯資源、 算法模塊和嵌入式硬核模塊,以全數(shù)據(jù)流的形式進(jìn)行處理,使用硬件以空間上全面積并行 的方法提升算法速度,適合用來進(jìn)行圖像重建,利用FPGA實(shí)現(xiàn)對(duì)CT重建的反投影過程進(jìn)行 加速是該領(lǐng)域的重要研究方向。
[0005] 經(jīng)過現(xiàn)有技術(shù)的文獻(xiàn)檢索發(fā)現(xiàn),利用FPGA加速CT重建反投影的文章采取的實(shí)現(xiàn) 方式存在開發(fā)周期長、難以跨平臺(tái)快速移植、不適于多處理器異構(gòu)平臺(tái)協(xié)同加速等不足。 2008 年,Markus Kowarschik 等在 Proceedings of the 9th International Meeting on Fully Three-Dimensional Image Reconstruction in Radiology and Nuclear Medicine 上發(fā)表文章《High-Speed Reconstruction for C-Arm Computed Tomography》,用 9 塊 FPGA協(xié)調(diào)工作完成了 CT重建中三維反投影部分的加速,但他采用的開發(fā)方式是基于傳統(tǒng) 的VHDL/Verilog硬件編程語言,開發(fā)復(fù)雜度大,研發(fā)周期長,且研發(fā)程序只能在FPGA上使 用,無法移植到其它處理器上。
[0006] 2009 年,Xu 在其學(xué)位論文《An FPGA Hardware Solution for Accelerating Tomographic Reconstruction》中提出采用Impulse C語言在FPGA上實(shí)現(xiàn)了 CT重建的FBP 算法,對(duì)FBP算法中的二維反投影過程進(jìn)行了 FPGA加速,Impulse C語言采用類C的編程 模式,研發(fā)速度和修改靈活性強(qiáng)于傳統(tǒng)的開發(fā)方式,但I(xiàn)mpulse C僅僅是面向FPGA編程研 發(fā),依舊存在移植困難,不適于多處理器異構(gòu)平臺(tái)協(xié)同加速等缺點(diǎn)。
[0007] OpenCL編程框架簡介:0penCL全稱為Open Computing Language,即開放式計(jì)算 語言,最早于2008年由Apple公司提出,是一個(gè)開放的免版稅標(biāo)準(zhǔn)。OpenCL可以實(shí)現(xiàn)混合處 理器的并行計(jì)算,它所支持的異構(gòu)處理器包括0?比6?比05?、&11/8』· processor等,可以 實(shí)現(xiàn)可移植的并行加速代碼,它為通用計(jì)算領(lǐng)域提供了一個(gè)跨平臺(tái)的統(tǒng)一標(biāo)準(zhǔn)語言。2011 年,Altera公司發(fā)布了 FPGA的OpenCL標(biāo)準(zhǔn)開發(fā)計(jì)劃,并于2013年推出了其基于OpenCL框 架的FPGA產(chǎn)品,將跨平臺(tái)并行編程標(biāo)準(zhǔn)OpenCL擴(kuò)展到了 FPGA。
【發(fā)明內(nèi)容】
[0008] 本發(fā)明的發(fā)明目的是:提供一種基于OpenCL-To-FPGA的CT圖像重建過程中反投 影加速方法。
[0009] 本發(fā)明的技術(shù)方案是:基于OpenCL-To-FPGA的CT圖像重建過程中反投影加速方 法,包括如下步驟: 步驟A :在OpenCL編程框架下,構(gòu)建CPU和FPGA協(xié)作的CPU-FPGA異構(gòu)平臺(tái)模型; 步驟B :CPU主機(jī)端構(gòu)建OpenCL主機(jī)程序,并執(zhí)行投影數(shù)據(jù)預(yù)處理操作; 步驟C :處理后的投影數(shù)據(jù)通過PCI-E總線傳輸至FPGA協(xié)處理器,并存儲(chǔ)至全局存儲(chǔ) 器中; 步驟D :CPU主機(jī)端對(duì)FPGA的內(nèi)核進(jìn)行配置,F(xiàn)PGA作為協(xié)處理器端,通過加載OpenCL 內(nèi)核程序以實(shí)現(xiàn)對(duì)反投影計(jì)算的并行流水加速; 步驟E :反投影后的重建數(shù)據(jù)通過PCI-E總線傳輸至CPU主機(jī)端。
[0010] 進(jìn)一步地,步驟D中FPGA作為協(xié)處理器端,實(shí)現(xiàn)對(duì)反投影計(jì)算進(jìn)的并行流水加速 的具體步驟為: 步驟D1 :根據(jù)反投影算子的算法思想和OpenCL編程框架模型設(shè)計(jì)相應(yīng)的OpenCL設(shè)備 核程序(.CL程序); 步驟D2 :利用Altera Altera SDK for OpenCL (A0CL)工具對(duì)核程序進(jìn)行編譯,生成 相應(yīng)的FPGA工程; 步驟D3 :利用Quartus工具對(duì)生成的FPGA工程編譯,生成FPGA配置文件; 步驟D4 :CPU主機(jī)端設(shè)計(jì)并編寫相應(yīng)的主機(jī)程序,設(shè)計(jì)數(shù)據(jù)傳輸流程和FPGA設(shè)備的控 制流程; 步驟D5 :將FPGA配置文件下載到對(duì)應(yīng)的FPGA協(xié)處理器設(shè)備中,同時(shí)主機(jī)端協(xié)同執(zhí)行 主機(jī)程序。
[0011] 進(jìn)一步地,步驟D中采用了分區(qū)訪問的全局存儲(chǔ)器訪問優(yōu)化方法,將全局存儲(chǔ)器 分割為多塊bank,不同角度的投影數(shù)據(jù)分配到不同的bank上。
[0012] 本發(fā)明的有益效果是:本發(fā)明在編程模式中,F(xiàn)PGA執(zhí)行程序全部采用類C/C++風(fēng) 格的OpenCL語言開發(fā),較傳統(tǒng)的Verilog或VHDL等底層硬件描述語言,本方法開發(fā)簡便, 修改靈活,能大大縮短研發(fā)周期,減少產(chǎn)品維護(hù)和升級(jí)的研發(fā)成本;另一方面,新方法基于 OpenCL框架,代碼可以實(shí)現(xiàn)跨平臺(tái)快速移植,適合擴(kuò)展和應(yīng)用于多處理器異構(gòu)平臺(tái)的協(xié)同 加速之中。
【專利附圖】
【附圖說明】
[0013] 下面結(jié)合附圖對(duì)本發(fā)明的【具體實(shí)施方式】作進(jìn)一步的詳細(xì)說明 圖1為本發(fā)明的異構(gòu)平臺(tái)模型整體框架; 圖2為本發(fā)明中反投影算子加速流程圖; 圖3為本發(fā)明中加速反投影重建結(jié)果圖。
【具體實(shí)施方式】
[0014] 本方法構(gòu)建的異構(gòu)平臺(tái)模型如圖1所示,其中CPU為主機(jī)端,通過PCI-E總線和一 個(gè)或多個(gè)協(xié)處理器設(shè)備(FPGA板卡)連接。根據(jù)CT圖像重建算法的任務(wù)分配,編程模型可 以分為兩部分,一部分是在CPU上執(zhí)行的主程序,另一部分是在FPGA上執(zhí)行的核函數(shù)。每 個(gè)協(xié)處理器設(shè)備由多個(gè)處理單元組成,各種計(jì)算操作都是在處理單元中完成的,協(xié)處理器 設(shè)備上的存儲(chǔ)單元分為3種,分別為全局存儲(chǔ)器、常數(shù)存儲(chǔ)器和局部存儲(chǔ)器。主機(jī)端管理著 整個(gè)平臺(tái)上的所有計(jì)算資源,主程序通過定義上下文并管理內(nèi)核程序在FPGA上的執(zhí)行,應(yīng) 用程序會(huì)從主機(jī)端向各個(gè)協(xié)處理器設(shè)備的處理單元發(fā)送計(jì)算命令,在一個(gè)計(jì)算單元內(nèi)的所 有處理單元會(huì)執(zhí)行完全相同的一套指令流程。
[0015] 整個(gè)平臺(tái)對(duì)于CT圖像重建算法的執(zhí)行過程如下:(1) CPU主機(jī)端執(zhí)行投影數(shù)據(jù)預(yù) 處理操作;(2)處理后的投影數(shù)據(jù)通過PCI-E總線傳輸至FPGA協(xié)處理器,并存儲(chǔ)至全局存 儲(chǔ)器中;(3) CPU主機(jī)端對(duì)FPGA的內(nèi)核進(jìn)行配置,F(xiàn)PGA協(xié)處理器端通過多處理單元并行流 水執(zhí)行反投影計(jì)算;(4)反投影后的重建數(shù)據(jù)通過PCI-E總線傳輸至CPU主機(jī)端。
[0016] 對(duì)CPU主機(jī)端的編程采用標(biāo)準(zhǔn)C/C++語言,對(duì)FPGA協(xié)處理器的編程采用基于 OpenCL規(guī)范的描述語言。OpenCL標(biāo)準(zhǔn)規(guī)范的編程語言的抽象等級(jí)遠(yuǎn)高于VHDL和Verilog 等硬件描述語言。傳統(tǒng)的編程方式需要對(duì)FPGA底層硬件單元按照時(shí)序周期進(jìn)行編程描述, 對(duì)于復(fù)雜的算法執(zhí)行,需要設(shè)計(jì)狀態(tài)機(jī)控制數(shù)據(jù)通路,同時(shí)需要處理各級(jí)接口約束和時(shí)序 同步問題,編程難度大、耗時(shí)長,且程序維護(hù)和升級(jí)復(fù)雜,非常不利于實(shí)際產(chǎn)品的快速應(yīng)用。 而采用OpenCL編程方式,無需關(guān)注底層時(shí)序級(jí)的硬件設(shè)計(jì),可根據(jù)反投影算法設(shè)計(jì)高級(jí)語 言描述的類C代碼,OpenCL編譯器則可自動(dòng)實(shí)現(xiàn)由OpenCL代碼轉(zhuǎn)化為硬件描述語言和執(zhí) 行程序的步驟。
[0017] 對(duì)于CT重建的反投影算法并行加速實(shí)現(xiàn),采用OpenCL-To-FPGA方式的開發(fā)流程 如圖2所示,具體描述如下:(1)根據(jù)反投影算子的算法思想和OpenCL編程框架模型設(shè)計(jì) 相應(yīng)的 OpenCL 設(shè)備核程序(· CL 程序);(2)利用 Altera Altera SDK for OpenCL (A0CL) 工具對(duì)核程序進(jìn)行編譯,生成相應(yīng)的FPGA工程;(3)利用Quartus工具對(duì)生成的FPGA工程 編譯,生成FPGA配置文件;(4) CPU主機(jī)端設(shè)計(jì)并編寫相應(yīng)的主機(jī)程序,設(shè)計(jì)數(shù)據(jù)傳輸流程 和FPGA設(shè)備的控制流程;(5)將FPGA配置文件下載到對(duì)應(yīng)的FPGA協(xié)處理器設(shè)備中,同時(shí) 主機(jī)端協(xié)同執(zhí)行主機(jī)程序。
[0018] 在反投影算子的OpenCL核函數(shù)設(shè)計(jì)中,采用2維線程進(jìn)行并行設(shè)計(jì)。反投影過程 采用體素驅(qū)動(dòng),各體素點(diǎn)間的計(jì)算是無關(guān)的,因此線程也按照體素點(diǎn)進(jìn)行并行分配。同時(shí), 考慮z方向的相關(guān)性,為了減少重復(fù)計(jì)算量,z方向索引單獨(dú)分配一個(gè)線程維度;而χ-y面 內(nèi)的索引分配另一個(gè)線程維度。
[0019] 為了實(shí)現(xiàn)加速性能的最優(yōu),綜合考慮FPGA的硬件特點(diǎn)和反投影算子的計(jì)算流程, 本設(shè)計(jì)主要采用了以下優(yōu)化技術(shù):(1)基于分區(qū)訪問的全局存儲(chǔ)器訪問優(yōu)化:將全局存儲(chǔ) 器分割為多塊bank,不同角度的投影數(shù)據(jù)分配到不同的bank上,以實(shí)現(xiàn)負(fù)載的訪問平衡, 從而提升全局存儲(chǔ)器的訪問帶寬;(2)利用常數(shù)存儲(chǔ)器存儲(chǔ)運(yùn)算過程中需要多次重復(fù)計(jì)算 的中間變量,節(jié)省計(jì)算資源;(3)優(yōu)化內(nèi)核函數(shù)中一次反投影的張數(shù),提升對(duì)投影數(shù)據(jù)存儲(chǔ) 的訪問帶寬,同時(shí)減少對(duì)重建數(shù)據(jù)存儲(chǔ)的訪問,通過調(diào)整以達(dá)到對(duì)全局存儲(chǔ)器訪問的最優(yōu)。
[0020] 采用本方法在實(shí)際硬件設(shè)備上進(jìn)行實(shí)現(xiàn),使用的CPU為Intel ?7 3770 CPU 3. 40GHz,使用的FPGA協(xié)處理器設(shè)備為Altera公司的DE4-230開發(fā)板,OpenCL編譯工具為 Altera Beta OpenCL Development Kit (ACL) vO. 9 版,F(xiàn)PGA 編譯工具為 Quartus 12.0。 受DE4-230板卡外部存儲(chǔ)器的帶寬限制,對(duì)實(shí)際性能評(píng)測(cè),優(yōu)化3中核函數(shù)中一次反投影的 張數(shù)定為2時(shí)最佳。重建體模采用標(biāo)準(zhǔn)Sheep-Logan體模,CT圖像重建結(jié)果如圖3所示, 在DE4-230上執(zhí)行反投影加速的測(cè)試結(jié)果如下表所示:
【權(quán)利要求】
1.基于OpenCL-To-FPGA的CT圖像重建過程中反投影加速方法,其特征在于包括如下 步驟: 步驟A :在OpenCL編程框架下,構(gòu)建CPU和FPGA協(xié)作的CPU-FPGA異構(gòu)平臺(tái)模型; 步驟B :CPU主機(jī)端構(gòu)建OpenCL主機(jī)程序,并執(zhí)行投影數(shù)據(jù)預(yù)處理操作; 步驟C :處理后的投影數(shù)據(jù)通過PCI-E總線傳輸至FPGA協(xié)處理器,并存儲(chǔ)至全局存儲(chǔ) 器中; 步驟D :CPU主機(jī)端對(duì)FPGA的內(nèi)核進(jìn)行配置,F(xiàn)PGA作為協(xié)處理器端,通過加載OpenCL 內(nèi)核程序以實(shí)現(xiàn)對(duì)反投影計(jì)算的并行流水加速; 步驟E :反投影后的重建數(shù)據(jù)通過PCI-E總線傳輸至CPU主機(jī)端。
2.根據(jù)權(quán)利要求1所述的基于OpenCL-To-FPGA的CT圖像重建過程中反投影加速方 法,其特征在于:步驟D中FPGA作為協(xié)處理器端,實(shí)現(xiàn)對(duì)反投影計(jì)算的并行流水加速的具體 步驟為: 步驟D1 :根據(jù)反投影算子的算法思想和OpenCL編程框架模型設(shè)計(jì)相應(yīng)的OpenCL設(shè)備 核程序(.CL程序); 步驟D2 :利用Altera Altera SDK for OpenCL (AOCL)工具對(duì)核程序進(jìn)行編譯,生成 相應(yīng)的FPGA工程; 步驟D3 :利用Quartus工具對(duì)生成的FPGA工程編譯,生成FPGA配置文件; 步驟D4 :CPU主機(jī)端設(shè)計(jì)并編寫相應(yīng)的主機(jī)程序,設(shè)計(jì)數(shù)據(jù)傳輸流程和FPGA設(shè)備的控 制流程; 步驟D5 :將FPGA配置文件下載到對(duì)應(yīng)的FPGA協(xié)處理器設(shè)備中,同時(shí)主機(jī)端協(xié)同執(zhí)行 主機(jī)程序。
3.根據(jù)權(quán)利要求1所述的基于OpenCL-To-FPGA的CT圖像重建過程中反投影加速方 法,其特征在于:步驟D中采用了分區(qū)訪問的全局存儲(chǔ)器訪問優(yōu)化方法,將全局存儲(chǔ)器分割 為多塊bank,不同角度的投影數(shù)據(jù)分配到不同的bank上。
【文檔編號(hào)】G06F9/45GK104142845SQ201410347123
【公開日】2014年11月12日 申請(qǐng)日期:2014年7月21日 優(yōu)先權(quán)日:2014年7月21日
【發(fā)明者】李磊, 張瀚銘, 蔡愛龍, 閆鑌, 李漢寧, 席曉琦, 王林元, 王彪 申請(qǐng)人:中國人民解放軍信息工程大學(xué)