潘衛(wèi)國何 寧薛 健呂 科翟 銳代雙鳳
(1.中國科學(xué)院大學(xué)工程管理與信息技術(shù)學(xué)院,北京100049; 2.北京聯(lián)合大學(xué)信息學(xué)院,北京100101)
?
海量超聲數(shù)據(jù)體可視化研究
潘衛(wèi)國1,何寧2,薛健1,呂科,翟銳1,代雙鳳1
(1.中國科學(xué)院大學(xué)工程管理與信息技術(shù)學(xué)院,北京100049; 2.北京聯(lián)合大學(xué)信息學(xué)院,北京100101)
摘要:近年來,隨著科學(xué)數(shù)據(jù)的快速增長,海量數(shù)據(jù)的可視化分析成了急需解決的難題.越來越多的處理海量數(shù)據(jù)的方法向著并行、分布式處理的方向發(fā)展.本文提出了一種混合的框架來處理海量的超聲數(shù)據(jù),該框架通過整合多種硬件環(huán)境和計(jì)算資源來處理海量數(shù)據(jù);所有的數(shù)據(jù)都存放在一個(gè)基于高速網(wǎng)絡(luò)環(huán)境的數(shù)據(jù)共享中心,具有高性能顯卡的前端工作站將耗時(shí)的處理任務(wù)分配到網(wǎng)絡(luò)中的計(jì)算結(jié)點(diǎn),而自身處理顯示和交互的操作;同時(shí)基于OpenCL和OpenMP實(shí)現(xiàn)了可視化算法在GPU和CPU上的并行計(jì)算;核外算法應(yīng)用在本框架中來處理海量的體數(shù)據(jù).實(shí)驗(yàn)結(jié)果表明,本文提出的框架不僅可以處理海量數(shù)據(jù),而且具有較高的交互性能.
關(guān)鍵詞:體繪制;圖形處理器;核外技術(shù);并行計(jì)算;海量數(shù)據(jù)
近年來,隨著大型科學(xué)計(jì)算以及圖形圖像技術(shù)的快速發(fā)展,數(shù)據(jù)可視化領(lǐng)域待處理的數(shù)據(jù)量已經(jīng)遠(yuǎn)遠(yuǎn)超過了目前的數(shù)據(jù)處理能力.在體可視化領(lǐng)域,隨著體數(shù)據(jù)的快速增長,迫切期待計(jì)算設(shè)備的處理能力能夠得到進(jìn)一步提高;尤其是在國內(nèi)外應(yīng)用最廣泛、使用頻率最高的超聲檢測(cè)技術(shù)領(lǐng)域,因其具有檢測(cè)對(duì)象范圍廣,檢測(cè)深度大;缺陷定位準(zhǔn)確,靈敏度高;成本低,使用方便;速度快,對(duì)人體無害以及便于現(xiàn)場(chǎng)使用等特點(diǎn);正向著智能化、自動(dòng)化、圖像化、數(shù)字化、信息化和交叉領(lǐng)域的前沿方向發(fā)展.當(dāng)然硬件設(shè)備本身的升級(jí)換代是最有效的途徑,但在絕大部分條件下是不能夠無限制地實(shí)現(xiàn)的.因此在現(xiàn)有的設(shè)備條件下如何能進(jìn)一步發(fā)揮設(shè)備使用效率,如何有效提高體繪制速度就成為必然的研究趨勢(shì),而可以有效地滿足這種對(duì)計(jì)算能力需求的途徑就是充分利用網(wǎng)絡(luò)分布式環(huán)境中的各種計(jì)算資源.
作為科學(xué)計(jì)算可視化技術(shù)的一個(gè)分支,體繪制是一種三維數(shù)據(jù)場(chǎng)可視化方法,在近二十年的發(fā)展過程中取得了相當(dāng)大的進(jìn)步,它利用圖形學(xué)原理通過計(jì)算來顯示三維數(shù)據(jù)場(chǎng)中有意義信息.對(duì)三維數(shù)據(jù)場(chǎng)內(nèi)的形體不進(jìn)行專門的建模,不生成幾何圖元,二維圖像由三維數(shù)據(jù)場(chǎng)經(jīng)過計(jì)算直接生成,能夠顯示形體的內(nèi)部信息.該方法產(chǎn)生數(shù)據(jù)場(chǎng)的整體圖像,具有圖像質(zhì)量高、對(duì)數(shù)據(jù)的表現(xiàn)力強(qiáng)、便于并行計(jì)算的優(yōu)點(diǎn),但計(jì)算量太大.尤其是面對(duì)這海量的數(shù)據(jù),如何快速的處理海量數(shù)據(jù)來提高繪制速度成為亟待解決的問題[1].
體繪制最早由Levoy[2]于1988年提出,用于輔助科學(xué)家理解三維數(shù)據(jù)場(chǎng),如CT,MRI類型的醫(yī)學(xué)數(shù)據(jù)或有限元分析(FEA)的計(jì)算結(jié)果等.該方法采用光線投射(ray casting)算法對(duì)數(shù)據(jù)場(chǎng)進(jìn)行采樣和積分,直接將三維數(shù)據(jù)轉(zhuǎn)化為圖像.Kniss等[3]引入了高維傳遞函數(shù)并設(shè)計(jì)了編輯界面,使得用戶能夠通過調(diào)節(jié)傳遞函數(shù)觀察數(shù)據(jù)場(chǎng)中不同特征的分布情況.
海量數(shù)據(jù)的單機(jī)繪制方法可以分為硬件加速、數(shù)據(jù)壓縮和核外計(jì)算;硬件加速利用圖形硬件自帶的三線性插值等功能將復(fù)雜的光線投射過程轉(zhuǎn)移到圖形處理器(Graphics Processing Unit,GPU)上進(jìn)行,通過GPU的流式并行計(jì)算模式實(shí)現(xiàn)加速.儲(chǔ)駿[4]提出了一種改進(jìn)的算法,使用Cg語言編寫頂點(diǎn)和片段著色程序,只需要繪制一個(gè)代理面就能獲取光線的起始點(diǎn),但其使用預(yù)先計(jì)算梯度并保存的方法獲取體素法向量,內(nèi)存占用量大.楊金柱[7]等基于CPU的代理幾何生成算法和GPU共同完成體繪制,很好的解決了多組織標(biāo)定與重建速度優(yōu)化問題.張慧滔[5]等人利用GPU來加速單層螺旋CT數(shù)據(jù)的重建.袁斌[6]針對(duì)均勻數(shù)據(jù)場(chǎng)可視化的問題,提出了一種改進(jìn)的GPU光線投射算法,算法采用按需實(shí)時(shí)計(jì)算梯度的方法,省略無效體素的梯度計(jì)算過程,效率較高,但算法使用匯編語言實(shí)現(xiàn),編程比較復(fù)雜.基于GPU的體繪制雖然計(jì)算速度得到了提升,但是也存在著瓶頸;體數(shù)據(jù)將通過總線從系統(tǒng)內(nèi)存?zhèn)鬟f到顯存中,這是GPU流水線中最慢的一個(gè)部分,因此傳遞的數(shù)據(jù)量應(yīng)該盡可能地小;對(duì)大紋理進(jìn)行采樣是一個(gè)相當(dāng)耗時(shí)的操作,如果紋理的大小大于GPU內(nèi)的紋理高速緩存,那么紋理采樣耗時(shí)將會(huì)非常耗時(shí).復(fù)雜的像素渲染[7]也會(huì)造成明顯的瓶頸.
在數(shù)據(jù)壓縮方面,Wang等[8]引入圖像質(zhì)量度量的方法,使得壓縮后的數(shù)據(jù)更易于用戶理解.Lindstrom等[9]則提出了一種對(duì)浮點(diǎn)格式數(shù)據(jù)進(jìn)行快速壓縮的方法,它能夠與應(yīng)用程序的I/O環(huán)節(jié)無縫連接且適用于可變精度的浮點(diǎn)或整型數(shù)據(jù),這些方法與繪制過程無關(guān),具有普遍的適用性.但是這些方法由于對(duì)原始數(shù)據(jù)進(jìn)行了壓縮,降低了成像的質(zhì)量.
在核外計(jì)算(out-of-core)方面,F(xiàn)arias等[10]最早將核外計(jì)算用于大規(guī)模非結(jié)構(gòu)化網(wǎng)格的體繪制,利用外部存儲(chǔ)器對(duì)每個(gè)網(wǎng)格單元執(zhí)行求交、排序和積分操作,從而得到大數(shù)據(jù)的繪制結(jié)果.Gobbetti等[11]提出了一種只需遍歷數(shù)據(jù)一次的核外計(jì)算方法.這類方法利用有限的計(jì)算資源處理大規(guī)模數(shù)據(jù),能夠在一定程度上解決大數(shù)據(jù)的繪制難題,但效率遠(yuǎn)不如并行的方法.汪萌等在海量多媒體數(shù)據(jù)可視化[12]和輔助標(biāo)記[13]方面的研究也取得了卓有成效的效果.
近年來,利用GPU構(gòu)建分布式的計(jì)算與可視化平臺(tái)成為了可視化領(lǐng)域的研究熱點(diǎn).Fan等[14]利用GPU集群進(jìn)行流體的仿真計(jì)算和可視化,提出了一種新的架構(gòu),通過設(shè)計(jì)雙層的體系結(jié)構(gòu)(粗粒度下操作全局紋理,細(xì)粒度下進(jìn)行單節(jié)點(diǎn)的運(yùn)算)將MPI與分布式共享內(nèi)存(distributed shared memory DSM)有機(jī)地結(jié)合起來,從而大幅提升計(jì)算和繪制的效率.Fogal等[15]基于MPI在分布式的多GPU上進(jìn)行了大規(guī)模數(shù)據(jù)的并行體繪制,通過使用k-D樹對(duì)數(shù)據(jù)進(jìn)行劃分和負(fù)載平衡的優(yōu)化,數(shù)秒內(nèi)便能繪制出千億級(jí)體素的數(shù)據(jù)集.曹軼等[16]基于本地并行機(jī)和分布式圖形工作站,給出了一種混合并行繪制模型.該模型的工作原理是先將源數(shù)據(jù)存留在并行機(jī),然后通過并行機(jī)的多處理器發(fā)布遠(yuǎn)程繪制命令流,進(jìn)而通過操控工作站的圖形硬件完成繪制;后期圖像合成在并行機(jī)上執(zhí)行,以發(fā)揮共享存儲(chǔ)通信優(yōu)勢(shì).但是這些處理方法需要后期執(zhí)行圖像合成的操作,所以系統(tǒng)的內(nèi)存的大小將會(huì)成為處理海量數(shù)據(jù)能力的瓶頸[17].
在海量標(biāo)量場(chǎng)數(shù)據(jù)處理和可視化領(lǐng)域,雖然國內(nèi)外研究者已經(jīng)取得了大量基礎(chǔ)性研究成果[18],但仍然缺乏一個(gè)技術(shù)成熟,目標(biāo)明確,方便可用的海量數(shù)據(jù)處理和可視化系統(tǒng),本文提出了一種基于分布式混合架構(gòu)的海量數(shù)據(jù)處理及可視化系統(tǒng)及與其相適應(yīng)的數(shù)據(jù)處理和可視化方法,由分布式混合架構(gòu)的海量數(shù)據(jù)處理及可視化硬件系統(tǒng)和運(yùn)行此基礎(chǔ)上實(shí)現(xiàn)相應(yīng)數(shù)據(jù)處理和可視化方法的軟件系統(tǒng).
本框架的主要的思想是充分利用現(xiàn)有的計(jì)算資源和硬件加速設(shè)備.同時(shí)為了滿足實(shí)時(shí)交互的需要,使用預(yù)覽體數(shù)據(jù)的結(jié)構(gòu)來提升交互性能.本文所提出的可視化硬件系統(tǒng)包括前端工作站和計(jì)算節(jié)點(diǎn);前端工作站要求性能較高,主要處理實(shí)時(shí)性和交互性要求較高的操作;計(jì)算結(jié)點(diǎn)則可以是各種類型的計(jì)算機(jī)或硬件,可以運(yùn)行各種類型的主流操作系統(tǒng),用于耗時(shí)操作的分布式處理.前端工作站上運(yùn)行的是圖形界面,負(fù)責(zé)渲染顯示,交互操作以及各種計(jì)算任務(wù)的協(xié)調(diào),同時(shí)負(fù)責(zé)將耗時(shí)的計(jì)算任務(wù)分配到各計(jì)算結(jié)點(diǎn)執(zhí)行;計(jì)算結(jié)點(diǎn)上運(yùn)行的是一個(gè)后臺(tái)計(jì)算服務(wù)程序,監(jiān)聽從前端工作站發(fā)送過來的計(jì)算指令并調(diào)用相應(yīng)的計(jì)算模塊執(zhí)行計(jì)算任務(wù).系統(tǒng)框架通過前端工作站和計(jì)算結(jié)點(diǎn)的協(xié)同工作可以處理海量數(shù)據(jù).系統(tǒng)的總體框架結(jié)構(gòu)如圖1所示:
從上述圖1中可以看出,多種硬件環(huán)境和技術(shù)整合在系統(tǒng)框架中來完成對(duì)于海量數(shù)據(jù)的三維交互操作;所有的體數(shù)據(jù)都存儲(chǔ)在數(shù)據(jù)存儲(chǔ)中心,通過高速網(wǎng)絡(luò)環(huán)境進(jìn)行共享.需要實(shí)時(shí)顯示的交互操作由硬件加速和并行計(jì)算算法運(yùn)行在前端工作站.同時(shí)前端工作站也可以自適應(yīng)地選擇合適的數(shù)據(jù)尺寸進(jìn)行處理.耗時(shí)的計(jì)算任務(wù)通過高速網(wǎng)絡(luò)分配到各個(gè)計(jì)算結(jié)點(diǎn)進(jìn)行計(jì)算.使用OpenCL和OpenMP實(shí)現(xiàn)了體繪制算法在GPU 和CPU上的并行處理來加速繪制速度,同時(shí)使用了層次的體數(shù)據(jù)結(jié)構(gòu)使交互級(jí)別達(dá)到實(shí)時(shí)的效果;核外算法應(yīng)用在本框架中來處理海量的數(shù)據(jù).體數(shù)據(jù)首先通過前端工作站從數(shù)據(jù)共享中心加載,在加載的過程中將會(huì)根據(jù)初始體數(shù)據(jù)的大小來產(chǎn)生預(yù)覽體數(shù)據(jù)和分級(jí)體數(shù)據(jù),這樣可以提升交互的響應(yīng)性能.如果初始體數(shù)據(jù)大于預(yù)設(shè)的閾值,該計(jì)算任務(wù)將會(huì)分配到相應(yīng)的計(jì)算結(jié)點(diǎn)進(jìn)行計(jì)算,當(dāng)計(jì)算任務(wù)完成后,結(jié)果將會(huì)存放到共享數(shù)據(jù)中心并通知前端工作站進(jìn)行顯示.
3.1分級(jí)體數(shù)據(jù)
當(dāng)處理海量數(shù)據(jù)時(shí),耗時(shí)的加載過程將會(huì)影響系統(tǒng)的總體性能.本文提出的框架采用分級(jí)的體數(shù)據(jù)結(jié)構(gòu)解決這個(gè)問題,如圖2所示.
當(dāng)開始加載數(shù)據(jù)時(shí),系統(tǒng)首先產(chǎn)生一個(gè)預(yù)覽體數(shù)據(jù),這樣使用者就可以在第一時(shí)間觀測(cè)到所加載的體數(shù)據(jù);第二步是根據(jù)加載數(shù)據(jù)的大小產(chǎn)生分級(jí)的體數(shù)據(jù),如果產(chǎn)生的下一級(jí)體數(shù)據(jù)大于預(yù)設(shè)的閾值,將會(huì)按照?qǐng)D2繼續(xù)分割,最后產(chǎn)生的體數(shù)據(jù)將會(huì)存放在一個(gè)列表中.在這一部分,我們?cè)O(shè)計(jì)并實(shí)現(xiàn)了一個(gè)類來縮放相關(guān)的分級(jí)體數(shù)據(jù),這個(gè)類的輸入和輸出都是一個(gè)體數(shù)據(jù),可以自適應(yīng)的來尋找要顯示的體數(shù)據(jù).本系統(tǒng)中最小的預(yù)覽體數(shù)據(jù)是32 MB,這一閾值的確定與前端工作站的硬件性能有關(guān),其基本要求是數(shù)據(jù)量等于這一閾值的數(shù)據(jù)做體繪制渲染時(shí)渲染速度至少要達(dá)到15幀/秒以上,以滿足交互操作的需求.這一預(yù)處理過程可以作為數(shù)據(jù)加載的一部分,由計(jì)算節(jié)點(diǎn)完成,處理完成后多級(jí)標(biāo)量場(chǎng)數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)存儲(chǔ)中心備用.
3.2GPU加速
目前,圖形處理器的計(jì)算能力越來越強(qiáng)大,速度也越來越快,極大地提高了計(jì)算機(jī)圖形處理的速度和圖像質(zhì)量,為可視化工作提供了很好的基礎(chǔ).
本框架利用圖形硬件自帶的三線性插值功能來完成光線投射算法中耗時(shí)的采樣、插值過程,并將繁瑣的合成運(yùn)算轉(zhuǎn)移到GPU上進(jìn)行.實(shí)現(xiàn)的基本流程圖如圖3所示:
計(jì)算光線進(jìn)入數(shù)據(jù)場(chǎng)的點(diǎn):將顏色立方體的前表面繪制到一幅2D紋理上,此時(shí)由紋理像素的RGB值所組成的三元數(shù)組即為當(dāng)前視線與由三維數(shù)據(jù)場(chǎng)映射成的3D紋理的第一個(gè)交點(diǎn)的坐標(biāo),即光線的進(jìn)入數(shù)據(jù)場(chǎng)的點(diǎn)的坐標(biāo).
計(jì)算光線離開數(shù)據(jù)場(chǎng)的點(diǎn):將顏色立方體的后表面繪制到一幅2D紋理上.將這幅紋理和前表面紋理逐像素相減,就可以得到光線在數(shù)據(jù)場(chǎng)中行進(jìn)的距離,設(shè)定合適的采樣步長對(duì)數(shù)據(jù)場(chǎng)進(jìn)行遍歷.
將體數(shù)據(jù)作為3D紋理載入顯存:使用基于GPU的光線投射算法需要在進(jìn)行繪制之前將數(shù)據(jù)載入到顯存中,所以在這一步進(jìn)行時(shí)首先要確定對(duì)體數(shù)據(jù)進(jìn)行插值前分類還是插值后分類,因?yàn)橹挥写_定分類方法,才能確定將體數(shù)據(jù)以何種形式映射到顯存中.采用插值前分類方法,不僅需要4倍的存儲(chǔ)空間(R,G,B,A四個(gè)通道,即體數(shù)據(jù)大小×4),而且由于采樣時(shí)的插值對(duì)象不再是原始數(shù)據(jù),會(huì)降低圖像的質(zhì)量,而采用插值后分類方法,直接將體數(shù)據(jù)作為3D紋理載入到顯存中,就不會(huì)出現(xiàn)上述情況.
將傳遞函數(shù)表作為2D紋理載入顯存:將傳遞函數(shù)存儲(chǔ)為2D紋理是為了快速地將從數(shù)據(jù)場(chǎng)中獲得的體素值轉(zhuǎn)化為相應(yīng)的灰度和不透明度值.
頂點(diǎn)著色器主要用來對(duì)圖形的頂點(diǎn)數(shù)據(jù)信息進(jìn)行坐標(biāo)變換,即通過世界變換、取景變換以及投影變換等一系列變換將一個(gè)頂點(diǎn)由局部坐標(biāo)系變換到齊次裁剪坐標(biāo)系中.在本程序頂點(diǎn)變換的過程中,為了保持著色器輸出的紋理坐標(biāo)與先前生成的顏色立方體的前后表面的紋理坐標(biāo)相一致,需對(duì)輸出的紋理坐標(biāo)做如下操作:
式中Out.TexCoor.x和Out.TexCoor.y是由頂點(diǎn)著色器輸出的紋理坐標(biāo),Out.Pos.x和Out.Pos.y為由頂點(diǎn)著色器輸出的頂點(diǎn)坐標(biāo).
像素著色程序的編寫:這一部分是該程序的核心部分,光線投射算法中采樣、插值、分類、合成運(yùn)算以及對(duì)體元的光照渲染全在這部分程序中實(shí)現(xiàn).首先通過對(duì)寫入前表面信息的紋理的訪問來求出光線在三維數(shù)據(jù)場(chǎng)中的入射點(diǎn)位置,然后通過對(duì)存有后表面信息的紋理的訪問來計(jì)算光線離開數(shù)據(jù)場(chǎng)時(shí)的點(diǎn)的坐標(biāo),接著給定一個(gè)采樣步長來對(duì)數(shù)據(jù)場(chǎng)進(jìn)行采樣,通過依賴紋理提取獲取采樣點(diǎn)的RGBA值,最后采用由前往后的圖像合成方法對(duì)得到的采樣點(diǎn)的RGB值進(jìn)行混合.為了在重建出的三維物體中更加突出地顯示不同物質(zhì)之間的邊界面,可以對(duì)其進(jìn)行明暗計(jì)算,本文采用Phong[19]光照模型.
3.3核外算法
一般將海量的數(shù)據(jù)以致于無法完全加載到內(nèi)存的數(shù)據(jù)稱為Out-of-Core數(shù)據(jù),將處理這類數(shù)據(jù)的算法稱為Out-of-Core算法.在具體的實(shí)現(xiàn)中,計(jì)算框架的設(shè)計(jì)采用了如圖4所示的數(shù)據(jù)流模型[20].
在該數(shù)據(jù)流模型中,數(shù)據(jù)處理是核心,數(shù)據(jù)和算法分立于不同的抽象模塊中.?dāng)?shù)據(jù)和算法都由對(duì)象來表示,數(shù)據(jù)被抽象為Data類,處理數(shù)據(jù)的算法被抽象為Filter類,每一個(gè)Filter接受一組輸入數(shù)據(jù),經(jīng)過處理產(chǎn)生一組輸出數(shù)據(jù),這樣的一組Filter連接成一個(gè)流水線,構(gòu)成統(tǒng)一的計(jì)算框架.為了能夠以統(tǒng)一的方式處理海量數(shù)據(jù),每個(gè)Data對(duì)象都可以帶一個(gè)磁盤緩沖,而Data類則封裝了內(nèi)外存數(shù)據(jù)交換的操作細(xì)節(jié),對(duì)外提供了統(tǒng)一的訪問接口.
我們先前的工作為Out-of-core數(shù)據(jù)設(shè)計(jì)了一套統(tǒng)一的訪問接口[21],可以進(jìn)行快速的數(shù)據(jù)交換,以塊為單位存儲(chǔ)當(dāng)前正在處理的數(shù)據(jù),同時(shí)維護(hù)了4個(gè)列表來管理整個(gè)緩沖區(qū)如圖5所示:
Block List:一個(gè)線性列表,存儲(chǔ)分塊后原始數(shù)據(jù)的每一子數(shù)據(jù)塊所用內(nèi)存緩沖區(qū)的首地址,用于對(duì)子數(shù)據(jù)塊的快速訪問(可能為空,表示該子數(shù)據(jù)塊尚未導(dǎo)入內(nèi)存緩沖區(qū)) ; Empty Buffer Block List:一個(gè)環(huán)形隊(duì)列,保存當(dāng)前空閑緩沖區(qū)塊的指針,這些空閑塊可用于緩沖新的子數(shù)據(jù)塊; Occupied Buffer Block List:一個(gè)優(yōu)先隊(duì)列,維護(hù)當(dāng)前被占用的緩沖區(qū)塊,同時(shí)決定當(dāng)緩沖區(qū)滿的時(shí)候哪一個(gè)緩沖區(qū)塊的數(shù)據(jù)最優(yōu)先被兌換回磁盤; Buffer Block Nodes List:一個(gè)線性列表,存儲(chǔ)每個(gè)緩沖區(qū)塊的相關(guān)參數(shù)和狀態(tài)信息.
獲取一個(gè)子數(shù)據(jù)塊的基本操作按算法1步驟進(jìn)行:
算法1
步驟1:檢查Block List,如果該Block內(nèi)存首地址非空,則轉(zhuǎn)步驟5;
步驟2:從Empty Buffer Block List取得一個(gè)空閑緩沖區(qū)塊,若成功則轉(zhuǎn)步驟4;
步驟3:取得Occupied Buffer Block List的頭元素,其所指向緩沖區(qū)塊中的數(shù)據(jù)若有改動(dòng)的話寫回磁盤,將該緩沖區(qū)塊歸還入Empty Buffer Block List,然后轉(zhuǎn)步驟2;
步驟4:將所需Block數(shù)據(jù)從磁盤導(dǎo)入所找到的空閑緩沖區(qū)塊;
步驟5:更新Occupied Buffer Block List和相關(guān)緩沖區(qū)塊的狀態(tài)信息;
步驟6:返回存儲(chǔ)Block數(shù)據(jù)的內(nèi)存首地址或?qū)lock數(shù)據(jù)拷貝入指定地址的內(nèi)存區(qū).
3.4前端工作站和計(jì)算結(jié)點(diǎn)的協(xié)作
本文提出的框架在加載海量數(shù)據(jù)的過程中,包括數(shù)據(jù)加載和處理環(huán)節(jié).可視化的軟件系統(tǒng)運(yùn)行在前端工作站上,包含圖形用戶界面,在計(jì)算節(jié)點(diǎn)必要的配合下,完成數(shù)據(jù)加載、數(shù)據(jù)處理、可視化和交互操作等工作.?dāng)?shù)據(jù)加載的步驟包含以下算法2流程:
算法2
步驟1:計(jì)算待加載數(shù)據(jù)的數(shù)據(jù)量;
步驟2:若待加載數(shù)據(jù)的數(shù)據(jù)量超過預(yù)先給定的閾值(是海量數(shù)據(jù))則轉(zhuǎn)步驟3,否則直接將數(shù)據(jù)加載到前端工作站內(nèi)存并轉(zhuǎn)步驟6;
步驟3:遍歷計(jì)算節(jié)點(diǎn)列表,查找可用計(jì)算節(jié)點(diǎn),與可用計(jì)算節(jié)點(diǎn)建立TCP連接,將數(shù)據(jù)加載任務(wù)(包括待加載數(shù)據(jù)的名稱、存儲(chǔ)位置、加載參數(shù)等信息)傳送到可用計(jì)算節(jié)點(diǎn);
步驟4:監(jiān)聽已建立連接的計(jì)算節(jié)點(diǎn)發(fā)回的狀態(tài)信息;
步驟5:若計(jì)算節(jié)點(diǎn)返回錯(cuò)誤信息,則直接轉(zhuǎn)步驟6;若計(jì)算節(jié)點(diǎn)發(fā)回任務(wù)完成信息,則根據(jù)計(jì)算節(jié)點(diǎn)發(fā)回的加載(預(yù)處理)后的數(shù)據(jù)存儲(chǔ)位置到數(shù)據(jù)存儲(chǔ)中心讀取相應(yīng)數(shù)據(jù)并轉(zhuǎn)步驟6,否則轉(zhuǎn)步驟4;
步驟6:結(jié)束數(shù)據(jù)加載過程并顯示加載結(jié)果.
本文提出的框架針對(duì)標(biāo)量場(chǎng)數(shù)據(jù)處理(如降噪、平滑、銳化等)分別實(shí)現(xiàn)其對(duì)應(yīng)的內(nèi)存算法和外存算法,內(nèi)存算法運(yùn)行在前端工作站上,用于處理普通規(guī)模的數(shù)據(jù),外存算法運(yùn)行在各計(jì)算節(jié)點(diǎn)上,用于處理海量數(shù)據(jù).基于這些基本算法,數(shù)據(jù)處理方法包括算法3步驟:
算法3
步驟1:計(jì)算待加載數(shù)據(jù)的數(shù)據(jù)量;
步驟2:若待加載數(shù)據(jù)的數(shù)據(jù)量超過預(yù)先給定的閾值(是海量數(shù)據(jù))則轉(zhuǎn)步驟3,否則直接在前端工作站執(zhí)行相應(yīng)內(nèi)存算法對(duì)數(shù)據(jù)進(jìn)行處理并轉(zhuǎn)步驟6;
步驟3:遍歷計(jì)算節(jié)點(diǎn)列表,查找可用計(jì)算節(jié)點(diǎn),與可用計(jì)算節(jié)點(diǎn)建立TCP連接,將數(shù)據(jù)處理任務(wù)(包括待處理數(shù)據(jù)的名稱、存儲(chǔ)位置、數(shù)據(jù)處理命令及參數(shù)等信息)傳送到可用計(jì)算節(jié)點(diǎn);
步驟4:監(jiān)聽已建立連接的計(jì)算節(jié)點(diǎn)發(fā)回的狀態(tài)信息;
步驟5:若計(jì)算節(jié)點(diǎn)返回錯(cuò)誤信息,則直接轉(zhuǎn)步驟6;若計(jì)算節(jié)點(diǎn)發(fā)回任務(wù)完成信息,則根據(jù)計(jì)算節(jié)點(diǎn)發(fā)回的處理后的數(shù)據(jù)存儲(chǔ)位置到數(shù)據(jù)存儲(chǔ)中心讀取相應(yīng)數(shù)據(jù)并轉(zhuǎn)步驟6,否則轉(zhuǎn)步驟4;
步驟6:結(jié)束數(shù)據(jù)處理過程并顯示處理結(jié)果.
計(jì)算節(jié)點(diǎn)軟件運(yùn)行在各計(jì)算節(jié)點(diǎn)上,以守護(hù)進(jìn)程的方式運(yùn)行,監(jiān)聽特定端口,檢測(cè)到有計(jì)算任務(wù)發(fā)來,則根據(jù)任務(wù)信息啟動(dòng)相應(yīng)的外存算法對(duì)數(shù)據(jù)進(jìn)行處理,并將計(jì)算狀態(tài)信息(如進(jìn)度信息、出錯(cuò)信息、結(jié)束信息等)返回給前端工作站.由于計(jì)算節(jié)點(diǎn)軟件只負(fù)責(zé)進(jìn)行比較耗時(shí)的數(shù)據(jù)處理任務(wù),沒有顯示和交互的需求,因此其軟件結(jié)構(gòu)和數(shù)據(jù)處理流程較為簡單,可以部署在各種不同的硬件平臺(tái)和操作系統(tǒng)上,也可以很方便地將已有的數(shù)據(jù)處理外存算法集成到計(jì)算節(jié)點(diǎn)軟件中,不斷豐富整個(gè)系統(tǒng)的數(shù)據(jù)處理功能.此外,由于計(jì)算節(jié)點(diǎn)和前端工作站之間只存在比較簡單的任務(wù)發(fā)布和狀態(tài)回傳的通信,計(jì)算節(jié)點(diǎn)故障不會(huì)影響前端工作站軟件的運(yùn)行,更不會(huì)引起整個(gè)系統(tǒng)的崩潰,因此整個(gè)系統(tǒng)的穩(wěn)定性和可靠性得到了有效的保障.
本系統(tǒng)采用C ++語言實(shí)現(xiàn)前端工作站的GUI和計(jì)算結(jié)點(diǎn)上的后臺(tái)服務(wù)程序,同時(shí)結(jié)合OpenCL和OpenMP實(shí)現(xiàn)了可視化算法在GPU和CPU的并行處理.實(shí)驗(yàn)中前端工作站的具體配置: CPU: Core2 2.5GHz,內(nèi)存: 4GB,64位操作系統(tǒng),顯卡: NVIDIA NVS5400,顯存: 1GB;計(jì)算節(jié)點(diǎn)使用的是浪潮服務(wù)器,具體配置: CPU: Xeon E5-2407 2.2GHz,內(nèi)存:8G DDR3,硬盤容量:1TB.實(shí)驗(yàn)中所使用的超聲數(shù)據(jù)的從10MB到25GB.
圖6所示是不同大小的體數(shù)據(jù)在本系統(tǒng)處理后的效果,本系統(tǒng)在上述的實(shí)驗(yàn)環(huán)境下能夠處理的超聲數(shù)據(jù)可以達(dá)到25GB.
上圖展示了本系統(tǒng)處理海量超聲數(shù)據(jù)的能力,該框架不僅可以應(yīng)用在無損檢測(cè)領(lǐng)域,也可以擴(kuò)展到醫(yī)學(xué)數(shù)據(jù)三維可視化方面和氣象數(shù)據(jù)三維可視化方面.
數(shù)據(jù)加載過程所耗費(fèi)的時(shí)間是影響一個(gè)系統(tǒng)實(shí)時(shí)交互處理能力的主要因素.圖7展示了在加載不同大小超聲體數(shù)據(jù)過程中所消耗的時(shí)間.
從圖7可以看出當(dāng)加載的體數(shù)據(jù)小于500MB時(shí),加載所耗的時(shí)間可以看成是瞬時(shí)的.當(dāng)加載的體數(shù)據(jù)大于1GB小于10GB時(shí),加載體數(shù)據(jù)所耗的時(shí)間也是可以接受的.當(dāng)體數(shù)據(jù)的大小增長到25GB時(shí),所耗的時(shí)間較長;考慮到前端工作站可以同時(shí)分配多個(gè)計(jì)算任務(wù)到計(jì)算結(jié)點(diǎn),這樣可以減緩等待的時(shí)間.為了提高系統(tǒng)加載體數(shù)據(jù)所耗的時(shí)間,本系統(tǒng)采用在原體數(shù)據(jù)第一次加載過程中產(chǎn)生的out-of-core緩存數(shù)據(jù),這樣以后每次加載時(shí)所需的時(shí)間將大大減少.如圖8所示,從圖中可以看出,數(shù)據(jù)加載所需的時(shí)間明顯得到了提升.即使25GB大小的體數(shù)據(jù)加載時(shí)間也在可以接受的范圍,考慮到系統(tǒng)可以同時(shí)處理多個(gè)任務(wù),這樣可以抵消等待時(shí)間,使得加載的時(shí)間可以達(dá)到實(shí)時(shí)的效果.
從上述可以得出,本文提出的處理框架具有在處理海量數(shù)據(jù)的能力,同時(shí)前端工作站具有高配置的顯卡和內(nèi)存,使得系統(tǒng)的交互性能也能夠達(dá)到實(shí)時(shí)的效果.
目前大多數(shù)的體可視化系統(tǒng),主要集中于跨平臺(tái),可擴(kuò)展和交互性等方面開發(fā),如Volvis,3Ddoctor和Microview.當(dāng)數(shù)據(jù)大于內(nèi)存容量時(shí),這些系統(tǒng)將無法進(jìn)行加載.ParaView是與本文所提框架設(shè)計(jì)目標(biāo)很相似的軟件;與這些系統(tǒng)在加載數(shù)據(jù)方面的比較如表1所示.
表1 系統(tǒng)加載時(shí)間對(duì)比
從表1可以看出,當(dāng)數(shù)據(jù)大于系統(tǒng)內(nèi)存時(shí),3Ddoctor,VolVis和Microview都不能加載數(shù)據(jù);而Para-View雖然在數(shù)據(jù)處理能力上和我們的系統(tǒng)較為接近,但由于其采用分布式存儲(chǔ)和計(jì)算的模式,基于MPI實(shí)現(xiàn)計(jì)算節(jié)點(diǎn)之間的協(xié)同工作,導(dǎo)致計(jì)算節(jié)點(diǎn)配置復(fù)雜,對(duì)計(jì)算節(jié)點(diǎn)本身以及網(wǎng)絡(luò)傳輸?shù)目煽啃砸筝^高,不利于構(gòu)建穩(wěn)定可靠的分布式海量數(shù)據(jù)處理和可視化系統(tǒng).
本文提出了一種混合了GPU加速、核外算法、和分布式協(xié)同等技術(shù)處理海量體數(shù)據(jù)的框架,具有可擴(kuò)展性強(qiáng),節(jié)點(diǎn)配置簡易和數(shù)據(jù)傳輸量小等優(yōu)點(diǎn).從實(shí)驗(yàn)結(jié)果上可以看出,本架構(gòu)在處理海量數(shù)據(jù)時(shí)可以達(dá)到實(shí)時(shí)的交互效果.同時(shí)本框架還有很多可以改進(jìn)的地方,如可以采用一種更有效的數(shù)據(jù)結(jié)構(gòu)來組織體數(shù)據(jù),將核外算法應(yīng)用到GPU加速階段,使并行處理的能力擴(kuò)展到計(jì)算結(jié)點(diǎn)間等等.
參考文獻(xiàn)
[1]王綱,季振洲,張澤旭.大規(guī)模真實(shí)感雪景實(shí)時(shí)渲染[J].電子學(xué)報(bào),2012,40(9) : 1746-1751.Wang Gang,Ji Zhen-zhou,Zhang Ze-xu.Large scale realistic snow scene real-time rendering[J].Acta Electronica Sinica,2012,40(9) : 1746-1751.(in Chinese)
[2]Levoy M.Display of surfaces from volume data[J].IEEE Computer Graphics and Applications,1988,8(3) : 29-37
[3]Kniss J,Kindlmann G,Hansen C.Interactive volume rendering using multi-dimensional transfer functions and direct manipulation widgets[A].Proceedings of the Conference on Visualization[C].Washington C: IEEE Computer Society,2001.255-262
[4]儲(chǔ)駿,楊新,高艷.使用GPU編程的光線投射體繪制算法[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2007,19(2) : 257 -262 Chu Jingjun,Yang Xin,Gao Yan.Ray-casting-based volume rendering algorithm using GPU programming[J],Journal of Computer-aid Design&Computer Graphics,2007,19(2) : 257-262.(in Chinese)
[5]張慧滔,于平,胡修炎,張朋.利用GPU實(shí)現(xiàn)單層螺旋CT的三維圖像重建[J].電子學(xué)報(bào),2011,39(1) : 76-81.Zhang Hui-tao,Yu Ping,Hu Xiu-yan,Zhang Peng.Singlesclice helical CT three-dimensional image reconstruction using GPU[J],Acta Electronica Sinica,2011,39(1) : 76-81.(in Chinese)
[6]袁斌.改進(jìn)的均勻數(shù)據(jù)場(chǎng)GPU光線投射[J].中國圖象圖形學(xué)報(bào),2011,16(7) : 1269-1275.Yuan Bin.Improved GPU ray-casting for uniform grid[J].Journal of Image and Graphics,2011,16(7) : 1269-1275.(in Chinese)
[7]楊金柱,趙大哲,栗偉,耿歡,王艷飛.基于GPU的體繪制算法研究[J].電子學(xué)報(bào),2010,38(2) : 202-206.Yang Jin-zhu,Zhao Da-zhe,The research volume renderingalgorithm based on GPU[J].Acta Electronica Sinica,2010,38(2) : 202-206.(in Chinese)
[8]Wang C,Garcia A,Shen H W.Interactive level-of-detail selection using image-based quality metric for large volume visualization[J].IEEE Transactions on Visualization and Computer Graphics,2007,13(1) : 122-134.
[9]Lindstrom P,Isenburg M.Fast and efficient compression of floating point data[J].IEEE Transactions on Visualization and Computer Graphics,2006,12(5) : 1245-1250
[10]Farias R,Silva C.Out-of-Core rendering of large,unstructured grids[J].IEEE Computer Graphics and Applications,2001,21(4) : 42-50.
[11]Gobbetti E,Marton F,Iglesias Guitian J A.A single-pass GPU ray casting framework for interactive out-of-core rendering of massive volumetric datasets[J].Visual Computing,2008,24(7) : 797-806.
[12]Meng Wang,Guangda Li,Zheng Lu,Yue Gao,Tat-Seng Chua.When amazon meets google: product visualization by exploring multiple web sources[J].ACM Transactions on Internet Technology,2013,12(12) : 1-17.
[13]Meng Wang,Bingbing Ni,Xian-Sheng Hua,Tat-Seng Chua.Assistive tagging: a survey of multimedia tagging with human-computer joint exploration[J].Journal of ACM Computing Surveys,2012,44(25) : 1-24.
[14]Fan Z,Qiu F,Kaufman A E.Zippy: A framework for computation and visualization on a GPU cluster[J].Computer Graphics Forum,2008,27(2) : 341-350.
[15]Fogal T,Childs H,Shankar S,et al.Large data visualization on distributed memory multi-GPU clusters[A].Proceedings of the Conference on High Performance Graphics [C].Aire-laVille: Euro graphics Association,2010: 57 -66.
[16]曹軼,莫?jiǎng)t堯,王弘堃,袁斌.協(xié)同分布式圖形硬件的混合并行體繪制[J].中國圖象圖形學(xué)報(bào),2008,13(7) : 1379-1384.Cao Yi,Mo Ze-Yao,Wang Hong-Kun,Yuan Bin.Hybrid parallel volume rendering with distributed graphics hardware[J].Journal of Image and Graphics,2008,13(7) : 1379-1384.(in Chinese)
[17]趙云松,張慧滔,趙星,張朋.雙能譜CT的迭代重建模型及重建方法[J].電子學(xué)報(bào),2014,42(4) : 666-671.Zhao Yun-song,Zhang Hui-tao,Zhao Xing,Zhang Peng.Iterative reconstruction model and reconstruction method for dual energy computed tomography[J].Acta Electronica Sinica,2014,42(4) : 666-671.(in Chinese)
[18]錢正蓮,楊亦春,滕鵬曉,韓寶坤,王昌田.陣列可視化噪聲源檢測(cè)中的聲-光偏離校準(zhǔn)方法研究[J].電子學(xué)報(bào),2014,42(10) : 2092-2097.Qian Zheng-lian,Yang Yi-chun,Teng Peng-xiao,Han Bao-kun,Wang Chang-tian.Study of calibration method of acoustic&video image deviation in microphone array's visualized noise identification[J].Acta Electronica Sinica,2014,42(10) : 2092-2097.(in Chinese)
[19]Phong B T.Illumination for computer generated pictures [J].Communications of the ACM,1975,18 (6) : 311 -317.
[20]Zhao MC,Tian J,Zhu X,Xue J,Cheng ZL,Zhao H.The design and implementation of a C ++ toolkit for integrated medical image processing and analyzing[A].Proc of SPIE[C].San Diego: Int’l Society for Optical Engineering,2004.39-47
[21]薛健,田捷,戴亞康,陳?。A酷t(yī)學(xué)數(shù)據(jù)處理框架及快速體繪制算法研究[J].軟件學(xué)報(bào),2008,19(12) : 3237 -3248.Xue Jian,Tian Jie,Dai Ya-Kang,Chen Jian.Processing framework and the fast volume rendering algorithms for out-of-core medical data[J].Journal of Software,2008,19 (12) : 3237-3248.(in Chinese)
潘衛(wèi)國男,1984年生于河北邯鄲,中國科學(xué)院大學(xué)在讀博士生.研究方向?yàn)槿S可視化,計(jì)算機(jī)圖形學(xué).
E-mail: asherbuu@163.com
呂科(通信作者)男,1971出生于寧夏西吉,教授,博士生導(dǎo)師,主要研究方向?yàn)閿?shù)字圖像處理、計(jì)算機(jī)圖形學(xué)、智能信息處理技術(shù).
E-mail: luk@ ucas.a(chǎn)c.cn
Research of Large Ultrasonic Data Visualization
PAN Wei-guo1,HE Ning2,XUE Jian1,LüKe1,ZHAI Rui1,DAI Shuang-feng1
(1.College of Engineering and Information Technology,University of Chinese Academy of Sciences,Beijing 100049,China; 2.Beijing Union University,College of Information Technology,Beijing 100101,China)
Abstract:In recent years,with the rapid growth of scientific data,large data analysis has become urgent problems.More and more large-data processing methods are modified to perform computation under parallel and distributed computing environment.In this paper,we present a hybrid architecture for large volume data visualization and processing.Various hardware environments and technologies are integrated in this architecture to perform interactive operations on very large volume datasets.All the datasets are stored in a data center with a gigabit network environment.The time-consuming data processing tasks are dispatched to the computing nodes connected to the same network,while the visualization and interaction operations are executed on a high-performance graphics workstation.OpenCL and OpenMP are used to implement volume rendering algorithms for accelerating visualization of a hierarchical volume data structure by both GPU and CPU with multi-cores,and some out-of-core algorithms are also presented to process the large dataset directly.The experimental results and practical application indicate that the hybrid architecture and methods presented in this paper are effective and efficient for the processing and visualization of very large volume datasets.
Key words:volume rendering; graphics processing unit(GPU) ; out-of-core; parallel computing; large data
作者簡介
基金項(xiàng)目:國家自然科學(xué)基金(No.U1301251,No.61271435) ;北京市自然科學(xué)基金(No.4141003)
收稿日期:2014-06-19;修回日期: 2015-03-02;責(zé)任編輯:諸葉梅
DOI:電子學(xué)報(bào)URL: http: / /www.ejournal.org.cn10.3969/j.issn.0372-2112.2016.02.031
中圖分類號(hào):TP31
文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):0372-2112 (2016) 02-0472-07